乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

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

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

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

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

      我總結其原因有這么幾點:

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

      具體說:

      1) 性能模型變得不直觀

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

      2) 控制流變得不直觀

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

      第二,Kernel里用不上繼承

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

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

      這個真不知道,

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

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

      內核到處是OO思想,水平自然在你我之上。

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

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

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

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

      所以c++不是做內核的料,c++可能是最復雜的語言,但是絕對不是最牛逼的語言。

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

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

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

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

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

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

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

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

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

      其實題主更應該問C++比C到底高明多少?

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

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

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

      【NickQi的回答(1票)】:

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

      【nonocast的回答(2票)】:

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

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

      用什么工具做的不重要,關鍵是他做了什么。

      【vczh的回答(11票)】:

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

      原文地址:知乎

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多