天天看點

【Scott Meyers】C++5×5斷想之四:C++曆史上最重要人物作者介紹

原文位址:http://www.artima.com/cppsource/top_cpp_people.html。譯文發表于《程式員》2007.2。 

作者介紹

【Scott Meyers】C++5×5斷想之四:C++曆史上最重要人物作者介紹

Scott Meyers,C++頂級權威之一,為世界各地客戶提供教育訓練和咨詢服務。發表有暢銷的Effective C++系列圖書(《Effective C++》、《More Effective C++》和《Effective STL》),設計了創新型的Effective C++ CD,Addison Wesley的Effective Software Development Series顧問編輯,The C++ Source (http://www.artima.com/cppsource/)咨詢闆塊專家。布朗大學計算機科學博士,他的網站是www.aristeia.com。 

C++是一門技術,而其背後支援它的是人——這些人發明、完善、繁榮和應用技術。本周,我将介紹我心目中最重要的五位C++大師。

本周名單上的這些人都擁有巨大的公衆影響力。這些“公衆人物”(抱歉,都是男性,不過我也沒辦法)能對很多人産生直接影響。受你影響的人越多,你自然就越重要。

不過,在系列的開篇文章裡我也提到過,我是一個C++局外人。可能還有一些在台前幕後對C++産生了重要影響的人物不為我知。Stroustrup或許隻是為衆多技術工作者代言,标準委員也可能是替代一些不願抛頭露面團體做前台表演。如果是這樣,那他們還真的達到目的了:我不知道他們。當然也就不會出現在我的名單上。

另外,我對入選者還有兩點要求:(1)應該長期從事C++工作;(2)現在仍在為C++工作。重要的人很多,但最重要的人應該是長期而持續為C++做出貢獻,并且直到現在仍在努力。

好了,現在公布我的名單,以較之新聞討論區文章更正式發表物(當然,這肯定比他們實際開始C++工作的時間晚,因為任何成果在産生影響力前都需要一個周期)的時間為序。在此,我仍然限制為五個名額,沒有并列,也沒有榮譽獎。因為我這是品活人而不是評靜物,難度很大啊。規矩就是規矩,我必須要堅持。

【Scott Meyers】C++5×5斷想之四:C++曆史上最重要人物作者介紹

Bjarne Stroustrup(http://www.research.att.com/~bs/homepage.html),1985年至今。嗯,怎麼說呢,他是C++發明人,并編寫了第一個編譯器,還撰寫了大量文章和圖書(參見http://www.research.att.com/~bs/papers.html),積極參與C++的普及與标準化工作,并且一直持續到今天(如最近的SELLs(http://lcsd05.cs.tamu.edu/papers/stroustrup.pdf)和STAPL(http://parasol.tamu.edu/groups/rwergergroup/research/stapl/,合作者)研究項目)。本來,Stroustrup很多年前就可以退休了,躺在無數的贊譽聲裡懶洋洋地曬太陽。但他卻選擇了繼續他30年前就開始的研究工作,這是對現代C++(最開始叫“C with Classes”)發展的巨大貢獻。盡管我無意評比名單入選人孰輕孰重,但很難想象C++領域裡還有誰比發明、最初實作,然後又引導它融入現代軟體開發的人更為重要。

【Scott Meyers】C++5×5斷想之四:C++曆史上最重要人物作者介紹

Andrew Koenig(http://www.acceleratedcpp.com/authors/koenig/),1988年至今。Andrew Koenig應該是絕無僅有、即便沒有撰寫任何C++文章和圖書也能進入這個名單的人。他是一位真正的C++内部權威,這一點因其寫作曆史而少為人知。他撰寫過兩本C++圖書(與Barbara Moo合作。譯者注:Moo為Koenig夫人)、一本C圖書(我沒打算用這個為他在C++上加分,但即使這樣,他仍然……)和大量專欄文章(可參看其首頁上的介紹)。

不過,Koenig最讓我感到吃驚的是别人對他的提及率,特别是在C++标準化方面。他一直是引導公衆認識STL重要性的踐行者,并帶領Alexander Stepanov(譯者注:原Compaq首席科學家,現Adobe首席科學家,STL之父)将STL引入C++标準。

我已經記不清多少次聽到或讀到标準化委員會成員類似這樣的話了:“我們也在考慮這個問題,但Andrew指出……”,“那的确是個問題,不過Andrew建議……”。事實上據我所知,Koenig是唯一被以其名字命名C++語言特性的人——在标準化工作中,人們發現命名空間相關的名字搜尋規範有時會導緻編譯失敗,比如:

std::cout << someObject;

Koenig對此提出了修改意見,這就是後來的“Koenig lookup”[注釋1]。在标準中,此規範的官方名稱是ADL(argument-dependent lookup),但《Standard》對其的較長的描述,則是“[basic.lookup.koenig]”(如果你一定要知道出處,那我告訴你,3.4.2小節)。

【Scott Meyers】C++5×5斷想之四:C++曆史上最重要人物作者介紹

Scott Meyers(http://www.aristeia.com/),1991年至今。同樣,我必須拿出真憑實據說明我的重要性,而不是靠主觀臆斷。我會盡量保持客觀,用大量事實證明我在C++世界留下了自己的印記——或許是一個傷痕。我寫過3本書(像我妻子那樣不算再版,如果算上再版,就是6本),發行量都很大。我還撰寫過近50篇有關C++及其應用的專欄文章,并且這些年來,我還在不少會議和開發者大會上做過報告。我公布的很多技術規範也成了C++最佳程式設計實踐的一部分[注釋2],不少廠商提供的“lint-like”C++檢測工具都支援我的規範,它們常常将我的規範作為指導意見。

顯然,我在C++标準工作中也扮演了一個小角色。嗯,别誤會(譯者注:他并沒有正式從事C++标準工作,具體可見http://blog.csdn.net/lxpbuaa/archive/2006/11/09/1375988.aspx中他對自己的說明),我的意思是至少有兩份标準建議稿,都受到我的影響:“我們還需要進一步讨論這個問題,因為即便Scott Meyers也還沒弄明白”(如TR1中有關增加智能指針的建議部分(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1450.html),可以在頁面裡搜尋我的名字)。

【Scott Meyers】C++5×5斷想之四:C++曆史上最重要人物作者介紹

Herb Sutter(http://www.gotw.ca/),1997年至今。Sutter走上C++舞台不過10年時間,但其活躍程度幾乎讓人瞠目結舌。最早是自撰三本圖書,和人合著一本。他發表過200多篇文章(絕大部分是獨立作者,少量合作),特别讓人吃驚的是,他同時是三個專欄的長期作者或合作者[注釋3]。我也記不清他為C++标準化委員會送出過多少建議和其他檔案了——我好像提到過他是該委員會主席吧?他還是《C++ Report》前任首席編輯,在各種會議和技術大會上做報告,他一直是我知道的對C++最具熱情的鼓手。同時,面對性能敏感應用支援的日益緊迫,他還在多線程領域首倡抽象再構造,并為此尋找新方法——可能就是C++語言和庫的未來擴充方向——以讓開發者更加容易編寫多線程代碼。[注釋4]

【Scott Meyers】C++5×5斷想之四:C++曆史上最重要人物作者介紹

Andrei Alexandrescu(http://erdani.org/),1998年至今。是他的《Modern C++ Design》(http://www.artima.com/cppsource/top_cpp_books.html#mcppd)促成了我們模版思想的巨變,從此,Alexandrescu的名字也就和模版緊緊相連。甚至在一些場合下,他的名字就是模版的代名詞,但這對他是不公平的。他對C++的貢獻,遠遠不僅僅是尖括号的新用法(盡管就我所知,他是第一個描述“template template parameters”——即将模版作為參數在模版程式設計中使用——用法之第一人)。

即便抛開與Herb Sutter合著的《C++ Coding Standards》(Addison-Wesley, 2005),他發表的40多篇文章(http://erdani.org/publications/main.html)也充分展示了他在對象拷貝(object copying)、對齊限制(alignment constraint)、多線程程式設計、異常安全和搜尋等領域的巨大貢獻;他常常将性能提升看得比符合标準更為重要。以我看來,近幾年來工作值得我們一直關注的,僅此Alexandrescu。絕大多數其他寫作者和報告人(包括我)時常會奔回收割過的田野一遍遍巡視,以期撿到遺留的麥穗,而Alexandrescu卻以其無人望其項背的速度,不斷開荒,還在裡面種上了新的莊稼[注釋5]。 

截至目前,我已經開出了C++曆史上最重要的圖書、文獻、軟體和人物名單。這些名單相對來說是比較客觀的,但在此系列的最後一篇文章裡,我想抛開客觀,完全表達下自己的主觀想法。下次,我将列出C++最重要的五個曆史時刻——五個突然來臨後,我對C++語言、工作方式及其應用的認識達到新高度的時刻。

注釋:

1.簡單來說,Koenig lookup指的是:如果函數的參數類型定義在名字空間内,那麼函數被調用時,首先應該在此名字空間内搜尋被調用函數,然後再是其他地方。比如調用“std::cout << someObject”,應該首先在定義someObject的名字空間内搜尋操作符“<<”的實作。像<<這樣的操作符函數,如果在被它操作的類型的名字空間内也有定義,Koenig lookup就發揮作用了。

2.我這些年公布的大多數規範都已經成為C++社群的“基本常識”。我的主要貢獻不是去自己發明發現這些規範,而是普及之。

3.如果你像我一樣,也作過專欄作家,那麼你就能更容易了解其工作量之浩繁。我已經很難做到一年六次跟蹤那些值得閱讀的東西,而Sutter衆所周知是每月三次。

4.他還是Microsoft的C++/CLI首席架構師。将這點放在注釋裡說明,是因為我認為C++/CLI是C++的一個分支語言,而不是C++本身的一部分。直到現在,我仍然搞不清他哪來那麼多時間同時開展這麼多工作。

5.當然這并不是說所有他寫的和提到的東西都是他首創的。尤其是他2001年開始讀博士後,也常常會将學術上的研究成果傳播到C++社群,例如無鎖程式設計(lock-free programming)(http://erdani.org/publications/cuj-2004-10.pdf)。

繼續閱讀