国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

C語言這么厲害,它自身又是用什么語言寫的?

0
分享至

換個(gè)角度來問,其實(shí)是:C語言在運(yùn)行之前,得編譯才行,那C語言的編譯器從哪里來?用什么語言來寫的?如果是用C語言本身來寫的,到底是先有蛋還是先有雞?

1

我們假設(shè)世界上不存在任何編譯器, 先從機(jī)器語言說起,看看怎么辦。

機(jī)器語言可以直接被CPU執(zhí)行,不需要編譯器。

然后是匯編語言, 匯編語言雖然只是機(jī)器語言的助記符,但是也需要編譯成機(jī)器語言才能執(zhí)行,沒辦法只能用機(jī)器語言來寫這第一個(gè)編譯器了(以后就不用了)。

匯編語言的問題解決了,就往前邁進(jìn)了一大步,這時(shí)候就可以用匯編語言去寫C語言的編譯器,我們說這是C編譯器的老祖宗。

有了這個(gè)老祖宗,就可以編譯任意的C語言程序了,那是不是可以用C語言本身寫一個(gè)編譯器?只要用老祖宗編譯一下就可以了。

OK, 這么一層層上來,終于得到了一個(gè)用C語言寫的編譯器, 真是夠麻煩的。

到這個(gè)時(shí)候,之前那個(gè)匯編寫的C語言編譯器就可以拋棄了。

當(dāng)然,如果在C語言之前,已經(jīng)出現(xiàn)了別的高級(jí)語言,例如Pascal,那就可以用Pascal來寫一個(gè)C語言的編譯器。

第一個(gè)Pascal的編譯器據(jù)說使用Fortran寫的。而做為第一個(gè)高級(jí)語言的Fortran,它的編譯器應(yīng)該是匯編語言寫的。

2

關(guān)于編譯器,這里邊有個(gè)有趣的傳說:

傳說Unix 發(fā)明人之一的 Ken Thompson在貝爾實(shí)驗(yàn)室,大搖大擺的走到任何一臺(tái)Unix機(jī)器前,輸入自己的用戶名和密碼,就能以root的方式登錄!

貝爾實(shí)驗(yàn)室人才濟(jì)濟(jì),另外一些大牛發(fā)誓要把這個(gè)漏洞找出來,他們通讀了Unix的C源碼,終于找到了登錄的后門, 清理后門以后編譯Unix , 運(yùn)行, 可是Thompson 還是能夠登錄進(jìn)去。

有人覺得可能是編譯器中有問題,在編譯Unix的時(shí)候植入了后門, 于是他們又用C語言重新寫了一個(gè)編譯器,用新的編譯器再次編譯了Unix, 這下總算天下太平了吧。

可是仍然不管用, Thompson 依然可以用root登錄,真是讓人崩潰 !

后來Thompson 本人解開了秘密,是第一個(gè)C 語言編譯器有問題, 這個(gè)編譯器在編譯Unix源碼的時(shí)候,當(dāng)然會(huì)植入后門, 這還不夠,更牛的是,如果你用C 語言寫了一個(gè)新編譯器,肯定也需要編譯成二進(jìn)制代碼啊,用什么來編譯,只有用Thompson寫的那第一個(gè)編譯器來編譯,好了, 你寫的這個(gè)編譯器就會(huì)被污染了,你的編譯器再去編譯Unix , 也會(huì)植入后門 :-)

說到這里我就想起了多年前的XcodeGhost 事件,簡單來說就是在Xcode(非官方渠道下載的)中植入了木馬,這樣XCode編譯出的ios app都被污染了,這些app就可以被黑客利用做非法之事。

雖然這個(gè)XCodeGhost和Thompson的后面相比差得遠(yuǎn),但是提醒我們,下載軟件的時(shí)候要走正規(guī)渠道,從官方網(wǎng)站下載,認(rèn)準(zhǔn)網(wǎng)站的HTTPS標(biāo)準(zhǔn),甚至可以驗(yàn)證一下checksum。

3

可能有人問:我用匯編寫一段Hello World都很麻煩,居然有人可以用它寫復(fù)雜的編譯器?這可能嗎?

當(dāng)然可能,在開發(fā)第一代Unix的時(shí)候,連C語言都沒有, Ken Thompson 和 Dennis Ritchie 可是用匯編一行行把Unix敲出來的。 WPS第一版是求伯君用匯編寫出來的, Turbo Pascal 的編譯器也是Anders 用匯編寫出來的,大神們的能力不是普通人能想象得到的。

對(duì)于編譯器來說,還可以采用“滾雪球”的方式來開發(fā):

還是以C語言為例,第一個(gè)版本可以先選擇C語言的一個(gè)子集,例如只支持基本的數(shù)據(jù)類型,流程控制語句,函數(shù)調(diào)用...... 我們把這個(gè)子集稱為C0。

然后用匯編語言寫個(gè)編譯器,只搞定這個(gè)語言的子集C0,這樣寫起來就容易不少。

C0這個(gè)語言可以工作了,然后我們擴(kuò)展這個(gè)子集,例如添加struct,指針...... ,把新的語言稱為C1。

那C1這個(gè)語言的編譯器由誰來寫? 自然是C0。

等到C1可以工作了,再次擴(kuò)展語言特性,用C1寫編譯器,得到C2。

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

這個(gè)過程被稱為bootstraping , 中文叫做自舉。

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

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.

相關(guān)推薦
熱點(diǎn)推薦
韓國國民演員安圣基去世,曾出演《實(shí)尾島》《華麗的休假》,是韓國獲獎(jiǎng)最多的演員之一

韓國國民演員安圣基去世,曾出演《實(shí)尾島》《華麗的休假》,是韓國獲獎(jiǎng)最多的演員之一

極目新聞
2026-01-05 09:34:31
醫(yī)生調(diào)查發(fā)現(xiàn):老人過了71歲后,基本都有這6個(gè)現(xiàn)狀,要坦然接受

醫(yī)生調(diào)查發(fā)現(xiàn):老人過了71歲后,基本都有這6個(gè)現(xiàn)狀,要坦然接受

荷蘭豆愛健康
2026-01-05 04:50:04
入粵始祖,后裔2700萬,客家八大姓氏之一,認(rèn)祖歸宗憑一首詩

入粵始祖,后裔2700萬,客家八大姓氏之一,認(rèn)祖歸宗憑一首詩

銘記歷史呀
2026-01-05 03:24:58
陪玩陪睡不夠!集體開嫖、舔手指、目無王法,陰暗面徹底藏不住了

陪玩陪睡不夠!集體開嫖、舔手指、目無王法,陰暗面徹底藏不住了

好賢觀史記
2025-11-09 21:58:39
日本簽字了,高市選定中日主戰(zhàn)場,對(duì)華開第二槍,解放軍開始巡海

日本簽字了,高市選定中日主戰(zhàn)場,對(duì)華開第二槍,解放軍開始巡海

李橑在北漂
2026-01-05 13:13:56
馮鞏被問:一年在北京生活,到底要花多少錢?

馮鞏被問:一年在北京生活,到底要花多少錢?

民間平哥
2026-01-05 13:20:39
曝阿莫林最早本周下課,重演馬雷斯卡劇情!曼聯(lián)難覓新帥恐成阻礙

曝阿莫林最早本周下課,重演馬雷斯卡劇情!曼聯(lián)難覓新帥恐成阻礙

羅米的曼聯(lián)博客
2026-01-05 11:33:17
或?qū)⒋钶dV8引擎 奧迪Q9將于2026年發(fā)布

或?qū)⒋钶dV8引擎 奧迪Q9將于2026年發(fā)布

車質(zhì)網(wǎng)
2026-01-05 09:27:15
2026年首位落馬銀行董事長出現(xiàn)了

2026年首位落馬銀行董事長出現(xiàn)了

科技金融在線
2026-01-05 12:16:25
6國宣布出兵!中方不低頭也得低?揚(yáng)言和中方斗到底!咱媽動(dòng)真格

6國宣布出兵!中方不低頭也得低?揚(yáng)言和中方斗到底!咱媽動(dòng)真格

瞳哥視界
2025-12-31 21:05:39
東風(fēng)導(dǎo)彈泄密案:間諜郭萬鈞一家三口,全部被處以死刑

東風(fēng)導(dǎo)彈泄密案:間諜郭萬鈞一家三口,全部被處以死刑

冰點(diǎn)歷史
2025-07-15 09:33:13
鋼鐵賤賣屢遭反傾銷,如今限供全球慌了!中國這次不再妥協(xié)

鋼鐵賤賣屢遭反傾銷,如今限供全球慌了!中國這次不再妥協(xié)

百科密碼
2026-01-04 15:14:37
1955年賀晉年授銜,賀龍與彭德懷皆有不滿,毛主席驚問:怎么會(huì)是這般結(jié)果?

1955年賀晉年授銜,賀龍與彭德懷皆有不滿,毛主席驚問:怎么會(huì)是這般結(jié)果?

源溯歷史
2026-01-03 14:34:14
詹姆斯26+7+10超保羅只仰望一大神!東契奇準(zhǔn)三雙,湖人逆轉(zhuǎn)灰熊

詹姆斯26+7+10超保羅只仰望一大神!東契奇準(zhǔn)三雙,湖人逆轉(zhuǎn)灰熊

釘釘陌上花開
2026-01-05 13:11:20
張靈甫身亡,蔣介石當(dāng)眾將湯恩伯打得滿頭血,死后蔣仍冷言相待

張靈甫身亡,蔣介石當(dāng)眾將湯恩伯打得滿頭血,死后蔣仍冷言相待

浩渺青史
2026-01-04 00:58:05
恩里克:這是登貝萊本賽季踢得最好的比賽;要管理其出場時(shí)間

恩里克:這是登貝萊本賽季踢得最好的比賽;要管理其出場時(shí)間

懂球帝
2026-01-05 09:20:18
中國花3億打撈800年的南海沉船,18萬件文物重現(xiàn),海盜都傻眼了

中國花3億打撈800年的南海沉船,18萬件文物重現(xiàn),海盜都傻眼了

歷史回憶室
2026-01-05 11:26:10
皇馬5-1,缺誰誰尷尬!姆巴佩看臺(tái)鼓掌,球迷:沒他進(jìn)攻更流暢

皇馬5-1,缺誰誰尷尬!姆巴佩看臺(tái)鼓掌,球迷:沒他進(jìn)攻更流暢

阿泰希特
2026-01-05 12:11:40
美國73年來第一次這么做!李在明還沒到中國,特朗普先對(duì)韓國下手

美國73年來第一次這么做!李在明還沒到中國,特朗普先對(duì)韓國下手

霽寒飄雪
2026-01-05 11:50:17
離譜?英超5豪門又集體翻車+2連平!阿森納狂喜:5連勝后6分領(lǐng)跑

離譜?英超5豪門又集體翻車+2連平!阿森納狂喜:5連勝后6分領(lǐng)跑

我愛英超
2026-01-05 06:51:42
2026-01-05 14:48:49
碼農(nóng)翻身 incentive-icons
碼農(nóng)翻身
有趣且硬核的技術(shù)文章
214文章數(shù) 604關(guān)注度
往期回顧 全部

科技要聞

雷軍新年首播:確認(rèn)汽車業(yè)務(wù)降速

頭條要聞

媒體:美國捉拿馬杜羅后 多位專家示警賴清德

頭條要聞

媒體:美國捉拿馬杜羅后 多位專家示警賴清德

體育要聞

女子世界第一,9年前在咖啡店洗碗

娛樂要聞

黃宗澤奪雙料視帝,淚灑頒獎(jiǎng)臺(tái)憶往昔

財(cái)經(jīng)要聞

李迅雷:擴(kuò)內(nèi)需要把重心從"投"轉(zhuǎn)向"消"

汽車要聞

不是9S是8X!極氪全新高性能旗艦SUV命名官宣

態(tài)度原創(chuàng)

教育
家居
親子
房產(chǎn)
游戲

教育要聞

收藏:山東2026高中綜評(píng)操作教程(教師端)

家居要聞

白色大理石 奢華現(xiàn)代

親子要聞

2026年度育兒補(bǔ)貼今起開放申領(lǐng),流程新增一鍵續(xù)領(lǐng)功能

房產(chǎn)要聞

再次登頂海南樓市!超越阿那亞的,只有阿那亞!

《碧藍(lán)航線》2025冬日快閃點(diǎn)燃玩家熱情 三城線下嘉年華圓滿落幕

無障礙瀏覽 進(jìn)入關(guān)懷版