初学者怎么理解集成开发环境,编译与链接(二)

来源:互联网 发布:cad2010中文破解版mac 编辑:程序博客网 时间:2024/06/11 19:54
前文说了,初学者要在计算机上实际的运行代码,这些前置的基础知识又必不可少。

我就按照自己理解,继续来说说代码是怎么运行的,编译器及链接器又是什么。

为什么现代的程序编写方式,会是今天这样独特的“工作机制”。


三.链接器的概念


在编译器诞生后,程序员的生产效率得到了极大发展,以前用机器码编写1000行代码的时间,现在用简写记号方式可以编写3000行,有更多的精力用来构思程序本身。

自然,程序的规模和复杂程度也提高了一个层次。

子程序的概念开始出现,严格说这时期还没有函数的概念。

比如使用汇编语言,就有了专门的子程序技术。

同时,面向过程的概念也随之出现,古老一些的编程书籍,子程序=过程,它们的含义相同。

这个时期,程序编写的分工合作机制,在第一次雏形的基础上,有了进一步改进。

不同的程序员分别开发一个大程序的局部,最后把这些局部的"子程序"拼接在一起,就形成了完整的可执行程序。

链接器就是在这种背景下诞生的,它同样是一个程序,由天才们开发完成。帮助人们从“手工拼接”转换为“自动拼接"。

在实际开发中,程序的开发者可能互相认识,也可能根本人生一辈子都不认识对方,他们也许来自不同的国家,链接器的概念有了扩展。

显而易见,程序员的工作强度又下降了,他们可以更容易完成程序的编写。


四. 目标文件的概念


有了链接器之后,人们发现直接从源代码到机器码,不利于分工合作的子程序模式,需要有一个“中转”,目标文件由此诞生。

因为子程序的开发模式,要求每一个独立部分都不是完整的。

因此“绕远”成目标文件,最后再“拼接”,更符合分工合作的开发模式。


目标文件,我个人觉得称为“阶段性目标文件"更合适。

目标文件已经不是文本文件了,它的内容是机器码。

既然是机器码,cpu就能识别并执行,为什么不能直接执行目标文件呢?

大部分编程书籍上都写的执行"exe"文件。

实际上,目标文件可以被执行(需要一些技巧), 它是为了区分最后那个完整的程序,而人为规定的。

因为从概念上要求它不完整。

注意,我们可以编写仅有一个目标文件的完整程序,就是把所有工作放在一起。

这样的程序肯定可以运行,但它违背了子程序模式,或者说违背了过程模式。

这样的程序也不容易修改扩展,难以重复利用。

此时的流程图已经接近现代:




0 0
原创粉丝点击