CSAPP translation page 2

旁注: C编程语言的起源

C语言在1969年到1973年由贝尔实验室由丹尼斯•里奇(Dennis Ritchie)发展起来.1989年美国国家标准学会(ANSI-American National Standards Institute)批准(ratified) C语言标准,后来C语言的标准化(standardization)成为了国际标准化组织(ISO-ISO)的任务.这个标准的定义(define)和建立的功能库在C标准函数库(C standard library)里可以被查知.克尼根(Kernighan)和里奇(Ritchie)在他们的经典著作中也有对C语言美国国家标准语法的描述(ANSI C -C语言美国国家标准语法),这本书被人们亲切的称为《K&R[58]》,用里奇的话来说[88],C语言是古怪的(quirky)、有缺陷的(flawed)但同时也是一个巨大的成功.那么,为什么说C语言是成功的呢?

C语言和Unix操作系统(operating system,操作系统)紧密联系: C语言就是作为一种Unix的系统程序语言发展出来的.大多数的Unix内核(kernel)还有所有的支撑工具以及库,都是用C语言写出来的.Unix在20世纪70年代末到20世纪80年代初在大学里面流行起来,许多的人让C语言被人们所知道并且让他们喜欢上它.自从Unix的编写几乎全部用C语言来完成,它可以很容易的移植(ported,传播,移出,移植)到新的机器上.这些为C语言和Unix吸引了了更广泛的使用者.

•C语言是轻量的,简单的语言: C语言的设计只受一个人的控制而不是受一个委员会(committee)的控制.它的结果是清楚明了的,设计和设计者的一些看法一致,避免了矛盾.《K&R》在书上261页有很多完整的语言和标准库的例子和练习.C语言的简易性使得它可以相对(relatively)轻松的学习和移植(port)到其他的电脑上面去.

•C语言为了实际的(lractical)目的而设计: C是为了Unix操作系统的实施而被设计出来.在这之后,一些人发现可以使用它没有语言障碍的(without the language getting in the way)编写建立了一些他们想要的程序.

C语言是系统层程序的选择,它被用来编写(install,建立,安装)大的应用程序级(application-level)程序非常适合.然而,它并不是对所有的程序和情况都是完美的.C指针(C pointers)是混淆(confusion)和程序错误的常见的(common)来源.并且C语言还缺乏对类(classes)、对象(objects)、异常(exceptions)的有用抽象的明确(explicit)支撑.新的编程语言像C++和Java能够解决应用层程序的这些问题.


1.2程序被其他程序翻译成不同的格式(form)

hello程序的生命周期是一个高级C语言程序,因为它可以被读取和被人们理解这种方式.然而,为了运行hello.c在系统上,个别的c语言语句(statements)必须被其他的程序翻译成一系列的低级机器语言指令(instructions,指令).然后这些指令被包装好,我们把它称为可执行(executable)对象程序,以二进制(binary)的形式被储存(stored)在磁盘(disk)文件里面.对象程序也被称为可执行的对象文件.

在Unix系统中,源文件的翻译由一个编译驱动程序(compiler driver)执行(performaed):unix>gcc -o hello hello.c

你可能感兴趣的:(CSAPP translation page 2)