美文网首页
CSAPP translation page 2

CSAPP translation page 2

作者: 木子9268 | 来源:发表于2019-07-08 21:31 被阅读0次

旁注: 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

    旁注: C编程语言的起源 C语言在1969年到1973年由贝尔实验室由丹尼斯•里奇(Dennis Ritchie)...

  • CSAPP translation page 1

    1.1信息就是位(bits)+上下文(context) 我们的hello 程序生命开始就是一个源程序(或者称为一个...

  • CSAPP translation page 6

    总线 在整个系统中运行的是称为总线(buses)的电导管(electrical conduits)集合,它们在组件...

  • CSAPP translation page 3

    这里,GCC编译器驱动程序读取hello.c源文件然后翻译成一个可执行的目标文件hello. 翻译执行的4个阶段在...

  • CSAPP translation page 4

    旁注: GNU项目 GCC是CNU项目开发出来的许多实用工具之一.GNU项目是理查德·马修·斯托曼(Richard...

  • CSAPP translation page 7

    第6章详细的讲关于输入/输出设备像磁盘的工作. 在第10章, 你将要学习怎样使用Unix的输入/输出接口从应用程序...

  • CSAPP translation page 10

    这本书当中的一个重要结论(lessons)之一就是,意识到高速缓存存储器的应用程序员能够利用(exploit)它们...

  • CSAPP translation page 8

    •加载:从主存复制一个字节或一个字到寄存器(register)里, 覆盖寄存器以前的内容. •储存:从寄存器复制一...

  • CSAPP translation page 9

    1.5高速缓存非常重要 这个简单的例子有重要的经验,系统花费大量的时间把信息从一个地方传送到另外一个地方. hel...

  • CSAPP translation page 13

    1.7.1进程 当程序例如hello程序运行在现代系统当中, 操作系统给我们了一个程序只运行在系统里面的错觉(il...

网友评论

      本文标题:CSAPP translation page 2

      本文链接:https://www.haomeiwen.com/subject/smlzhctx.html