C Primer Plus(第6版)中文版【最新修订版】
上QQ阅读APP看书,第一时间看更新

1.5 高级计算机语言和编译器

高级编程语言(如,C)以多种方式简化了编程工作。首先,不必用数字码表示指令;其次,使用的指令更贴近你如何想这个问题,而不是类似计算机那样繁琐的步骤。使用高级编程语言,可以在更抽象的层面表达你的想法,不用考虑CPU在完成任务时具体需要哪些步骤。例如,对于两数相加,可以这样写:

total = mine + yours;

对我们而言,光看这行代码就知道要计算机做什么;而看用机器语言写成的等价指令(多条以数字码形式表现的指令)则费劲得多。但是,对计算机而言却恰恰相反。在计算机看来,高级指令就是一堆无法理解的无用数据。编译器在这里派上了用场。编译器是把高级语言程序翻译成计算机能理解的机器语言指令集的程序。程序员进行高级思维活动,而编译器则负责处理冗长乏味的细节工作。

编译器还有一个优势。一般而言,不同CPU制造商使用的指令系统和编码格式不同。例如,用Intel Core i7(英特尔酷睿i7)CPU编写的机器语言程序对于ARM Cortex-A57 CPU而言什么都不是。但是,可以找到与特定类型CPU匹配的编译器。因此,使用合适的编译器或编译器集,便可把一种高级语言程序转换成供各种不同类型CPU使用的机器语言程序。一旦解决了一个编程问题,便可让编译器集翻译成不同CPU使用的机器语言。

简而言之,高级语言(如C、Java、Pascal)以更抽象的方式描述行为,不受限于特定CPU或指令集。而且,高级语言简单易学,用高级语言编程比用机器语言编程容易得多。

1964年,控制数据公司(Control Data Corporation)研制出了CDC 6600计算机。这台庞然大物是世界上首台超级计算机,当时的售价是600万美元。它是高能核物理研究的首选。然而,现在的普通智能手机在计算能力和内存方面都超过它数百倍,而且能看视频,放音乐。

1964年,在工程和科学领域的主流编程语言是FORTRAN。虽然编程语言不如硬件发展那么突飞猛进,但是也发生了很大变化。为了应对越来越大型的编程项目,语言先后为结构化编程和面向对象编程提供了更多的支持。随着时间的推移,不仅新语言层出不穷,而且现有语言也会发生变化。