肥宅钓鱼网
当前位置: 首页 钓鱼百科

c语言属于什么类型的编程语言(C语言这么厉害它自身是用什么语言写的)

时间:2023-08-08 作者: 小编 阅读量: 1 栏目名: 钓鱼百科

机器语言可以直接被CPU执行,不需要编译器。OK,这么一层层上来,终于得到了一个用C语言写的编译器,真是够麻烦的。到这个时候,之前那个汇编写的C语言编译器就可以抛弃了。第一个Pascal的编译器据说使用Fortran写的。可是仍然不管用,Thompson依然可以用root登录,真是让人崩溃!这个过程被称为bootstraping,中文叫做自举。

作者 | 刘欣

本文经授权转载自码农翻身(ID:coderising)

这是来自我的星球的一个提问:“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。

可能有人问:我用汇编写一段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 , 中文叫做自举。

作者简介:刘欣,畅销书《码农翻身》作者,15年以上开发经验,前 IBM 架构师,领导过多个企业应用架构设计和开发工作;洞察技术本质,擅长用故事去讲解复杂技术。

【END】

    推荐阅读
  • 毛巾用了一段时间后变得又黄又硬为什么(毛巾用了一段时间后变得又黄又硬的原因是什么)

    毛巾用了一段时间后变得又黄又硬为什么毛巾用了一段时间后变得又黄又硬是因为蛋白质等沉淀。人的汗水中含有蛋白质。蛋白质碰到热水凝固后,就再也无法溶解了。蛋白质凝固而留在毛巾上,并且受到阳光的照射和空气的氧化作用,便会变成污渍。其次,我们使用的香皂中所含的一些物质会与水中的钙离子、镁离子发生反应,生成不溶于水的沉淀物。沉淀物进入毛巾的纤维里,久而久之,毛巾就变硬了。

  • 祝福祖国的祝福语国庆节(祝福祖国的祝福语盘点)

    祝福祖国的祝福语国庆节阳光恣意地大笑,风儿轻声地歌唱,人们尽情地舞蹈,愿祖国的明天更加美好!国强则民强,国富则民富,国家昌盛则民族亦昌盛。你幸福的笑脸还未从中秋节的喜庆气氛中平伏下来,国庆节又来报喜了!国庆节越来越近,盼望越来越强,思念越来越长,心情越来越爽。预祝国庆节开心幸福!祖国之树屹立不倒,祖国之花永不凋谢,祖国之水万古长流。

  • 大熊猫为什么从肉食变素食(吃肉的大熊猫为什么会成为素食主义者)

    之所以会这样,是因为在800万年前始熊猫并不是当时的顶级掠食者,在当时它所处于的环境中,生活着体型硕大的剑齿虎,以及好斗的独角犀,还有数量较多的原始鬣狗等。和始熊猫相比,小种大熊猫面对的竞争更加激烈。在生存竞争压力下,小种大熊猫开始依靠竹子为食。再者,由于第四纪冰期的到来,使得生物竞争严峻,以至于很多生物因为无法适应环境而灭绝了,其中包括剑齿虎、蓝田人等,而依靠吃素的大熊猫却存活了下来。

  • 关于丝绸之路的历史文化知识(丝路之绸何以丰满了华夏衣冠文化)

    丝绸通过丝绸之路,对华夏衣冠文化乃至全世界人类文明产生深远影响。这件锦袍也是一件典型的深衣。丝路开通之后多方文化互通有无,交相辉映的盛况时见一斑。小袖襦裙的腰线逐步升高,多与异色围裙搭配,持续流行到隋唐。位于织锦中部的圆形纹样,外圈是由联珠纹和卷云纹构成。回顾中国汉代织锦上的云气纹样,这种卷云纹带有明显的希腊化艺术特征,因此也被称为“涡云纹”;联珠纹则是萨珊波斯艺术中标志性的装饰元素。

  • 哪里有代办车辆报废(代办汽车报废)

    公安机关应当于受理当日,向报废汽车的拥有者出具《机动车报废证明》,并告知其将报废汽车交售给报废汽车回收企业。报废汽车的拥有者凭《报废汽车回收证明》,向汽车注册登记地的公安机关办理注销登记。报废汽车回收企业对回收的报废汽车应当逐车登记,报废汽车回收企业不得拆解、改装、拼装、倒卖有犯罪嫌疑的汽车及其“五大总成”和其他零配件。规定称,小、微型非营运载客汽车、大型非营运轿车、轮式专用机械车无使用年限限制。

  • 剖腹产后如何恢复身材(剖腹产后如何恢复身材视频)

    同时妈妈要对减肥有信心,保持愉悦的心情,这样对身材的恢复非常有利。胸部运动胸部运动能使乳房恢复弹性,预防松弛下垂。臀部运动臀部运动能促进臀部和大腿肌肉收缩。小贴士剖腹产后恢复身材,妈妈切不可急躁,要根据自己的身体恢复情况和医生的建议进行,切不可盲目减肥,乱吃减肥药、喝减肥茶等,不仅对减肥不利,还会损害身体的健康。

  • 多大岁数做寿好(按传统多少岁该做寿)

    做寿的时间生日是指一个人出生的日子,也指每年年满周岁的那一天。孩子和青年人,生日可直接称为“生日”,庆祝仪式称为“过生日”、“庆生”或“贺生”。按传统,一般以五十岁或六十岁为分界线,生日改称为“寿辰”或“寿诞”,庆祝仪式称为“做寿”或“祝寿”。因为十与死发音相近,犯忌讳;九与久同音,讨吉利。

  • 秘制辣椒酱的制作方法(秘制辣椒酱怎么做)

    秘制辣椒酱的制作方法?我们一起去了解并探讨一下这个问题吧!秘制辣椒酱的制作方法主料:辣椒粉250g、姜蒜末200g、热开水180g、油140g、盐65g、鸡精6g、生抽10g、料酒30g、醋20g。称量好主食材,姜蒜切末。炒锅烧热,入油。加入生姜,蒜末煸炒,依次加入料酒、盐、醋,煸炒后加入热水。生抽调色搅拌均匀,鸡精调味,出锅。秘制辣椒酱晾凉装入,干净的瓶中。

  • 重庆悦来美术馆在哪里(重庆悦来美术馆在哪里?)

    美术馆占地面积17577平米,同时拥有室内、室外空间。其中展厅面积2330平米,展线343.6米。地址:重庆市渝北区悦城路30号悦来生态馆二楼交通指南1.轨道交通乘坐10号线至悦来站下车乘坐6号线至礼嘉站转乘国博线至悦来站下车2.公交乘坐676路、857路至悦城路2站下车乘坐572路、635路、679路、685路、854路、857路、965路至博览中心北站下车

  • 王者荣耀五黑头像大全(可爱王者荣耀头像)

    可爱王者荣耀头像,情侣头像、闺蜜头像,一起开黑吧!图源网,侵删致歉。喜欢记得点赞呀,拿图吱一声。更多好看的王者荣耀头像,私信我“图”获取。