2.1.1 程序
我们都知道,出门旅行肯定要选择交通工具,现在常用的交通工具有飞机、火车、轮船、汽车等,我们会根据自己的喜好和一些其他因素选择对应的交通工具。
编程语言也一样,我们选择一门编程语言就相当于选择一种交通工具,那么,编程语言的“交通”工具是什么呢?是程序。
程序是指根据语言提供的指令按照一定逻辑顺序对获得的数据进行运算,并最终返回给我们的指令和数据的组合。在这里,运算的含义是广泛的,既包括数学计算之类的操作(如加、减、乘、除),又包括寻找和替换字符串之类的操作。数据依据不同的需要组成不同的形式,处理后的数据也可能以另一种方式体现。
程序是用语言写成的,语言分高级语言和低级语言。
低级语言有时叫机器语言或汇编语言。计算机真正“认识”并能够执行的代码,在我们看来是一串0和1组成的二进制数字,这些数字代表指令和数据。早期的计算机科学家就是用这些枯燥乏味的数字编程。低级语言的出现是计算机程序语言的一大进步,它用英文单词或单词的缩写代表计算机执行的指令,使编程的效率和程序的可读性都有了很大提高,但它仍然和机器硬件关联紧密,不符合人类的语言和思维习惯,而且要想把用低级语言写的程序移植到其他平台,就必须重写。
高级语言的出现是程序语言发展的必然结果,也是计算机语言向人类的自然语言和思维方式逐步靠近和模拟的结果。由于高级语言是对人类逻辑思维的描述,用高级语言写程序会感到比较自然,读起来也比较容易,因此现在大部分程序都是用高级语言写的。
高级语言设计的目的是让程序按照人类的思维和语言习惯书写,是面向人的,而不是面向机器,我们用着方便,但机器却无法读懂,更谈不上运行。所以,用高级语言写的程序必须经过“翻译”程序的处理,将其转换成机器可执行的代码,才能运行在计算机上。如果想把高级语言写的程序移植到其他的平台,只需在它的基础上做少量更改就可以了。
高级语言翻译成机器代码有两种方法,即解释和编译。
解释型语言是边读源程序边执行。高级语言就是源代码。解释器每次会读入一段源代码,并执行它,接着再读入并执行,如此重复,直到结束,图2-1显示了解释型语言的执行方式。这个有点类似在乡村里搭乘公交,只要碰到路上有人等公交,就停下来载人。
图2-1 解释型语言的执行方式
编译型语言是将源代码完整地编译成目标代码后才能执行,以后在执行时不需要再编译。图2-2显示了编译型语言的执行方式,这个有点类似我们乘坐的直达车,所有要乘车的人都从起点上车,中途不再搭载其他乘客。
图2-2 编译型语言的执行方式