日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Linus Torvalds 的 C++ 水平如何,為什么他敢炮轟此編程語言?

 pgl147258 2015-04-05

【pansz的回答(111票)】:

Linus 只炮轟過一次,那是因為 git 選擇了 C 語言,很多人「選擇性無視了這段話的由來」。這段話的來由是因為有一位大炮在郵件列表中公開說 Linus 在 git 項目中使用 C 語言進行開發(fā)的理由是 「BULLSHIT」,所以 Linus 才開炮說「你才是 BULLSHIT 」,然后明確說明了(大意),因為 C++ 有一群豬隊友,為了避免使用 C++ 的豬隊友來搞亂代碼,所以 git 項目使用純 C 寫作。

各位簡單的思考一下,你開發(fā)一個軟件,人家罵人的都跑到你的郵件列表(國人可以理解為這就是官方論壇)里面來開罵了,你還不發(fā)飚能行?

是否炮轟,與他本人的 C++ 水平?jīng)]有關(guān)系,而且他炮轟的只是那個大炮,以及一部分豬隊友,而非所有的 C++ 程序員。這只與他能接觸到的那些 C++ 程序員的水平有關(guān)系。作為非商業(yè)的開源軟件,其實他并不能選擇誰來參與他的項目。不能夠根據(jù)項目的技術(shù)需求來挑選人,而只能通過現(xiàn)有人才的力量來選擇項目技術(shù)。

事實上,他的觀點沒什么大問題。Linus 自稱在 Linux 團隊中的主要職責是代碼審查。換句話說他評估什么代碼是好的,什么是不好的,什么該進入代碼,什么不該進入。

他明白哪些人會來參加他的項目,哪些人會為他的項目貢獻代碼,如果這些人的 C++ 能力都不如 C 能力,那么他就絕對不能選擇 C++ ,這與他本人的 C++ 能力沒有關(guān)系,也與 C++ 本身沒有關(guān)系,而是作為代碼審查者,他太清楚與他合作的那些人寫 C++ 程序的能力水平了。

【李劼的回答(25票)】:

Linus專注的領(lǐng)域是os kernel,在這個領(lǐng)域里目前沒有任何一個語言可以撼動C語言的主導(dǎo)地位,世界上使用最廣泛的操作系統(tǒng)kernel——linux和windows NT都是用C語言寫的。

我總結(jié)其原因有這么幾點:

第一,C語言的性能模型和控制流非常簡單清晰,更接近硬件、更接近匯編。C++會引入不必要的復(fù)雜性。

具體說:

1) 性能模型變得不直觀

首先明確一點,內(nèi)核是對性能的要求非常嚴格。C++很多語言特性是犧牲性能tradeoff開發(fā)效率的,不適用于內(nèi)核開發(fā)。C++聲明一個棧上類變量的開銷很可能因為一個復(fù)雜的構(gòu)造函數(shù)變得非常大,而且一眼還看不出來。另外拷貝構(gòu)造函數(shù)、運算符重載、STL這些都會帶來同樣的問題,結(jié)果就是制造很多額外的profiling工作(想想C++11里move語義為了解決什么問題)。

2) 控制流變得不直觀

這個問題的原因是C++引入了構(gòu)造函數(shù)和析構(gòu)函數(shù)。大家應(yīng)該都見過,C++會引入全局類變量的,使得模塊載入的時候會有一些全局變量的constructor被調(diào)用,這些constructor可能還會調(diào)用一些別的東西,這會導(dǎo)致控制流變得不直觀,尤其內(nèi)核對順序非常敏感,這會帶來很多麻煩的問題。

第二,Kernel里用不上繼承

內(nèi)核很少會用到inheritance,反而狀態(tài)機用的會比較多。內(nèi)核會涉及到很多概念,比如VM、Thread、Process、Schedule、FS等等,每個概念都是相對獨立和完整的概念,很難也沒有必要抽象成繼承鏈。復(fù)雜的繼承關(guān)系出現(xiàn)在應(yīng)用層。OO是一種模塊化代碼的方式,但是并不適合所有的場景。無論是linux還是nt kernel的代碼模塊化都做的非常好,尤其是nt kernel,微內(nèi)核代碼非常少,LZ感興趣可以找來看看。

【劉項的回答(9票)】:

這個真不知道,

因為實在找不到他寫過的C++代碼。

【知乎用戶的回答(10票)】:

內(nèi)核到處是OO思想,水平自然在你我之上。

【元亮的回答(8票)】:

這個問題好像是在問 達摩祖師 槍法咋樣? 當然如果覺得他不夠達摩祖師的級別 也可以問 喬峰 用刀會不會很厲害?真正內(nèi)力深厚的稻草都可以殺人 掃地僧用的是掃把 輕松制服慕容復(fù)他爹和喬峰他爹 語言只是工具 編程思想最重要 能解決實際問題最重要 如覺得無關(guān)請 無情的折疊我吧:)

【曾大維的回答(3票)】:

windows,linux,unix,mac osx,內(nèi)核都是c語言、匯編寫的。有一種系統(tǒng)是c++寫的內(nèi)核,就是諾基亞的塞班系統(tǒng),現(xiàn)在已經(jīng)死掉了,據(jù)說代碼量比win xp還大,連他們自己的程序員都無法維護,最后就死掉了。

所以c++不是做內(nèi)核的料,c++可能是最復(fù)雜的語言,但是絕對不是最牛逼的語言。

Linus Torvalds不用c++絕對不是他技術(shù)不行的問題。

【知乎用戶的回答(1票)】:

大神只喜歡用C 至今都找不到他寫過其他語言的代碼 linux kernel自然不必說 git也是純C代碼 他應(yīng)該寫過一點shell腳本

【蔡磊的回答(0票)】:

沒有“老是炮轟吧”,就炮轟過一次,而且轟的是“C++標準太復(fù)雜導(dǎo)致不合格使用者太多,容易誤用和濫用語言特性”。

你列了一些C++的“好特性”,但作為一個10多年C++用戶,我在用其它語言時“唯一”十分想念的C++特性是確定性析構(gòu)與RAII,其它都可有可無

【龍韻的回答(0票)】:

我不知道連Linux Kernel都能寫出來的人, C++的編譯器看不懂。

【蔣小冬的回答(0票)】:

其實題主更應(yīng)該問C++比C到底高明多少?

答案是在相當多領(lǐng)域引入C++除了裝逼沒有什么積極作用

【劉建東的回答(0票)】:

題主的編程水平如何,竟敢質(zhì)疑linus炮轟C++?。?/p>

【NickQi的回答(1票)】:

為什么不找出他對C++攻擊的原話呢?或許他沒有噴過C++語言本身,只是C++確實不適合他和他的團隊做內(nèi)核呢?

【nonocast的回答(2票)】:

C寫成這樣,C++會差?語言本身只是工具啊,人家早就是大師了。

【楊欣的回答(0票)】:

用什么工具做的不重要,關(guān)鍵是他做了什么。

【vczh的回答(11票)】:

雖然我沒看過他寫的C++代碼,但是我覺得他的水平不足以跟豬一樣的隊友一起用C++寫linux,所以干脆禁止了(逃

原文地址:知乎

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多