登录 | 地图 欢迎访问【UZ导航】
当前位置:网站首页 > 推荐 > 正文

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

admin 2019-10-06 74 浏览 0 评论

1.jpg

这是来自我的星球的一个提问:“C语言本身用什么语言写的?”

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

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

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

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

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

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

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

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

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

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

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

传说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 , 中文叫做自举。

相关推荐

百世快递正式上线小米快递平台
百世快递正式上线小米快递平台

据小米快递官方消息,今日百世快递正式上线小米快递平台,可享受1000元免费保价服务。据了解,小米快递是即点即用的快递服务平台,可以在这里下单寄送,会智能匹配最优...

25分钟前 admin

360周鸿祎:很多时候,成功都是被逼出来的
360周鸿祎:很多时候,成功都是被逼出来的

360集团创始人兼CEO周鸿祎(长江商学院CEO8期校友),他的成长几乎伴随了整个中国互联网的成长,这二十年当中,有太多惊心动魄的时刻让人难忘。今天分享的这篇文...

27分钟前 admin

谷歌正式推出云游戏服务Stadia
谷歌正式推出云游戏服务Stadia

根据谷歌官方消息,Stadia在硬件上提供着英特尔至强系列CPU、基于AMDVega的GPU、16GB的共享HBM2内存和固态硬盘,理论浮点运算能力达到10....

8小时前 admin

知乎启动“知乎百科”,个人机构皆可参与
知乎启动“知乎百科”,个人机构皆可参与

 最近、知乎对外宣布正式启动“知乎百科”公共编辑计划,无论是个人用户还是机构用户,都可以参与,推出了一条跟百度百科、维基百科都不相同的百科玩法。“知乎...

18小时前 admin

搜狗浏览器访问百度被提示禁止访问
搜狗浏览器访问百度被提示禁止访问

11月21日消息有大量网友称,用搜狗浏览器访问百度网站时提示被禁止访问。截止发稿时,IT之家通过搜狗浏览器访问百度页面进行实测时,搜索页面显示“您要访问的网站...

18小时前 admin

车载微信很快发布!你准备好了吗?
车载微信很快发布!你准备好了吗?

科技先生11月21日讯,世界5G大会今日正式开幕,在5G与数字经济新动能高峰论坛上,腾讯副总裁马斌发表演讲。马斌认为,中国未来的机会是从人口红利转向数据红利。4...

18小时前 admin

今日头条SEO1.0,头条站长 上线啦
今日头条SEO1.0,头条站长 上线啦

1提交站点验证:跟百度类似,为了省事,我就用官方的截图了a、下载验证文件b、添加到进行验证的网站域名(如:www.toutiao.com)根目录下。c、验证...

1天前 admin

中国联通:新增3182.6万4G用户!
中国联通:新增3182.6万4G用户!

今日有媒体爆料,中国联通公告称,2019年1至10月,公司移动出账用户累计净增708.3万户,达到3.22亿户;其中4G用户累计净增3182.6万户,达到2.5...

1天前 admin

刘强东喊出的京东下一个二十年战略图谱曝光
  • 刘强东喊出的京东下一个二十年战略图谱曝光
  • 刘强东喊出的京东下一个二十年战略图谱曝光
  • 刘强东喊出的京东下一个二十年战略图谱曝光
  • 刘强东喊出的京东下一个二十年战略图谱曝光
王思聪被取消限制消费令
王思聪被取消限制消费令

11月20日晚间,经查询中国执行信息公开网发现,王思聪已经不在限制消费人员名单之列。此前的10月12日,上海市嘉定区人民法院发布了案件号为(2019)沪0114...

2天前 admin

国内如何访问国外谷歌网站
  • 国内如何访问国外谷歌网站
  • 国内如何访问国外谷歌网站
  • 国内如何访问国外谷歌网站
  • 国内如何访问国外谷歌网站
高通预测2021年全球5G手机出货量将达4.5亿部
高通预测2021年全球5G手机出货量将达4.5亿部

北京时间11月20日早间消息,高通公司周二表示,预计全球智能手机制造商2021年的5G手机出货量将达4.5亿部,2022年出货量则将进一步增长至7.5亿部。  ...

2天前 admin

警察偷拍同事获刑入狱6年!
警察偷拍同事获刑入狱6年!

警察偷拍同事获刑怎么回事?据俄罗斯卫星网18日报道,据《纽约邮报》报道,美国加州长滩警察局一名警察因偷拍同事使用洗手间等私密视频而被判入狱6年。据报道,这名警察...

3天前 admin

乐视总部大楼被中止拍卖 曾经千亿市值今付不起612万
乐视总部大楼被中止拍卖 曾经千亿市值今付不起612万

原标题:贾跃亭的烦恼:曾经千亿市值的乐视被612万元难倒如今总部大楼还被中止拍卖  来源:每日经济新闻  每经记者陈梦妤   ...

3天前 admin

金立新增被执行超1.8亿 新品能否自救?
金立新增被执行超1.8亿 新品能否自救?

新京报讯(记者陈维城)记者11月19日获悉,天眼查工商信息显示,11月18日,深圳市金立通信设备有限公司新增两条被执行人信息,累计执行标的超1.8亿元。  深...

3天前 admin

全球最环保的搜索引擎:每搜索45次就种一棵树
全球最环保的搜索引擎:每搜索45次就种一棵树

  新浪科技讯北京时间11月19日晚间消息,据国外媒体报道,德国搜索引擎Ecosia被誉为是“全球最环保”的搜索引擎,因为用户的每一次浏览都相当于在种树。  ...

3天前 admin

html常用代码
html常用代码

1.文件类型<HTML></HTML>(放在档案的开头与结尾)2.文件主题<TITLE></TITLE>...

3天前 admin

不为人知的好东西
不为人知的好东西

收集和分享互联网上不为人知的好东西。今天呢小编又给大家带来了两款非常小众的软件,一起来看一下吧。第一款软件呢,叫做MYDM,是一个全能型的下载器了,有点类似于x...

3天前 admin

王思聪创业:生于万达,死于腾讯
王思聪创业:生于万达,死于腾讯

 一年前,王思聪在微博上搞了个抽奖:为了庆祝iG夺冠,拿出113万现金,抽113个人平分。  这个抽奖有一个特殊的规则,就是腾讯和英雄联盟的员工不能参与。  当...

3天前 admin

百度小程序白屏检测规则变更
百度小程序白屏检测规则变更

尊敬的开发者:您好!为更好提升小程序运行性能与稳定性,现将白屏检测规则修改如下: 从“小程序页面框架创建时开始计算时间,6秒后进行截图分析。当截图为空...

3天前 admin

欢迎 发表评论: