天天看點

c++曆史上最重要的人物

C++斷想:5x5系列之四 c++曆史上最重要的人物   作者:Scott Meyers 2006.8.30   摘要: 在本文中,Scott Meyers向讀者列舉了他認為在C++發展曆史中最重要的五個人物,并闡述了選擇他們的理由。   在我的系列文章的前三篇中,我分别列舉了c++曆史上作出最重要貢獻的圖書,文獻和軟體: 1、最重要的c++圖書 2、最重要的c++文獻 3、最重要的c++軟體 在該系列的第四篇中,我主要關注人物。   c++是一項技術,但在技術背後卻隐藏着那些發明它,塑造它,推廣它和使用它的人群。在本周,我将向大家介紹我認為的在c++發展史中最重要的五位大師。   我所列舉的人物都享有很高的公衆知名度。其原因有兩個。首先,這些先驅("front men")(Scott Meyers特别在這裡提出,front men中的men是名副其實,因為列舉的所有人物都是男性,他對此感到很抱歉。其實在c++的發展過程中,許多女性也同樣扮演了不可忽視的角色,大概是限于列舉人數的關系,作者無法顧全,才在這裡對女性沒有入選做了一個玩笑性的特别說明)的工作直接影響了許多人,是以他們就變得曝光率很高。你能對越多的人産生影響,你往往就變得越重要。事情就是這樣。 第二個在列人物成為公衆人物的原因,就像我在我前面幾篇系列文章中說到的,我的觀察點主要是集中在表面。也許有人已經或者曾經對c++産生了重大的影響,但是我從來沒有注意到他們。也許Stroupstrup僅僅是一個台面人物,而真正在他背後從事或正在從事技術工作的另有其人。也許c++标準化協會的成就僅僅是從某個不願意抛頭露面的小技術精英團體那裡克隆過來的。如果事情真的是這樣的話,那麼那些表面背後的人是偉大的,隻是因為我未曾聽說他們,是以他們沒能被列舉出來罷了。 在我對我列出的每個人物進行分析的時候,我認識到: (1)、該人物已經為c++工作了很長的時間,并且 (2)、該人物目前還在從事c++方面的工作。 許多人也曾經是非常重要的,但是最重要的人物一定要曾經堅持長期從事該研究,并能持續地做出貢獻,直至今日。 需要說明的是,在我所列的最重要的c++人物的名單中,人物列舉的順序是按照他們每個人發表c++重要文獻的時間排列的,所謂文獻,是指比新聞稿更正規的形式發表的出版物。(這些人物發表文獻的時間往往是在他們開始研究c++很長一段時間以後,因為一個人要想充分了解一種思想,并形成值得衆人借鑒的結論,往往需要一個很長的過程。)就像我在以前的系列中所做的一樣,我把我自己也列在了五個人當中,這樣做不是有什麼情結,也不是為了炫耀我的榮譽。因為我在這裡列舉的是活生生的人而不是沒有生命的物體,是以在斟酌名單的時候我覺得非常為難。但是我最後還是決定按照評判客觀事物的尺度來選擇我的名單,因為規則就是規則。   Bjarne Stroustrup.1985 年。   好吧 , 這麼評價他吧 , 是他發明了 c++ 這種語言 , 是他寫了第一個 c++ 編譯器 , 他出版了大量的 c++ 專著 ( 祥 見其著作清單 http://www.research.att.com/~bs/papers.html ) 。他曾經活躍在c++語言的推廣和标準化活動中,時至今日,他仍然在這些方面辛勤工作。(比如,近來他關于SELLs的論文http://lcsd05.cs.tamu.edu/papers/stroustrup.pdf和STAPL research project http://parasol.tamu.edu/groups/rwergergroup/research/stapl/ 是該項目的合作者)。在獲得了一個發明家所能獲得的一切榮譽和頭銜以後,他本可以退休在家頤養天年,可是他卻選擇了繼續在c++社群工作,并30年如一日地把如今的c++(最初c++被稱作 “ 帶有類的c語言 “ ) 奉獻到衆人面前。盡管在我做的這一系列的文章中并沒有按個人的貢獻大小對人物進行排序,但是我想,在c++領域估計沒有人會比Bjarne Stroustrup更重要,因為是他發明了這種語言,第一個實作了這個語言,并且直到今天還是軟體開發力量中導師級别的人物。   Andrew Koenig.1988年。 Andrew Koenig是唯一一個在列的人員中未曾獨立發表過跟c++有關的專著文獻就被列舉的人物。無論如何,我都願意把它歸于一個低調的 “ 局内人 “ 。但是他的著作目錄卻往往掩飾了這一事實。他寫了兩本關于c++的書,但是他隻是與Barbara Moo合寫的。他還寫了一本關于c的書(但是這本書并不是出于c++的目的而寫的,即便如此......)他還是幾個雜志的專欄作家(他的個人首頁裡有他專欄的連接配接http://www.acceleratedcpp.com/authors/koenig/) 與此同時,真正讓我吃驚的是Koenig使一個被别人提及頻率非常高的人,特别是在和标準化工作相關的領域。例如,是他認識到了STL的重要性,并且指導Alexander Stepanov将其标準化,當時這些工作還沒有顯示出象今天這樣的重要性,是以還未被人考慮和關注。 我無法統計我多少次從那些标準化協會的會員那裡聽到或者讀到這樣的話: “ 好吧,我們也這樣考慮過,但是那是Andrew指出...... “ 或者 “ 這的确是由問題,不過那時Andy建議...... “ ,實際上,Koenig,就我目前所知,是唯一一個能夠用他的名字來命c++語言特性的人。在标準化的過程中,曾經發現與namespace相關的命名查找法則在寫成下面的形式,編譯的時候會失敗, std::cout << someObject; Koenig提出了一個修改法則的建議,修改後的法則很快地被命名為 “ Koenig查找。 “ 在c++标準中,這條法則被官方稱為 “ 參數相關查找 “ (argument-dependent lookup,對于廣大愛好者來說大家比較喜歡叫它ADL).在c++标準的章節中對該法則還有一個描述(3.4.2章節,如果你知道的話)作了一個标注: “ [basic.lookup.koenig]。"   Scott Meyers,1991年。   正如我在寫這段的時候的反應一樣,寫自己為什麼自認為能夠成為最重要的人物之一的時候,你肯定想象不到我自己抖得多厲害。不過,我已經盡我最大的努力做到客觀公正。有一大堆确鑿的證據證明了我确實在 c++的世界裡留下了我的印記,可能這個印記是傷疤也說不定,哈哈。我也寫了3到6本關于c++的專著(具體是幾本取決于是否将書的再版算作一本新書。我妻子認為不能算,或者有的人認為應該算。),這些書包括的範圍非常廣泛。并且我也寫了大約50個c++專欄和專題以及應用程式,這些年來,我還在許多會議,教育訓練上作了不少的演講,為數以千計的開發者指點迷津。許多我出版的 “ 建議 “ 已經成為了被廣泛承認的 “ 程式設計智慧 “ ,用以衡量一個c++程式是否是足夠的 “ 好 “ 。 許多lint-like工具商都支援我的 “ 建議 “ ,并把我寫代碼的風格作為他們的判斷标準。 我目前甚至還在c++标準化過程中扮演一個小角色,恩,在公衆中制造錯誤的角色。根據我的了解,至少有兩種不同的标準化方法已經引起了争論,人們會說: “ 這個問題我們需要注意,因為甚至連Scott Meyers都搞不定它。 “ (比如:看看加載智能指針給TR1的問題,看看能不能找到我的名字。http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1450.html)   Herb Sutter,1997年。   Sutter進入c++舞台10年了,連 “ 多産 “ 這個詞很難能夠形容他活動的範圍。在寫了三本書以及與别人合寫了一本書以後,他又獨自或與别人合作陸續發表了200個專欄和文章(大多數都是他自己完成的)。不知你的大腦是否能接受他多産的事實,他同時是三個專欄的獨家或合作作家。我都不能想象他給c++标準委員會送出了多少方法和文檔,但是好像我還沒有告訴你他是c++标準委員會的會長吧?他也是前任《C++ REPORT〉〉的主編,一個經常在相關會議和活動上發表言論的人,也是一個我所認識的對c++持續保持激情的人。目前,他正就多線程程式設計将造成應用程式性能危機的問題發動一場空前的大讨論,并且他也在嘗試解決危機的新途徑 —— 也許這就是未來的c++語言和擴充庫呢? —— 令開發者能夠更容易地使用多線程程式設計。   Andrei Alexandrescu,1998年。   在他的書《MORDEN C++ DESIGN》出版以後,人們對模闆的思考引發了一場革命。從此,Andrei Alexandrescu的名字就和模闆緊密地聯系在了一起。在某些領域内,他的名字和模闆擁有相同的意義,不過那也許不是什麼幸運的事情。他對c++的貢獻可遠不止提供了使用尖括号的有趣新用法那麼簡單。(盡管,目前,就我所知,他是第一個示範模闆化參數形成有效模闆的人,例如,模闆化參數形成模闆。) 即使不算他與Herb Sutter(《C++ Coding Standards》, Addison-Wesley, 2005)合寫的書,縱觀他出版的40篇以上的文章,足以顯示他在對象複制,alignment constraint enforcement,多線程程式設計,異常-安全,和搜尋等方面的傑出貢獻。從他的眼光考慮,總是試圖找到提高所謂 “ 标準 “ 做法性能的方法。如果讓我花錢買書看的話,我想過去幾年唯一讓我值得持續關注的就是Alexandrescu的作品。許多别的作家(包括我自己)隻不過是在已經很肥沃的農田裡周期性地探索并宣布他們找到了新的麥穗,但是Alexandrescu卻以驚人的頻率開墾着新的農田,并在上面徹底地耕作。   好了,我現在已經列舉了在c++語言曆史中的五位最重量級的人物以及相關的圖書,文獻,軟體。我注意到,在我的文章系列的一開始就帶有先天的主觀因素。不過在本系列的最後一篇文章裡,我将徹底超越主觀的界限,直接轉到個人感受。下周,我将寫出我關于c++的五個最重要的 “ Aha! “ 時刻 —— 當我突然觸碰倒某些東西,通過對c++語言的工作原理,應用的了解而達到了新的層次的五個瞬間!    

繼續閱讀