網易首頁 > 網易號 > 正文 申請入駐

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-04-23 15:55:03
主動投案,貴州省監獄管理局原副局長吳道明接受審查調查

主動投案,貴州省監獄管理局原副局長吳道明接受審查調查

界面新聞
2026-04-24 09:33:18
24小時內,德黑蘭突發爆炸,以色列顏面掃地,特朗普全球抓伊朗船

24小時內,德黑蘭突發爆炸,以色列顏面掃地,特朗普全球抓伊朗船

曉徙娛樂
2026-04-24 12:03:36
百億美元砸出的荒誕死局:一國正規軍為何永遠打不贏一支民兵

百億美元砸出的荒誕死局:一國正規軍為何永遠打不贏一支民兵

寰球經緯所
2026-04-20 22:59:41
我結扎10年,44歲妻子突然懷孕,我沒鬧,親子鑒定結果讓我懵了

我結扎10年,44歲妻子突然懷孕,我沒鬧,親子鑒定結果讓我懵了

云端小院
2026-04-23 06:33:40
4月22日俄烏最新:中將親自帶隊沖鋒

4月22日俄烏最新:中將親自帶隊沖鋒

西樓飲月
2026-04-22 18:37:19
鏈子掛胸前,小伙沒兩分鐘就借口有事溜了

鏈子掛胸前,小伙沒兩分鐘就借口有事溜了

飛娛日記
2026-04-24 07:59:29
知名女裝“鬧分家”?380元和1080元羊絨衫差在哪,網友:分不清

知名女裝“鬧分家”?380元和1080元羊絨衫差在哪,網友:分不清

品牌觀察官
2026-04-22 17:14:25
東風 - 31 泄密大案:總工程師被美色策反,國之重器險遭滅頂之災

東風 - 31 泄密大案:總工程師被美色策反,國之重器險遭滅頂之災

干史人
2026-04-18 13:44:12
烈士吳石與叛徒蔡孝乾的后代,如何走出兩種截然不同的人生

烈士吳石與叛徒蔡孝乾的后代,如何走出兩種截然不同的人生

興趣知識
2026-04-24 12:00:57
毛澤東游三峽在船上閑聊,李銀橋:你這話羅部長聽了,非嚇瘋不可

毛澤東游三峽在船上閑聊,李銀橋:你這話羅部長聽了,非嚇瘋不可

雍親王府
2026-04-22 08:50:08
觸目驚心!央視曝光上海一中醫館:從醫生到病人全是演員!

觸目驚心!央視曝光上海一中醫館:從醫生到病人全是演員!

番外行
2026-04-24 08:59:12
馬蹄露直播爆火,從無人問津到萬人刷屏,霍汶希精心布局慘遭翻車

馬蹄露直播爆火,從無人問津到萬人刷屏,霍汶希精心布局慘遭翻車

娛貝勒
2026-04-22 19:38:47
馬科斯失算了!人民日報攤牌:中國不會救菲律賓,徹底死了這條心

馬科斯失算了!人民日報攤牌:中國不會救菲律賓,徹底死了這條心

阿離家居
2026-04-24 13:06:26
懂車帝“全車深檢”瞞報!21人進售后群卻不辦事

懂車帝“全車深檢”瞞報!21人進售后群卻不辦事

政法頻道
2026-04-24 14:06:29
全體集合,下周的預測出來了!A股普跌,我來說兩句!

全體集合,下周的預測出來了!A股普跌,我來說兩句!

一擔金
2026-04-24 12:17:20
死了這條心!人民日報表態:中國不會救菲律賓,馬科斯投機到頭了

死了這條心!人民日報表態:中國不會救菲律賓,馬科斯投機到頭了

霽寒飄雪
2026-04-24 14:33:30
僅24歲!美女謝垚:心梗去世,經常跑半馬,父親帶女兒照片看海!

僅24歲!美女謝垚:心梗去世,經常跑半馬,父親帶女兒照片看海!

川渝視覺
2026-04-24 12:48:24
快看!世界新第一高樓,已蓋到100層!

快看!世界新第一高樓,已蓋到100層!

GA環球建筑
2026-04-23 22:28:50
霍爾木茲海峽,大消息傳來!特朗普:伊朗沒時間了!伊朗發布反擊目標清單

霍爾木茲海峽,大消息傳來!特朗普:伊朗沒時間了!伊朗發布反擊目標清單

新浪財經
2026-04-24 14:09:23
2026-04-24 15:36:49
碼農翻身 incentive-icons
碼農翻身
有趣且硬核的技術文章
256文章數 648關注度
往期回顧 全部

科技要聞

剛剛,DeepSeek-V4 預覽版發布 百萬上下文

頭條要聞

女子乘高鐵被掉落行李箱砸到 向箱子主人索賠6百無果

頭條要聞

女子乘高鐵被掉落行李箱砸到 向箱子主人索賠6百無果

體育要聞

里程碑之戰拖后腿,哈登18分8失誤

娛樂要聞

王思聰被綠!戀愛期間女友被金主包養

財經要聞

19家企業要"鋁代銅",格力偏不

汽車要聞

全景iDrive 續航近800km 新款寶馬7系/i7亮相

態度原創

本地
時尚
教育
公開課
軍事航空

本地新聞

云游中國|逛世界風箏都 留學生探秘中國傳統文化

襯衫+半裙,比別人好看不止一點點

教育要聞

江西省委宣傳部原常務副部長陳東有:教育孩子不能太急切

公開課

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

軍事要聞

美伊陷入互相封鎖僵局

無障礙瀏覽 進入關懷版