上传中,请稍候...
图片发自简书 App
编程是在和计算机交流
编程是编写程序的中文简称,就是让计算机代为解决某个问题,对某个计算体系规定一定的运算方式,是计算体系按照该计算方式运行,并最终得到相应结果的过程.
简单来说,就是通过编写计算机程序来让计算机替我们干活.
提起编程,大部分对编程有点了解的人可能都会想起 Java,PHP,C# 等等编程语言.没错,社会上把从事编程开发工作的人称作程序员,而广大程序员之间也会用自己所使用的编程语言自我标榜,我是 Java 程序员,你是 PHP 程序员,他是 PHP 程序员……
但其实,以上这些都属于高级语言范畴,所谓高级语言是以人类的日常语言为基础的一种编程语言,从而使程序编写员编写更容易,亦有较高的可读性.
有高级语言当然就有低级语言,机器语言就是所谓的低级语言,在高级和低级之间也有一种语言,叫做汇编语言.编程语言可以大致分为三类:机器语言,汇编语言和高级语言.
机器语言
机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合.
机器语言又称二进制语言,因为可读性,可移植性差,编程繁杂这些原因也被称为低级语言.这种语言完全由 0 和 1 构成,可以被 CPU 直接识别.
它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能.机器语言具有灵活,直接执行和速度快等特点.不同型号的计算机其机器语言是不相通的,按着一种计算机的机器指令编制的程序,不能在另一种计算机上执行.
汇编语言
因为机器语言使用上的麻烦与难于记忆,诞生了汇编语言,汇编语言又称符号语言,它机器语言一样面向计算机的硬件系统.
汇编语言比机器语言的强大之处在指令的表诉方法上,汇编语言不使用 0 和 1 而使用便于记忆的书写格式.比如:
操作:寄存器 BX 的内容送到 AX 中
1000100111011000 机器指令
mov ax,bx 汇编指令
使用书写格式编写指令之后,再用特定的编译器编译成机器代码,再由 CPU 直接执行.可以说,汇编语言同时拥有高级语言和机器语言的特性,但都不是那么完善
高级语言
由于汇编语言依赖于硬件体系,且助记符量大难记,于是人们又发明了更加易用的所谓高级语言.
高级语言是以人们日常语言为基础的编程语言,其语法结构简单,远离对硬件的直接操作,使得一般人经过学习后都能掌握编程.
高级语言并不是特指的某一种具体的语言,而是包括很多编程语言,如流行的 java,c,c++,C#,pascal,python,lisp,prolog,FoxPro,易语言,中文版的 C 语言习语言等等,这些语言的语法,命令格式都不相同.
图片发自简书 App
高级语言的分类
可能很多学习编程的人不知道,高级语言之间也是有分类的.
计算机高级语言按程序的执行方式可以分为编译型和解释型两种.
编译型语言
编译型语言是指使用专门的编译器,针对特定平台(操作系统)将某种高级语言源代码一次性 "翻译" 成可被该平台硬件执行的机器码(包括机器指令和操作数),并包装成该平台所能识别的可执行性程序的格式,这个转换过程称为编译(Compile).编译生成的可执行性程序可以脱离开发环境,在特定的平台上独立运行.
编译型语言是一次性地编译成机器码,所以可以脱离开发环境独立运行,而且通常运行效率较高;但因为编译型语言的程序被编译成特定平台上的机器码,因此编译生成的可执行性程序通常无法移植到其他平台上运行;如果需要移植,则必须将源代码复制到特定平台上,针对特定平台进行修改,至少也需要采用特定平台上的编译器重新编译.
这个可以对比一下 Java 语言,Java 语言编写完成后可以打包出来一个后缀名为 jar 的包,这个包必须要电脑上有 JRE 才能正常运行,否则不能运行.所以 Java 的运行就需要特定的环境支持.
说回正题,总体来讲编译型语言运行效率高,但是跨平台麻烦.现有的 C,C++,Pascal 等高级语言都属于编译型语言.
解释型语言
解释型语言是指使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行的语言.解释型语言通常不会进行整体性的编译和链接处理,解释型语言相当于把编译型语言中的编译和解释过程混合到一起同时完成.
每次执行解释型语言的程序都需要进行一次编译,因此解释型语言的程序运行效率通常较低,而且不能脱离解释器独立运行.但解释型语言有一个优势:跨平台比较容易,只需提供特定平台的解释器即可.
现有的 Ruby,Python 等语言都属于解释型语言.
图片发自简书 App
还有一种既需要编译器还需要解释器的混合型语言
Java 就是其中的代表,由 Java 语言编写的程序需要经过编译步骤,但这个编译步骤并不会生成特定平台的机器码,而是生成一种与平台无关的字节码(也就是 *.class 文件).当然,这种字节码不是可执行性的,必须使用 Java 解释器来解释执行.
因此,我们可以认为:Java 语言既是编译型语言,也是解释型语言.或者说,Java 语言既不是纯粹的编译型语言,也不是纯粹的解释型语言.
Java 程序的执行过程必须经过先编译,后解释两个步骤:
Java 编译执行过程
小结
编程语言的基本分类,通过我这篇文章大家应该都了解的很清楚了.
这些知识可能只是让你增加一份谈资,但也可能能给你一个机会,话一出口,别人就知道你是个懂行的人!
软件行业技术高速迭代,正因如此,我们才需要去修好内功,去理解那些底层的几十年也不会变一变的知识.因为所有的新技术,都是建立在这个不变上面的.
我是张彦奇,最近会更一些关于 Java 新手学习的文章,有需要的关注我!
来源: http://www.jianshu.com/p/82c4412fcbdc