编程语言分类详解

编程语言也称为“计算机语言”,它用一系列的程序指令去告诉计算机去做什么。当然,这些指令并不是随意编写,需要遵守编程语言的规则。

自从 1946 第一台计算机 “ENAC” 诞生以来,计算机语言经历了蓬勃的发展。据不完全统计,目前的编程语言已达到 2500 多种类,如此种类繁多的语言,让我们眼花缭乱。因此,我们不可能学习所有的编程语言,这简直就是“痴人说梦”,但是了解编程语言的分类,还是非常有必要的,这将有助于更深次的理解“编程语言”。

机器语言与汇编语言

世界上第一台计算机诞生时,编程语言的概念还不存在,因此“ENAC”只能使用了较为低级的“机器语言”。我们知道计算机是由一系列的硬件组成的,比如 CPU、显卡、存储硬盘,以及一些外接设备等等,这其中最为关键的就是 CPU (中央处理器,central processing unit,简称 CPU) 。

CPU 是计算机系统的运算和控制核心,负责读取指令,对指令译码并执行指令。就好比人的大脑一样,负责发人体的行为控制一样。不过计算机中的 CPU 是个“文盲”,它只认识“0”和“1”,因此计算机只能用二进制的方式来表示不同的数字。

1) 机器语言

因此,用二进制代码 0 和 1 描述的指令称为机器指令,全部机器指令的集合构成计算机的“机器语言”,用“机器语言”编程的程序称为目标程序。由于这种编程方法比较古老,并且难以记忆,因此也称它为“低级语言”。

下图是一张穿孔卡,这是最早的计算机输入信息设备。通过有孔与无孔来表达“0”和“1”。

图片[1]|编程语言分类详解
编程语言分类

2) 汇编语言

自从第一台计算机问世以来,如何和计算机更好的交流成为了广大计算机工程师的研究方向。随着时间的推移,终于诞生了第二代计算机语言,也就是“汇编语言”也称为“符号语言”。

二十世纪五十年代汇编语言问世,它借助简单、容易理解的字母、单词来代替一个特定的指定,比如:用“ADD”代表数字逻辑上的加减,“ MOV”代表数据传递等。相比机器语言而言,人们更容易阅读程序、理解程序,但是际上汇编语言仍然以晦涩难懂而闻名于世。

下面看一个简单的例子,现在有两个整数 X、Y,要对它们进行如下运算:

X = ( Y + 2 ) * 3

使用编译语言编写的程序如下所示:

mov eax,Y   
add eax,2      
mov ebx,3    
imul ebx        
mov x,eax   

上述代码的每一行都对应一条指令,其含义如下所示:

Y送入 EAX 寄存器
EAX 寄存器内容加 2
3 送入 EBX 寄存器
EAX 与 EBX 相乘
EAX 的值送入 X

汇编语言本质上也属于一种较为较为低级的语言。每一句指令只能对应实际操作过程中的一个很细微的动作,因此编码过程较为复杂、并且代码冗长。不过作为一种诞生较早的语言来说,相比直接使用机器语言编码,已经有了很大幅度的进步了。

从二十世纪五十年代末至今,编程语言得到了“质”的发展,终于迎来了第三代编程语言“高级语言”。所谓“高级语言”是相较于低级语言来说的,我们所熟知的能叫的出名字的语言基本上都属于“高级语言”,比如 FORTRAN、Lisp、C 、C++、C#、Java、Python、R、GO、Ruby等等,高级语言的诞生是一代又一代研发者努力的结果,它是一种接近于人们使用习惯的程序设计语言,对人类更加友好,它允许用指定格式单词、数字、英文来书写程序,程序中的符号和算式也与数学公式相差无几。

编译型&解释型

因为高级语言是“面向人类”的语言,因此它编制的程序不能直接被计算机识别,必须经过转换才能被计算机所执行。按照不同的转换方式可将高级语言分成两类:编译型语言和解释型语言。

从运行的角度来看,编译型和解释型之间的分水岭是程序代码在被执行之前是否需要被编译,需要别编译的,就是编译型语言(Compiled Language),否则就是解释型语言( Interpreted Language)。

1) 编译型语言

所谓编译语言指的是代码本身不能运行,需要通过附加程序(基编译器)将其转换成由机器码(机器语言:二进制码,又称机器码)组成的可执行文件,然后才能被运行,我们所熟知的 C/C++、VB、Pascal、GO,以及最近很火的苹果语言 Swify 等,这些都属于编译型语言。

2) 解释型语言

解释型语言指的是代码可以直接运行的语言。比如 Python、JavaScript、Shell、PHP、Ruby 等。

解释语性语言不需要编译,这种语言编写的代码在程序运行时才逐行翻译成机器码,每次执行程序都要翻译一次,相比编译语言来说,其执行效率较低。因为编译型语言只需在代码被执行前被编译一次,代码的执行过程中不需要再次编译。

上述两种语言的执行过程,如下图所示:

图片[2]|编程语言分类详解
编译型语言和解释型语言

读完上述内容,你可能会有疑问?为什么没有看见 Java,它属于编译语言,还是高级语言呢?其实 Java 属于半编译半解释型语言,也就是混合型语言。又为什么会出现这种混合型语言呢?另外,“编译型语言和解释型语言,除了它们的执行效率有差距外,还有什么不同呢?其中最关键的就是跨平台性差异,这些知识将在下一节逐一讲解。

© 版权声明
THE END
喜欢就支持一下吧
点赞5赞赏
分享
评论 抢沙发
HarryPotter的头像|艾奇编程网

昵称

取消
昵称表情