C 程式设计从零开始之何谓[2]

2008-02-23 05:39:32来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

上面的东西我将其称为语义,即语言的意义,其不但仅可应用在电脑编程方面,实际上许多技术,如机械、电子、数学等都有自己的语言,而那些设计师则负责将客户的简单程式翻译成相应语言描述的程式。作为一个程式员是极其有必要了解到语义的重要性的(我在我的另一篇文章《语义的需要》中对代码级的语义做过较周详的阐述,有兴趣能够参考之),在后续的文章中我还将提到语义连同其对编程的影响,假如您还没有理解编程是什么意思,随着后续文章的阅读应该能够越来越明了。

电脑编程的基础知识——编译器和连接器

  我从没见过(但是应该有)任何一本C 教材有讲过何谓编译器(Compiler)及连接器(Linker)(倒是在很老的C教材中见过),现在都通过一个类似VC这样的编程环境隐藏了大量东西,将这些封装起来。在此,对他们的理解是很重要的,本系列后面将大量运用到这两个词汇,其决定了能否理解如声明、定义、外部变量、头文档等很重要的关键。

  前面已说明了电脑编程就是个“翻译”过程,要把用户的程式翻译成CPU指令,其实也就是机器代码。所谓的机器代码就是用CPU指令书写的程式,被称作低级语言。而程式员的工作就是编写出机器代码。由于机器代码完全是一些数字组成(CPU感知的一切都是数字,即使是指令,也只是1代表加法、2代表减法这一类的数字和工作的映射),人要记住1是代表加法、2是代表减法将比较困难,并且还要记住第3块内存中放的是圆周率,而第4块内存中放的是有效位数。所以发明了汇编语言,用一些符号表示加法而不再用1了,如用ADD表示加法等。
由于使用了汇编语言,人更容易记住了,但是电脑无法理解(其只知道1是加法,不知道ADD是加法,因为电脑只能看见数字),所以必须有个东西将汇编代码翻译成机器代码,也就是所谓的编译器。即编译器是将一种语言翻译成另一种语言的程式。

  即使使用了汇编语言,但由于其几乎只是将CPU指令中的数字映射成符号以帮助记忆而已,还是使用的电脑的思考方式进行思考的,不够接近人类的思考习惯,故而出现了纷繁复杂的各种电脑编程语言,如:PASCAL、BASIC、C等,其被称作高级语言,因为比较接近人的思考模式(尤其C 的类的概念的推出),而汇编语言则被称作低级语言(C曾被称作高级的低级语言),因为他们不是很符合人类的思考模式,人类书写起来比较困难。由于CPU同样不认识这些PASCAL、BASIC等语言定义的符号,所以也同样必须有一个编译器把这些语言编写的代码转成机器代码。对于这里将要讲到的C 语言,则是C 语言编译器(以后的编译器均指C 语言编译器)。

  因此,这里所谓的编译器就是将我们书写的C 源代码转换成机器代码。由于编译器执行一个转换过程,所以其能够对我们编写的代码进行一些优化,也就是说其相当于是个CPU指令程式员,将我们提供的程式翻译成机器代码,但是他的工作要简单一些了,因为从人类的思考方式转成电脑的思考方式这一过程已由程式员完成了,而编译器只是进行翻译罢了(最多进行一些优化)。

  更有一种编译器被称作翻译器(Translator),其和编译器的区别就是其是动态的而编译器是静态的。如前面的BASIC的编译器在早期版本就被称为翻译器,因为其是在运行时期实时进行翻译工作的,而不像编译器一次性将任何代码翻成机器代码。对于这里的“动态”、“静态”和“运行时期”等名词,不用刻意去理解他,随着后续文章的阅读就会了解了。

  编译器把编译后(即翻译好的)的代码以一定格式(对于VC,就是COFF通用对象文档格式,扩展名为.obj)存放在文档中,然后再由连接器将编译好的机器代码按一定格式(在Windows操作系统下就是Portable Executable File Format——PE文档格式)存储在文档中,以便以后操作系统执行程式时能按照那个格式找到应该执行的第一条指令或其他东西,如资源等。至于为什么中间还要加一个连接器连同其他细节,在后续文章中将会进一步说明。

  也许您还不能了解到上面两个概念的重要性,但在后续的文章中,您将会发现他们是如此的重要以至于完全有必要在这唠叨一番。

[1] [2]




标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 关于自定义类型直接放入判断语句

下一篇: 光纤通信技术的发展趋势

热门词条
热门标签