- 论坛徽章:
- 3
|
最早的圣人们使用0和1编程。这是真的。
那时还没有操作系统,你写的那个程序就是那台计算机要运行的全部。
================================================
接下来就有人写了一个程序,这个程序可以加载另外的程序运行,这就是最早的操作系统。
同时,用0和1编程太费劲,于是有了汇编语言。最早的汇编语言使用0和1写的,相信我这应该也是真的。
================================================
汇编语言也有点弱,于是就有了Fotran. 这应该是最早的高级语言,如果没猜错,它是用汇编写的。
================================================
于是你可以用Fotran,也可以用汇编来实现C语言。
================================================
同时操作系统理论以及硬件也在发展,有了虚拟内存空间之类的抽象。
================================================
于是发展到后来,语言所需要的工具成为一个链条,预处理,编译器,汇编器,链接器。Java之流就更别提了。
================================================
它们是交叉发展的。
================================================
现在要理清整个历史,鸡生蛋还是蛋生鸡已经非常困难。不过对于现在来说,操作系统是由编译工具链生成的。
================================================
奇怪的是编译工具链是一套应用程序,它们一般在操作系统上运行。
================================================
所以实际的发展路径大约是这样子的,
你有了一个操作系统。
你在这个操作系统上写了一个工具链。
你写了一个更强的操作系统,用工具链生成。
你有了一个更强的操作系统。
你继续完善工具链。
你用这工具链来写操作系统。
...
================================================
工具链生成的东西,二进制的,是有格式的。这种格式要操作系统才能认识。比如Linux系统认识的格式叫elf. 当然工具链也可以生成裸的二进制文件。有一组操作二进制文件的工具叫做binutils. 有一个操作各种二进制文件的库叫做bfd(?).
认识下链接脚本,这玩意不错。假设你需要在一个裸板上(毫无疑问,除了CPU和电路板什么的什么都没有的裸板)搭建“操作系统”,这个是需要的。
================================================
编译器复杂,操作系统也很复杂。
它们的复杂的地方也不太一样。
就是说没得比较或者不好比较,不太好说它们哪个更...
不过相对来说,目前都有比较成熟的理论基础了。以后的东西不敢预料,虽然我个人通常有还有人能想到更XX的东西吗之类的疑问。
复杂的也不单是它们。比如数据库什么的。比如那些大网站的构架。比如Google神马的。比如百万级别并发神马的。各自有各自复杂的地方。
不然这世界为什么需要这么多搞这搞那的。
================================================
虽然是内核版块,我个人内核的水准也就那样(相对来说,还行. 哥还是知道Makefile和Kconfig怎么写, 怎么放到menuconfig那菜单。 写个这样那样的模块自娱自乐也能用。不过我一般很少逛这版,这版高手很高,菜鸟很菜),不过还是斗胆给LZ推荐几本书籍。这些书籍可能慢慢能打消LZ的疑惑。毫无疑问,LZ这样的疑惑几年前我也有。
================================================
《深入理解计算机系统》
《Linker and Loader》
《程序员的自我修养》
《Linux内核设计与实现》 内核入个门
《深入理解Linux内核》 (内核的一大把,不再说了)
《自动机理论,语言和计算导论》很好的自动机理论书籍,里面的证明比编译原理的书籍要全面
《编译原理》即龙书
《编译原理与实践》这本不错
《Draft a Compiler, C语言描述》看英文版,不难
《计算机程序的构造与解释》即SICP, Lisp神马的有意思的说
《七周七语言》这本我最近偶尔翻翻,木时间,只是想见识下多种语言的编程范式?这个不错。ruby, io, prolog, clojure, erlang, haskell...
声明下。上面这些书籍毫无疑问本人翻过。翻到什么层次了别问我。总之反正遇到问题了我还会翻它们。还有一些基本功修炼的就不说了,比如汇编神马的,基本是必须的。
================================================
|
|