鱼C论坛

 找回密码
 立即注册
查看: 3003|回复: 4

[吹水] 现有什么再有什么

[复制链接]
发表于 2013-10-27 18:39:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
是先有语言还是有编译器?
这像先有鸡再有蛋一样吧!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-27 19:04:47 | 显示全部楼层
本帖最后由 福禄娃娃 于 2013-10-27 19:10 编辑

以下纯属个人理解,如有错误请指出:
先有设计图纸再有CPU
有了CPU就能用0和1编程了,不同的CPU不同的指令集
编着编着发现很不爽,随便错个0或1查找bug都要命
根据不同的CPU指令集接着搞出了汇编,机器码的助记符基本上一一对应每个机器码,这下编程轻松多了
刚开始汇编语言的编译器肯定是机器码写的
然后就用汇编语言写汇编器了
接着用汇编写出了BCPL--->B----NB----C,貌似是这样NB还是解释型语言。

第一个C语言编译器应该是用汇编写的,但是第一个成熟的C语言编译器应该是由汇编和C语言共同写的。

编译原理讲到了“自举编译器”。大意就是先用底层语言(应该是汇编)写一个能运行,但效率极低的C语言编译器(底层语言不好优化),有了C语言的编译器以后,就可以用C语言好好写一个编译器了,用之前那个运行没问题,但效率低得编译器编译一下,就得到了可以使用的编译器了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-27 19:06:26 | 显示全部楼层
再补充一点在别的地方看到的:
其实,最早的fortran的编译器是直接编写出来的,但是后面algo,pascal之类的语言以来的编译器都不是编写出来的,而是由文法处理器根据语言的文法描述生成的。
当时的文法处理器估计主要采用PDP-11的汇编语言编写。毕竟到80年代,CMU和MIT allab的人都还热衷与PDP-10的汇编程序编写。

但也不排除AT&T用它们的Fortran编译器完成文法处理器。我觉得可以给现在在谷歌任职的Rob Pike写一封礼貌得体的信询问他是否还记得AT&T当时的文法处理器的使用情况。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-27 19:08:16 | 显示全部楼层
找到果壳一篇科普文章《编译器和它的故事——自展与交叉编译》
http://www.guokr.com/blog/87755/
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-27 21:21:57 | 显示全部楼层
淡定,淡定,淡定……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 16:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表