关于作者

 一个毕业于北京大学数学力学系,在中国科学院计算所、计算中心和网络中心工作过,在澳大利亚科工组织DMS、香港浸会学院数学系和中国21世纪议程管理中心等处工作过,多次获国家和中科院科技奖并享受政府特殊津贴的退休老头。现在在【中国科普博览】网“科学新语林”栏目里开设一个《数学与计算机》的个人专栏,愿和爱好数学与计算机的各界网友和青少年朋友,谈谈对数学与计算机的看法、想法。

什么是计算机语言?

张建中
2014年04月02日

1、什么是计算机语言?

[caption id="attachment_1037" align="aligncenter" width="220"]计算机语言 计算机语言[/caption]
俗话说,人有人言,兽有兽语。人类的语言,是人与人之间传递信息的媒介,是人类在自身发展的过程中逐渐形成的自然语言。计算机作为一种具有一定计算智能的机器,也应具有一种语言的,以便进行人和计算机之间的信息交流,这就是我们常说的“计算机语言”。所以,计算机语言是人们为了和计算机进行交流而设计的人工语言。
计算机语言(Computer Language),也叫程序设计语言、编程语言(Programming Language),指用于人与计算机之间通讯的语言,是人与计算机之间传递信息的媒介。计算机系统的最大特征是通过指令传达给机器。为了使电子计算机进行各种工作,就需要有一套用以编写计算机程序的数字、字符和语法规则,由这些字符和语法规则组成计算机各种指令或各种语句,由此形成了计算机语言。
计算机每做的一次动作、一个步骤,都是按照已经用计算机语言编好的程序来执行的。程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的计算机语言来编写的。所以,人们要使用计算机、控制计算机,一定要通过计算机语言向计算机发出命令。
计算机语言,从问世到现在已有近六十年的发展史,经历了由机器代码到符号化、由低级到高级、由过程性到非过程性、由面向机器到面向对象的发展。语言本身技术上也从模块化、结构化发展到面向对象,产生了许多新方法、新概念和新技术;应用范围从单机发展到异构的、分布式计算机网络;应用领域也从单纯的科学工程计算发展到包括过程控制、信息处理、事务处理等各个不同的方面。现在可以这么说,计算机是无处不在,无时不在,无事不在,因而计算机语言也是无处不在,无时不在,无事不在。

2. 计算机语言的分类

计算机语言种类繁多,按大类可粗略的分为三种,即机器语言、汇编语言、高级语言。
机器语言 电子计算机使用的是由“0”和“1”组成的二进制数码,二进制是计算机的语言的基础。由于计算机内部只能接受二进制代码,因此,用二进制代码0和1描述的指令称为机器指令,全部机器指令的集合构成计算机的机器语言。用机器语言编的程序称为目标程序,计算机可直接运行,是第一代计算机语言。因此程序就是一个个的二进制文件,一条机器语言成为一条指令,是不可分割的最小功能单元。由于每台计算机的指令系统常常互不相同,所以,在一台计算机上执行的用机器语言编写的程序,通常不能在另一台型号不同的计算机上运行;要想在另一台计算机上执行,必须新编程序,造成了工作重复和资源浪费,且机器语言编写的程序无明显特征,依赖于具体机种,因机而异,难以记忆、不便阅读、很难书写和在编程人员之间进行交流,局限性很大,属于低级语言。但由于使用的是针对特定型号计算机的语言,针对性强,可直接对计算机硬件进行操作,故而运算效率是所有语言中最高的。
汇编语言 为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制符号串,比如,用"ADD"代表加法,"MOV"代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错和维护也更为方便,这种程序设计语言就称为汇编语言,是第二代计算机语言。然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。
汇编语言实质上和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆,但也同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序通常由三部分组成:指令、伪指令和宏指令。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,如移动、自增、代数运算等,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能够实现的,而且源程序经汇编生成的可执行文件不仅比较小,执行速度也较快。汇编语言同样十分依赖于机器硬件,移植性不强,但效率高,针对计算机特定硬件而编制的汇编程序,能准确发挥计算机硬件的功能和特长,程序精练且质量高,所以至今仍是一种常用而强有力的软件开发工具,一些最常用的程序段多用汇编语言研制,以提高机器的使用效率。
高级语言 高级语言是大多数编程者的选择,和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,大大简化了程序中的指令。由于省略了很多细节,编程者也就不需要具有太多高深的计算机专业知识。
这里所说的“高级语言”,是指一种完全用符号编写、独立于具体计算机的编程语言。和机器语言、汇编语言等低级语言相比,由于它们更便于人们理解、记忆和使用,故称其为高级语言。
用高级语言编程,一般人都能很快学会使用计算机,并且完全可以不必了解具体的机器指令,也可以不懂计算机的内部结构和工作原理,就能编写出应用计算机进行科学计算和事务管理的程序。高级语言容易学习,通用性强,书写出来的程序比较短,更便于推广和交流,是一种很理想的程序设计语言。
高级语言主要是相对于机器语言和汇编语言而言的,并不是特指某一种具体的语言,而是包括了很多编程语言,如Basic(True Basic、QBasic、Visual Basic)、C、C++、Pascal、Fortran等。这些语言的语法、命令格式都互不相同,各有特色,以适应不同编程、不同的计算机应用人群的需要。
高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可分为两大类:
解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序时不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序,如较早时期的QBasic语言。
编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件才能执行,只有目标文件而没有源代码,通常无法进行修改,是目前高级语言采用最多的使用方式。