网易首页 > 网易号 > 正文 申请入驻

C语言这么厉害,它自身又是用什么语言写的?

0
分享至

换个角度来问,其实是:C语言在运行之前,得编译才行,那C语言的编译器从哪里来?用什么语言来写的?如果是用C语言本身来写的,到底是先有蛋还是先有鸡?

1

我们假设世界上不存在任何编译器, 先从机器语言说起,看看怎么办。

机器语言可以直接被CPU执行,不需要编译器。

然后是汇编语言, 汇编语言虽然只是机器语言的助记符,但是也需要编译成机器语言才能执行,没办法只能用机器语言来写这第一个编译器了(以后就不用了)。

汇编语言的问题解决了,就往前迈进了一大步,这时候就可以用汇编语言去写C语言的编译器,我们说这是C编译器的老祖宗。

有了这个老祖宗,就可以编译任意的C语言程序了,那是不是可以用C语言本身写一个编译器?只要用老祖宗编译一下就可以了。

OK, 这么一层层上来,终于得到了一个用C语言写的编译器, 真是够麻烦的。

到这个时候,之前那个汇编写的C语言编译器就可以抛弃了。

当然,如果在C语言之前,已经出现了别的高级语言,例如Pascal,那就可以用Pascal来写一个C语言的编译器。

第一个Pascal的编译器据说使用Fortran写的。而做为第一个高级语言的Fortran,它的编译器应该是汇编语言写的。

2

关于编译器,这里边有个有趣的传说:

传说Unix 发明人之一的 Ken Thompson在贝尔实验室,大摇大摆的走到任何一台Unix机器前,输入自己的用户名和密码,就能以root的方式登录!

贝尔实验室人才济济,另外一些大牛发誓要把这个漏洞找出来,他们通读了Unix的C源码,终于找到了登录的后门, 清理后门以后编译Unix , 运行, 可是Thompson 还是能够登录进去。

有人觉得可能是编译器中有问题,在编译Unix的时候植入了后门, 于是他们又用C语言重新写了一个编译器,用新的编译器再次编译了Unix, 这下总算天下太平了吧。

可是仍然不管用, Thompson 依然可以用root登录,真是让人崩溃 !

后来Thompson 本人解开了秘密,是第一个C 语言编译器有问题, 这个编译器在编译Unix源码的时候,当然会植入后门, 这还不够,更牛的是,如果你用C 语言写了一个新编译器,肯定也需要编译成二进制代码啊,用什么来编译,只有用Thompson写的那第一个编译器来编译,好了, 你写的这个编译器就会被污染了,你的编译器再去编译Unix , 也会植入后门 :-)

说到这里我就想起了多年前的XcodeGhost 事件,简单来说就是在Xcode(非官方渠道下载的)中植入了木马,这样XCode编译出的ios app都被污染了,这些app就可以被黑客利用做非法之事。

虽然这个XCodeGhost和Thompson的后面相比差得远,但是提醒我们,下载软件的时候要走正规渠道,从官方网站下载,认准网站的HTTPS标准,甚至可以验证一下checksum。

3

可能有人问:我用汇编写一段Hello World都很麻烦,居然有人可以用它写复杂的编译器?这可能吗?

当然可能,在开发第一代Unix的时候,连C语言都没有, Ken Thompson 和 Dennis Ritchie 可是用汇编一行行把Unix敲出来的。 WPS第一版是求伯君用汇编写出来的, Turbo Pascal 的编译器也是Anders 用汇编写出来的,大神们的能力不是普通人能想象得到的。

对于编译器来说,还可以采用“滚雪球”的方式来开发:

还是以C语言为例,第一个版本可以先选择C语言的一个子集,例如只支持基本的数据类型,流程控制语句,函数调用...... 我们把这个子集称为C0。

然后用汇编语言写个编译器,只搞定这个语言的子集C0,这样写起来就容易不少。

C0这个语言可以工作了,然后我们扩展这个子集,例如添加struct,指针...... ,把新的语言称为C1。

那C1这个语言的编译器由谁来写? 自然是C0。

等到C1可以工作了,再次扩展语言特性,用C1写编译器,得到C2。

然后是C3, C4...... 最后得到完整的C语言。

这个过程被称为bootstraping , 中文叫做自举。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
北京这一夜,穿“起球毛衣”走红毯的老戏骨,给年轻艺人上了一课

北京这一夜,穿“起球毛衣”走红毯的老戏骨,给年轻艺人上了一课

银河史记
2026-01-28 16:13:04
剑桥20+男生,被大8岁已婚女蓄意接近,卷入三角关系后离奇死亡

剑桥20+男生,被大8岁已婚女蓄意接近,卷入三角关系后离奇死亡

一莎观察
2026-01-29 23:16:05
国民党率团赴京,郑丽文对大陆称呼却变了,蔡英文不排除再度出马

国民党率团赴京,郑丽文对大陆称呼却变了,蔡英文不排除再度出马

阿伧说事
2026-01-30 15:06:25
国产自研伟哥上市:舌下含服,15分钟起效,不伤血管,中老年适用

国产自研伟哥上市:舌下含服,15分钟起效,不伤血管,中老年适用

番茄健康
2026-01-30 15:46:17
字母哥交易最新动态:有兴趣加盟湖人 下家赔率勇士飙升至第一

字母哥交易最新动态:有兴趣加盟湖人 下家赔率勇士飙升至第一

罗说NBA
2026-01-31 06:08:08
1月30日俄乌最新:100年来的新纪录

1月30日俄乌最新:100年来的新纪录

西楼饮月
2026-01-30 16:07:27
牢A反驳罗翔,算是踢到钢板了

牢A反驳罗翔,算是踢到钢板了

大张的自留地
2026-01-30 15:10:44
特朗普:已向伊朗告知达成协议的最后期限

特朗普:已向伊朗告知达成协议的最后期限

环球网资讯
2026-01-31 05:34:37
CBA大冲突!双方球员最后1秒引发推搡,3人被驱逐出场

CBA大冲突!双方球员最后1秒引发推搡,3人被驱逐出场

体育哲人
2026-01-31 00:40:08
黄金史诗级巨震,5500-5100-5450,2倍做空白银15%收益归零

黄金史诗级巨震,5500-5100-5450,2倍做空白银15%收益归零

金石随笔
2026-01-30 08:34:11
1.8亿理财资金仅剩44万,大连银行称嫌犯伪造单据并失踪,最高法发声

1.8亿理财资金仅剩44万,大连银行称嫌犯伪造单据并失踪,最高法发声

观察者网
2026-01-30 09:38:05
爆iPhone 18 Pro将首搭星链卫星通信,无需额外硬件实现“无死角”联网

爆iPhone 18 Pro将首搭星链卫星通信,无需额外硬件实现“无死角”联网

环球网资讯
2026-01-30 15:14:07
湖人队海耶斯正在申请斯洛文尼亚护照,以便与东契奇并肩作战

湖人队海耶斯正在申请斯洛文尼亚护照,以便与东契奇并肩作战

好火子
2026-01-31 06:22:54
穆里尼奥附加赛再战皇马!冲击伯纳乌不胜魔咒,2人缺席皇马难了

穆里尼奥附加赛再战皇马!冲击伯纳乌不胜魔咒,2人缺席皇马难了

奥拜尔
2026-01-30 19:38:24
闻泰科技:预计2025年净亏损90亿元~135亿元

闻泰科技:预计2025年净亏损90亿元~135亿元

每日经济新闻
2026-01-30 19:47:07
中央委员孙绍骋落马!中纪委新年首月已打下7“虎”

中央委员孙绍骋落马!中纪委新年首月已打下7“虎”

上观新闻
2026-01-30 12:09:11
泪目!38岁德约跪地仰天长啸 决胜盘救8个破发点+鏖战4小时进决赛

泪目!38岁德约跪地仰天长啸 决胜盘救8个破发点+鏖战4小时进决赛

我爱英超
2026-01-30 22:56:32
英国首相抵达上海,雨中逛豫园赏花灯,开心买下48元蝴蝶酥

英国首相抵达上海,雨中逛豫园赏花灯,开心买下48元蝴蝶酥

极目新闻
2026-01-30 20:13:19
“好标准的技校脸”,技校女生大合照火了,网友:能把老实人打傻

“好标准的技校脸”,技校女生大合照火了,网友:能把老实人打傻

妍妍教育日记
2026-01-30 20:54:12
必须把孩子生起来!金灿荣教授罕见发火了,痛批国内不生育的现状

必须把孩子生起来!金灿荣教授罕见发火了,痛批国内不生育的现状

火山诗话
2026-01-30 06:25:28
2026-01-31 07:51:00
码农翻身 incentive-icons
码农翻身
有趣且硬核的技术文章
224文章数 620关注度
往期回顾 全部

科技要闻

意念控制机器人不是科幻 1-2年就落地

头条要闻

特朗普听到"中英破冰"秒垮脸 失心疯的全过程被拍下

头条要闻

特朗普听到"中英破冰"秒垮脸 失心疯的全过程被拍下

体育要闻

“假赌黑”的子弹,还要再飞一会儿吗?

娱乐要闻

警方通报金晨交通事故,否认网传骗保

财经要闻

水贝惊雷:揭秘杰我睿百亿黄金赌局的背后

汽车要闻

合资品牌首搭800V/5C快充 东风日产NX8将于3、4月上市

态度原创

手机
艺术
游戏
亲子
公开课

手机要闻

OPPO不藏了!Find X9s Pro/Ultra参数全泄露:双长焦微距+2亿像素

艺术要闻

惊艳!越南摄影师镜头下的妩媚女子!

向全体二游策划宣战,你们能不能直接把我推删了?

亲子要闻

婴儿的性格是天生的吗?网友:还没生出来 大夫就说肚子里不是善茬

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版