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

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

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

0
分享至

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

1

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

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

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

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

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

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

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

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

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

2

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

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

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

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

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

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

說(shuō)到這里我就想起了多年前的XcodeGhost 事件,簡(jiǎn)單來(lái)說(shuō)就是在Xcode(非官方渠道下載的)中植入了木馬,這樣X(jué)Code編譯出的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

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

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

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

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

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

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

那C1這個(gè)語(yǔ)言的編譯器由誰(shuí)來(lái)寫? 自然是C0。

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

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

這個(gè)過(guò)程被稱為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)推薦
32歲帥小伙與54歲大媽,街頭熱吻!網(wǎng)友:這小伙也是真的“餓”了

32歲帥小伙與54歲大媽,街頭熱吻!網(wǎng)友:這小伙也是真的“餓”了

川渝視覺(jué)
2026-04-17 22:26:16
高崗不出事,可以授予元帥嗎?肯定可以,而且排名會(huì)比較靠前

高崗不出事,可以授予元帥嗎?肯定可以,而且排名會(huì)比較靠前

歷來(lái)縱橫
2026-04-14 20:43:24
圣陽(yáng)股份連收8個(gè)漲停板

圣陽(yáng)股份連收8個(gè)漲停板

證券時(shí)報(bào)
2026-04-20 10:12:03
7歲沈騰攜妻聚餐!王琦近照曝光引熱議:沈騰這是偷偷給老婆“投喂”了多少?

7歲沈騰攜妻聚餐!王琦近照曝光引熱議:沈騰這是偷偷給老婆“投喂”了多少?

今古深日?qǐng)?bào)
2026-04-20 10:12:42
曝王思聰近況:暴瘦脫相 禿頂脫發(fā),拒付200萬(wàn)后,黃一鳴頻繁發(fā)聲

曝王思聰近況:暴瘦脫相 禿頂脫發(fā),拒付200萬(wàn)后,黃一鳴頻繁發(fā)聲

東方不敗然多多
2026-04-18 15:31:29
“揭發(fā)”畢福劍的人,終于發(fā)現(xiàn)!20多年的兄弟,酒局現(xiàn)場(chǎng)曝光

“揭發(fā)”畢福劍的人,終于發(fā)現(xiàn)!20多年的兄弟,酒局現(xiàn)場(chǎng)曝光

貓叔東山再起
2026-04-20 10:10:10
重磅!美媒稱哈登就是NBA從未奪冠的最偉大球員,沒(méi)有之一

重磅!美媒稱哈登就是NBA從未奪冠的最偉大球員,沒(méi)有之一

銜春信
2026-04-20 08:04:19
塞爾比回應(yīng)被奧沙利文取綽號(hào):我們彼此尊重,被談?wù)撜f(shuō)明你做對(duì)了

塞爾比回應(yīng)被奧沙利文取綽號(hào):我們彼此尊重,被談?wù)撜f(shuō)明你做對(duì)了

世界體壇觀察家
2026-04-20 06:27:05
肖國(guó)棟:從趙心童那獲得信心!世錦賽16強(qiáng)出5席,7人轟出14桿破百

肖國(guó)棟:從趙心童那獲得信心!世錦賽16強(qiáng)出5席,7人轟出14桿破百

排球黃金眼
2026-04-20 09:50:51
院士候選人,嚴(yán)重違紀(jì)違法,被雙開!

院士候選人,嚴(yán)重違紀(jì)違法,被雙開!

新浪財(cái)經(jīng)
2026-04-19 19:41:09
何潤(rùn)東助陣宿遷拿下南京,狂拿五個(gè)商務(wù),應(yīng)該感謝《逐玉》

何潤(rùn)東助陣宿遷拿下南京,狂拿五個(gè)商務(wù),應(yīng)該感謝《逐玉》

影視地平線
2026-04-18 22:47:32
全網(wǎng)唱衰的下嫁!嫁普通人5年,前任是法拉利總裁,終究還是輸了

全網(wǎng)唱衰的下嫁!嫁普通人5年,前任是法拉利總裁,終究還是輸了

橙星文娛
2026-04-18 16:42:58
MSC神女號(hào)安全通過(guò)霍爾木茲海峽

MSC神女號(hào)安全通過(guò)霍爾木茲海峽

第一財(cái)經(jīng)資訊
2026-04-19 23:04:28
西方國(guó)家為什么都不喜歡中國(guó)?英國(guó)專家:中國(guó)有一個(gè)“老問(wèn)題”

西方國(guó)家為什么都不喜歡中國(guó)?英國(guó)專家:中國(guó)有一個(gè)“老問(wèn)題”

甜到你心坎
2026-04-12 22:42:27
路易十六哀歌:善良是大革命的最大原罪

路易十六哀歌:善良是大革命的最大原罪

朝廷心腹
2026-04-16 14:20:31
“香港演員幾乎全軍覆沒(méi)! 無(wú)戲可拍”引發(fā)網(wǎng)友熱議

“香港演員幾乎全軍覆沒(méi)! 無(wú)戲可拍”引發(fā)網(wǎng)友熱議

許三歲
2026-03-26 11:35:13
徹底撕破臉?《乘風(fēng)2026》蕭薔當(dāng)場(chǎng)罷錄,一句身體不適,藏著對(duì)節(jié)目組的不滿

徹底撕破臉?《乘風(fēng)2026》蕭薔當(dāng)場(chǎng)罷錄,一句身體不適,藏著對(duì)節(jié)目組的不滿

老吳教育課堂
2026-04-19 14:19:36
英國(guó)遭到拒絕后發(fā)警告:中國(guó)如果不合作,中企海外資產(chǎn)將被沒(méi)收!

英國(guó)遭到拒絕后發(fā)警告:中國(guó)如果不合作,中企海外資產(chǎn)將被沒(méi)收!

荷蘭豆愛(ài)健康
2026-04-19 18:08:20
潛伏在中國(guó)高層的大間諜,遍布軍界政界,簡(jiǎn)直令人唏噓

潛伏在中國(guó)高層的大間諜,遍布軍界政界,簡(jiǎn)直令人唏噓

咸説歷史
2026-04-14 14:21:44
凱恩替補(bǔ)建功!5場(chǎng)連入6球,51球再刷進(jìn)球紀(jì)錄,鎖定“小鋼炮”

凱恩替補(bǔ)建功!5場(chǎng)連入6球,51球再刷進(jìn)球紀(jì)錄,鎖定“小鋼炮”

奧拜爾
2026-04-20 00:48:49
2026-04-20 12:51:00
碼農(nóng)翻身 incentive-icons
碼農(nóng)翻身
有趣且硬核的技術(shù)文章
252文章數(shù) 645關(guān)注度
往期回顧 全部

科技要聞

藍(lán)色起源一級(jí)火箭完美回收 客戶衛(wèi)星未入軌

頭條要聞

媒體:伊朗剛說(shuō)不談 美國(guó)立即開打

頭條要聞

媒體:伊朗剛說(shuō)不談 美國(guó)立即開打

體育要聞

七大獎(jiǎng)項(xiàng)候選官宣!文班或全票DPOY

娛樂(lè)要聞

鹿晗生日上熱搜,被關(guān)曉彤撕下體面

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

月之暗面IPO迷局

汽車要聞

把天門山搬進(jìn)廠?開仰望U8沖上45度坡的那刻 我腿軟了

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

游戲
教育
藝術(shù)
家居
本地

異世界自動(dòng)化模擬經(jīng)營(yíng)游戲《退休勇者當(dāng)廠長(zhǎng)》現(xiàn)已正式上架Steam

教育要聞

我發(fā)現(xiàn)一個(gè)殘酷真相:孩子長(zhǎng)大后,最怨恨的不是管太嚴(yán)的父母……

藝術(shù)要聞

王羲之《換鵝帖》尚在人間,驚艷無(wú)比!

家居要聞

自然慢調(diào) 慢享時(shí)光

本地新聞

12噸巧克力有難,全網(wǎng)化身超級(jí)偵探添亂

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