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

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

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

0
分享至

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

1

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

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

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

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

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

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

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

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

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

2

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

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

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

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

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

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

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

雖然這個XCodeGhost和Thompson的后面相比差得遠(yuǎn),但是提醒我們,下載軟件的時候要走正規(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的時候,連C語言都沒有, Ken Thompson 和 Dennis Ritchie 可是用匯編一行行把Unix敲出來的。 WPS第一版是求伯君用匯編寫出來的, Turbo Pascal 的編譯器也是Anders 用匯編寫出來的,大神們的能力不是普通人能想象得到的。

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

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

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

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

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

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

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

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

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(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)推薦
特朗普這回臉丟大了

特朗普這回臉丟大了

陸棄
2025-12-26 08:30:03
李淑賢抱憾離世,以拒絕合葬的方式,為那段不光彩的婚姻畫上句點(diǎn)

李淑賢抱憾離世,以拒絕合葬的方式,為那段不光彩的婚姻畫上句點(diǎn)

磊子講史
2025-12-25 15:20:00
1989年,已犯案的鐵道部副部長張辛泰,協(xié)助中央辦案期間繼續(xù)犯案

1989年,已犯案的鐵道部副部長張辛泰,協(xié)助中央辦案期間繼續(xù)犯案

歷史龍?jiān)w
2025-12-26 08:20:12
中醫(yī)曾兩次大規(guī)?!膀?yàn)藥”,結(jié)果很尷尬

中醫(yī)曾兩次大規(guī)?!膀?yàn)藥”,結(jié)果很尷尬

科海識貝sci
2025-12-26 15:27:23
張繼科回憶當(dāng)年肩傷打封閉針:比賽結(jié)束才被告知打的是葡萄糖

張繼科回憶當(dāng)年肩傷打封閉針:比賽結(jié)束才被告知打的是葡萄糖

懂球帝
2025-12-26 22:04:02
全球最精確預(yù)言家:2026,歷史性的一年, 能說的都在這里

全球最精確預(yù)言家:2026,歷史性的一年, 能說的都在這里

神奇故事
2025-12-24 23:34:15
貸款首次轉(zhuǎn)負(fù),這個信號不同尋常

貸款首次轉(zhuǎn)負(fù),這個信號不同尋常

大川東山再起
2025-12-26 15:47:57
因多次辱罵、恐嚇?biāo)?,瑞安一民警被控尋釁滋事罪一審獲刑兩年半 本人辯稱系批評監(jiān)督

因多次辱罵、恐嚇?biāo)?,瑞安一民警被控尋釁滋事罪一審獲刑兩年半 本人辯稱系批評監(jiān)督

極目新聞
2025-12-26 23:07:09
中國父親赴法探親,卻命喪巴黎:急救等待4小時,最終未能救回

中國父親赴法探親,卻命喪巴黎:急救等待4小時,最終未能救回

新歐洲
2025-10-16 21:03:56
回顧“91女神”琪琪:五官出眾,卻因天真讓自己“受傷”

回顧“91女神”琪琪:五官出眾,卻因天真讓自己“受傷”

就一點(diǎn)
2025-11-22 10:36:39
海南封關(guān)成照妖鏡,東南亞國家挨個現(xiàn)行,新加坡直言不準(zhǔn)自給自足

海南封關(guān)成照妖鏡,東南亞國家挨個現(xiàn)行,新加坡直言不準(zhǔn)自給自足

眼底星碎
2025-12-26 19:35:35
南博事件升級!鎮(zhèn)館之寶西漢金獸出現(xiàn)掉色痕跡,徐院長真攤上事了

南博事件升級!鎮(zhèn)館之寶西漢金獸出現(xiàn)掉色痕跡,徐院長真攤上事了

火山詩話
2025-12-24 14:29:42
黎筍之子黎堅(jiān)誠坦言:父親選擇同中國開戰(zhàn),是其畢生最大的失策

黎筍之子黎堅(jiān)誠坦言:父親選擇同中國開戰(zhàn),是其畢生最大的失策

磊子講史
2025-12-24 11:04:05
因長得太漂亮,7次拒絕導(dǎo)演要求遭打壓,如今43歲才等到掌聲

因長得太漂亮,7次拒絕導(dǎo)演要求遭打壓,如今43歲才等到掌聲

黎兜兜
2025-12-25 21:57:32
澤連斯基圣誕致辭詛咒普京,克宮怒斥:粗魯無禮

澤連斯基圣誕致辭詛咒普京,克宮怒斥:粗魯無禮

揚(yáng)子晚報
2025-12-26 12:31:51
他這張嘴啊…怪不得失業(yè)了…

他這張嘴啊…怪不得失業(yè)了…

橘子娛樂
2025-12-26 21:46:40
中國衛(wèi)通、烽火通信、金風(fēng)科技、北斗星通,誰是商業(yè)航天后起老大

中國衛(wèi)通、烽火通信、金風(fēng)科技、北斗星通,誰是商業(yè)航天后起老大

林子說事
2025-12-26 15:49:00
給胖虎給整懵了!阿莫林昏招險害死曼聯(lián):自殺換人 被暴揍30分鐘

給胖虎給整懵了!阿莫林昏招險害死曼聯(lián):自殺換人 被暴揍30分鐘

風(fēng)過鄉(xiāng)
2025-12-27 06:27:23
2020年,孫小果被執(zhí)行死刑,母親為救他搭進(jìn)去20年刑期,圖什么?

2020年,孫小果被執(zhí)行死刑,母親為救他搭進(jìn)去20年刑期,圖什么?

詩意世界
2025-12-16 11:00:03
洪森提出4大?;饤l件,泰柬談判失敗,汪文斌終于表態(tài),措辭特殊

洪森提出4大?;饤l件,泰柬談判失敗,汪文斌終于表態(tài),措辭特殊

時時有聊
2025-12-26 15:09:40
2025-12-27 10:28:49
碼農(nóng)翻身 incentive-icons
碼農(nóng)翻身
有趣且硬核的技術(shù)文章
212文章數(shù) 601關(guān)注度
往期回顧 全部

科技要聞

2026年的特斯拉:電動車承壓,AI接棒

頭條要聞

國民黨內(nèi)"大佬"王金平說自己是中國人 他的話值得玩味

頭條要聞

國民黨內(nèi)"大佬"王金平說自己是中國人 他的話值得玩味

體育要聞

開翻航母之后,他決定親手造一艘航母

娛樂要聞

王傳君生病后近照變化大,面部浮腫

財經(jīng)要聞

投資巨鱷羅杰斯最新持倉:只留四種資產(chǎn)

汽車要聞

兩大CEO試駕 華為乾崑*啟境開啟首款獵裝轎跑路測

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

親子
家居
手機(jī)
教育
軍事航空

親子要聞

2025年的溫暖瞬間:兩個月大的寶寶跟媽媽學(xué)比心

家居要聞

格調(diào)時尚 智慧品質(zhì)居所

手機(jī)要聞

2025年度數(shù)碼好物大賞【年度評選】

教育要聞

如何避免擁有一個土味十足的英文名?

軍事要聞

英法德三國領(lǐng)導(dǎo)人通話 重申對烏支持

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