什么是编程语言
本节阅读量:当前最新的计算机能在纳秒以内执行一条指令。即使日常使用的手机,其性能也超过当年阿波罗登月时使用的计算机上亿倍。 但是计算机只能理解有限的简单指令,且须由我们来告诉它该执行哪些指令。

计算机程序是由一串计算机能理解并执行的指令组成。创建计算机程序的过程叫做编程。 程序员通过编写文本形式的源代码生成程序。
机器语言
计算机的CPU不理解中文,也不理解C++。CPU能直接理解的语言,被称为机器语言。 机器语言中的指令,是由一串长度不定的0和1组成。每个单独的「0」或者「1」称作一个比特(bit)。 例如,简单的机器语言指令「10110000 01100001」。 计算机刚出现时,只有机器语言可以使用,编程非常困难,且消耗大量时间。

机器语言的指令只能做特定的事。比如将两个数字相加,或者访问内存的某个位置。 同时不同的CPU有不同的指令集。就好比一个CPU讲中文,一个CPU讲英文。 为一种CPU写的程序,在另一种CPU上无法运行。机器语言没有可移植性,程序必须重写才能在新的CPU上运行。
汇编语言
由于机器语言难以理解和阅读,人们发明了汇编语言。汇编语言使用简单的单词缩写和数字来替代机器语言中的指令。 例如,「mov al, 061h」,代表将061h这个数字移动到寄存器al中。相较于机器语言,汇编语言有较好的可读性。
CPU不能直接执行汇编语言。因此需要程序将汇编语言转换成机器语言。这个程序就叫做汇编器。 因为汇编语言基本与机器指令一一对应,精心编写的汇编语言有着最高的执行性能。 因此在不少需要程序执行速度的地方,仍能看到大量的汇编代码。
汇编语言仍有不少缺点:
- 简单的需求,需要大量的汇编指令才能写出。即使单条指令能明确含义,多条组合起来含义就很难理解了。
- 汇编语言也没有可移植性。不同的CPU有不同的指令集,对应不同的汇编语言。编写好的程序仍需要重写才能在其它平台运行。
高级语言
为了解决程序的可读性和可移植性,人们发明像C,C++,Python,Java等这些新的编程语言,被称为高级语言。 使用高级语言编程时,不用考虑编写的程序会在哪种机器上执行。在C++中可以写出这样的语句「a = 97」。将97赋值到变量a上。
同汇编语言一样,高级语言也须转换成计算机能够执行的指令才能运行。 有两种方式,「编译执行」与「解释执行」。
编译执行,需要使用编译器将源代码转换成计算机能执行的文件。 经过多年发展,大部分情况下,编译器生成的软件,执行速度比人类手工编写的汇编代码更优秀。
解释器则是一行一行的读取源代码,然后翻译执行。每次执行时,都存在解释执行的过程,解释器的执行速度比编译执行的速度要慢不少。
高级语言的语法接近于日常使用自然语言,阅读和修改的成本都比较低。同时代码无需修改,即可在多种CPU平台上通过编译或解释执行。
但有两种情况,会影响代码可移植性
- 不同的操作系统有各自的接口。若用这些接口,则程序需要修改,才能在另一个操作系统执行。本教程中会避免使用这些操作系统独有的接口。
- 不同的编译器可能有各自扩展的功能。如果用这些独有的功能,不经修改,其它编译器无法编译你写的代码。
