【Scott Meyers】C++5×5斷想之四:C++歷史上最重要人物新一篇: 【Scott Meyers】C++5×5斷想之五:我之C++拍案驚奇 | 舊一篇: 【Scott Meyers】C++5×5斷想之三:C++歷史上最重要的軟件原文地址:http://www./cppsource/top_cpp_people.html。譯文發(fā)表于《程序員》2007.2。 作者介紹 C++是一門技術(shù),而其背后支持它的是人——這些人發(fā)明、完善、繁榮和應(yīng)用技術(shù)。本周,我將介紹我心目中最重要的五位C++大師。 本周名單上的這些人都擁有巨大的公眾影響力。這些“公眾人物”(抱歉,都是男性,不過我也沒辦法)能對很多人產(chǎn)生直接影響。受你影響的人越多,你自然就越重要。 不過,在系列的開篇文章里我也提到過,我是一個C++局外人??赡苓€有一些在臺前幕后對C++產(chǎn)生了重要影響的人物不為我知。Stroustrup或許只是為眾多技術(shù)工作者代言,標(biāo)準(zhǔn)委員也可能是替代一些不愿拋頭露面團(tuán)體做前臺表演。如果是這樣,那他們還真的達(dá)到目的了:我不知道他們。當(dāng)然也就不會出現(xiàn)在我的名單上。 另外,我對入選者還有兩點(diǎn)要求:(1)應(yīng)該長期從事C++工作;(2)現(xiàn)在仍在為C++工作。重要的人很多,但最重要的人應(yīng)該是長期而持續(xù)為C++做出貢獻(xiàn),并且直到現(xiàn)在仍在努力。 好了,現(xiàn)在公布我的名單,以較之新聞組文章更正式發(fā)表物(當(dāng)然,這肯定比他們實(shí)際開始C++工作的時間晚,因?yàn)槿魏纬晒诋a(chǎn)生影響力前都需要一個周期)的時間為序。在此,我仍然限制為五個名額,沒有并列,也沒有榮譽(yù)獎。因?yàn)槲疫@是品活人而不是評靜物,難度很大啊。規(guī)矩就是規(guī)矩,我必須要堅(jiān)持。 不過,Koenig最讓我感到吃驚的是別人對他的提及率,特別是在C++標(biāo)準(zhǔn)化方面。他一直是引導(dǎo)公眾認(rèn)識STL重要性的踐行者,并帶領(lǐng)Alexander Stepanov(譯者注:原Compaq首席科學(xué)家,現(xiàn)Adobe首席科學(xué)家,STL之父)將STL引入C++標(biāo)準(zhǔn)。 我已經(jīng)記不清多少次聽到或讀到標(biāo)準(zhǔn)化委員會成員類似這樣的話了:“我們也在考慮這個問題,但Andrew指出……”,“那的確是個問題,不過Andrew建議……”。事實(shí)上據(jù)我所知,Koenig是唯一被以其名字命名C++語言特性的人——在標(biāo)準(zhǔn)化工作中,人們發(fā)現(xiàn)命名空間相關(guān)的名字搜索規(guī)范有時會導(dǎo)致編譯失敗,比如: std::cout << someObject; Koenig對此提出了修改意見,這就是后來的“Koenig lookup”[注釋1]。在標(biāo)準(zhǔn)中,此規(guī)范的官方名稱是ADL(argument-dependent lookup),但《Standard》對其的詳細(xì)描述,則是“[basic.lookup.koenig]”(如果你一定要知道出處,那我告訴你,3.4.2小節(jié))。 顯然,我在C++標(biāo)準(zhǔn)工作中也扮演了一個小角色。嗯,別誤會(譯者注:他并沒有正式從事C++標(biāo)準(zhǔn)工作,具體可見http://blog.csdn.net/lxpbuaa/archive/2006/11/09/1375988.aspx中他對自己的說明),我的意思是至少有兩份標(biāo)準(zhǔn)建議稿,都受到我的影響:“我們還需要進(jìn)一步討論這個問題,因?yàn)榧幢?/span>Scott Meyers也還沒弄明白”(如TR1中有關(guān)增加智能指針的建議部分(http://www./jtc1/sc22/wg21/docs/papers/2003/n1450.html),可以在頁面里搜索我的名字)。 即便拋開與Herb Sutter合著的《C++ Coding Standards》(Addison-Wesley, 2005),他發(fā)表的40多篇文章(http:///publications/main.html)也充分展示了他在對象拷貝(object copying)、對齊約束(alignment constraint)、多線程編程、異常安全和搜索等領(lǐng)域的巨大貢獻(xiàn);他常常將性能提升看得比符合標(biāo)準(zhǔn)更為重要。以我看來,近幾年來工作值得我們一直關(guān)注的,僅此Alexandrescu。絕大多數(shù)其他寫作者和報告人(包括我)時常會奔回收割過的田野一遍遍巡視,以期撿到遺留的麥穗,而Alexandrescu卻以其無人望其項(xiàng)背的速度,不斷開荒,還在里面種上了新的莊稼[注釋5]。 截至目前,我已經(jīng)開出了C++歷史上最重要的圖書、文獻(xiàn)、軟件和人物名單。這些名單相對來說是比較客觀的,但在此系列的最后一篇文章里,我想拋開客觀,完全表達(dá)下自己的主觀想法。下次,我將列出C++最重要的五個歷史時刻——五個突然來臨后,我對C++語言、工作方式及其應(yīng)用的認(rèn)識達(dá)到新高度的時刻。 注釋: 1.簡單來說,Koenig lookup指的是:如果函數(shù)的參數(shù)類型定義在名字空間內(nèi),那么函數(shù)被調(diào)用時,首先應(yīng)該在此名字空間內(nèi)搜索被調(diào)用函數(shù),然后再是其他地方。比如調(diào)用“std::cout << someObject”,應(yīng)該首先在定義someObject的名字空間內(nèi)搜索操作符“<<”的實(shí)現(xiàn)。像<<這樣的操作符函數(shù),如果在被它操作的類型的名字空間內(nèi)也有定義,Koenig lookup就發(fā)揮作用了。 2.我這些年公布的大多數(shù)規(guī)范都已經(jīng)成為C++社區(qū)的“基本常識”。我的主要貢獻(xiàn)不是去自己發(fā)明發(fā)現(xiàn)這些規(guī)范,而是普及之。 3.如果你像我一樣,也作過專欄作家,那么你就能更容易理解其工作量之浩繁。我已經(jīng)很難做到一年六次跟蹤那些值得閱讀的東西,而Sutter眾所周知是每月三次。 4.他還是Microsoft的C++/CLI首席架構(gòu)師。將這點(diǎn)放在注釋里說明,是因?yàn)槲艺J(rèn)為C++/CLI是C++的一個分支語言,而不是C++本身的一部分。直到現(xiàn)在,我仍然搞不清他哪來那么多時間同時開展這么多工作。 5.當(dāng)然這并不是說所有他寫的和提到的東西都是他首創(chuàng)的。尤其是他2001年開始讀博士后,也常常會將學(xué)術(shù)上的研究成果傳播到C++社區(qū),例如無鎖編程(lock-free programming)(http:///publications/cuj-2004-10.pdf)。 |
|