C++是一种糟糕的语言 Linux之父炮轰C++
Linux之父Linus Torvalds為了Linux內核開發而專門打造的版本控制軟件Git已經引起了業界的廣泛關注。昨天,有一位Dmitry Kakurin老兄在查看了源代碼之后,發現使用的是純C而非C++,表示不可理解,他直言:“別拿可移植性說事兒,這是屁話(BS,bullshit)。“(此外,他還批評Git蠻力地直接操作文本,既啰嗦又易錯,而且很難跟上高層代碼邏輯。)
這個BS引起了Torvalds的強烈反應,他用“*YOU* are full of bullshit.“(你才滿嘴屁話呢)作為自己反駁的開場白。接著,他先轉向了對C++的罕見的火藥味十足的炮轟:
“C++是一種糟糕的(horrible)語言。而且因為有大量不夠標準的程序員在使用而使情況更糟,以至于極容易產生徹頭徹尾的垃圾(total and utter crap)。老實說,選擇C就是為了把C++程序員踢出去。……我有這樣的結論,任何喜歡用C++而不是C開發項目的程序員可能都是我希望踢出去的人,免得他們來搞亂我參與的項目。C++會導致非常非常糟糕的設計選擇。你們這些C++程序員總是一上來就用語言的那些‘漂亮的’庫特性比如STL、Boost和其他徹頭徹尾的垃圾,這可能對你們的程序有所‘幫助’,但是卻會導致:
——當庫無法工作時無窮無盡的折磨(別跟我說什么STL尤其是Boost很穩定而且可移植性很好,那全是屁話,而且一點都不可笑)
——低效的抽象編程模型,可能在兩年之后你會注意到有些抽象效果不怎么樣,但是所有代碼已經依賴于圍繞它設計的‘漂亮’對象模型了,如果不重寫應用程序,就無法改正。
也就是說,使用優秀的、高效的、系統級的和可移植的C++的唯一方式,最終還是限于使用C本身具有的所有特性。項目限制只用C,意味著參與的人不會搗亂,也意味著會得到許多真正懂得底層問題,而不會折騰那些白癡‘對象模型’垃圾的程序員。
所以,我很抱歉,但是對于Git這樣效率是主要目標的軟件,C++的所謂優點只是巨大的錯誤。而我們將看不到這一點的人排除在外卻成了一個巨大的附加優勢。
如果你想要用C++寫的版本控制系統,去玩Monotone吧。他們確實使用了‘真格的數據庫’,使用了‘漂亮的面向對象庫’、使用了‘漂亮的C++抽象’。可是說老實話,所有這些對某些計算機專業人士而言富于吸引力的設計決定,其最終結果確是一堆可怕、難以維護的垃圾。”
Torvalds和Dmitry Kakurin爭論繼續中。
對Torvalds的回擊,Dmitry反唇相譏:“隨著只用C編程的恐龍們逐漸滅絕,你很快就會發現只剩下自己一個人在固執己見。用Git貢獻者的數量是說明不了問題的。顯然C++開發者也能夠貢獻C代碼。但是以為他們喜歡這種方式,那可就錯了。
“沒有C的時候我用匯編編程。然后在C++誕生之前,我轉向了C。現在我使用C++和C#,而且不再走回頭路。差勁的程序員用任何語言都寫不出好程序。但是為了將差勁的貢獻者拒之門外這樣一個沒譜的理由而懲罰優秀的開發者,這簡直是胡鬧。”
只過了10幾分鐘,Torvalds就回貼了:“和你不同的是,我實實在在地給出了不喜歡C++的原因,而且指出了它可能導致的各種問題的一些例子。而你呢,沒有給出一條像樣的使用C++的理由。事實上,Git比其他軟件配置管理軟件都要好。而好的品味(taste)和C正是原因之一。
“這與什么恐龍毫無關系。好的品味永遠不會過時。將C與匯編語言相提并論,恰恰說明你對自己所討論的問題缺乏起碼的概念(don't have a friggin idea)。”
總結
以上是生活随笔為你收集整理的C++是一种糟糕的语言 Linux之父炮轰C++的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jmeter根据循环获取参数_jmete
- 下一篇: row间距 table 某一行_UITa