Git為何不用C++開發:Linux之父痛貶C++的經典郵件

李鬆峰發表於2011-11-04

From: Linus Torvalds (torvalds (at) linux-foundation.org)
Subject: Re: [RFC] Convert builin-mailinfo.c to use The Better String Library.
Newsgroups: gmane.comp.version-control.git
Date: 2007-09-06 17:50:28 GMT (4 years, 8 weeks, 1 day, 20 hours and 54 minutes ago)

2007-9-5,週三,Dmitry Kakurin 寫道:

>從第一次看到Git的原始碼起,就有兩件事如鯁在喉
>1.純C而沒有C++。不知道為啥。別提可移植,
>那都是胡說。

才是胡說八道。

C++是一門很噁心的語言。但更噁心的還是有一群下三濫的程式設計師在用它,結果弄出來的都是一堆堆的排洩物。坦率地說,就憑可以把那些C++蠢貨擋在門外這一條,就足以證明應該使用C。

換句話說:使用C證明我們神經沒有毛病。我知道Miles Bader曾開玩笑說要“氣死你”,但實際上是當真的。我已經想清楚了,不管是誰,只要他認為這個專案使用C++會比使用C更好,我都更想“呸”他一口,好讓他滾得遠遠兒地,少來干擾我的專案。

C++會導致最最差勁的設計。總是要使用STL、Boost等等這些臭狗屎,還美其名曰“精巧”的語言庫,倒是“幫”你程式設計了,可是卻會導致:

  • 這些狗屎歇菜時無窮無盡的煩惱(說什麼STL,特別是Boost既穩定又好移植,全都是胡扯,胡扯好玩嗎?)

  • 低效的抽象程式設計模型,而且兩年後你才發現某些抽象並不是很有效率,可你的全部程式碼都是在那些物件模型上構建起來的,非重寫程式碼不能解決問題。

這麼說吧,要想弄出一個不錯的、高效的、系統級的而且可移植的C++方案,唯一的結果就是把自己限制住,而這些在C裡面都可以信手拈來。把專案限制用C來開發,意味人們不會搞砸它,也意味著很多程式設計師實際上都理解底層的問題,不會用白痴的“物件模型”把問題搞得無解。

所以真的很抱歉,但對於Git來說,效率一直都是主要目標,C++的“優勢”只能釀成巨大的錯誤。而讓我們有機會對那些看不到這一點的人吐唾沫只不過是它的另一個很大的附加優勢。

如果你想要一個C++寫的VCS,試試Monotone。真的,它使用“真正的資料庫”,用了很多“出色的物件導向庫”,還用了“出色的C++抽象”。恕我直言,這些設計決策雖然可以讓那些CS迷們神魂顛倒,但結果必然是極其噁心、難以維護的大雜燴。

但是,我相信你一定會選它而不是Git。

Linus

原文連結:http://article.gmane.org/gmane.comp.version-control.git/57918


深度閱讀(外鏈噢~,下次記得回來這裡啊~~)

相關文章