官术网_书友最值得收藏!

推薦序

在現代計算機的歷史中,劍橋大學有著很重要的地位。1949年5月6日,劍橋大學制造的EDSAC計算機成功運行,成為世界上第一臺具有完整功能的存儲程序計算機。EDSAC是由劍橋大學數學實驗室設計的,核心人物是莫里斯·威爾克斯(Maurice Wilkes)(1913—2010)。

1951年,愛迪生-韋斯利出版社(Addison-Wesley)出版了一本名為《為電子數字計算機準備程序》的書,書中介紹了如何為EDSAC計算機編寫軟件,這本書開創了一個新的出版領域,是出版歷史中最早的軟件編程圖書。這本書的第一作者便是莫里斯·威爾克斯,第二作者是EDSAC團隊的另一個成員戴維德·惠勒(David J. WHEELER)(1927—2004)。

1970年,劍橋大學數學實驗室改名為計算機實驗室。

1975年,一個來自丹麥的年輕人申請到劍橋大學讀博士,面試他的便是莫里斯·威爾克斯和羅杰·尼達姆(Roger Needham)。羅杰于1962年加入劍橋大學數學實驗室,后來成為微軟歐洲研究院的首任院長。

今天回想起來,1975年的這次面試可謂陣容強大,兩位面試官一位是EDSAC的總設計師,一位是后來的研究院院長。

兩位資深的面試官輪番提問,一個問題接著一個問題,讓被面試者難以應付,有點焦頭爛額。不過雖然面試過程很痛苦,但是結果卻非常讓人愉快,被面試的年輕人通過了面試。這個年輕人便是今天被尊稱為C++之父的本賈尼·斯特勞斯特盧普(Bjarne Stroustrup)先生。本賈尼出生于1950年,25歲時就已經在丹麥的奧爾胡斯大學獲得了碩士學位。這次面試讓他得到了到現代計算機的搖籃之一繼續學習的機會,也讓他滿足了女朋友的心愿。在到劍橋面試之前,本賈尼已經拿到了一所大學的邀約(offer),但他的女朋友說:“如果你能拿到劍橋大學的邀約,你應該選擇劍橋。”

獲得劍橋大學的學習機會,實現了女朋友的愿望,讓本賈尼也很高興。更重要的是,指導本賈尼博士學業的導師便是EDSAC的設計者之一戴維德·惠勒。

多年之后在本賈尼獲得計算機歷史博物館的院士榮譽后接受采訪時,他仍清楚地記得第一次到惠勒辦公室時的情景。本賈尼坐下來后,想聽聽導師安排自己做什么。沒想到,惠勒提出了一個問題:“你知道讀博士和讀碩士的差別嗎?”

本賈尼回答道:“不知道?!?/p>

惠勒說:“如果一定需要我告訴你應該做什么,那么你就是來讀碩士?!?/p>

本賈尼明白了,導師是讓他自己尋找研究方向。于是本賈尼花了一年時間來尋找研究方向,經過大量的調查和分析,最后選擇了分布式系統。

1979年,本賈尼在劍橋大學拿到了博士學位。經過一番努力,他最終獲得了到大洋彼岸的貝爾實驗室工作的機會。

于是本賈尼先生帶著妻子和女兒從英國到了美國。貝爾實驗室位于美國新澤西州的默里山。在本賈尼到達前,那里已經因為發明了UNIX和C語言而名揚天下。

到貝爾實驗室報到后,本賈尼找到自己的主管,坐下來,想聽聽領導安排自己做什么。領導的指示非常簡單:“做點有趣的東西?!?/p>

回想起當年在劍橋第一次接受惠勒導師指導的經歷,本賈尼對這個回答已經不驚異了。而且感到非常高興,因為可以按照自己的想法大干一場。

做什么呢?本賈尼在做博士研究時,使用了一種名叫Simula的語言,它的最大特點就是“面向對象”,可以非常直觀地表達現實世界,代碼很優雅。但相對于貝爾實驗室里流行的C語言來說,Simula的效率不夠高。一個偉大的想法浮現在本賈尼的腦海里,那就是做一種新的編程語言,它既有C的高效性,又有Simula的自然和優雅。

想好了就動手,本賈尼把自己的新語言臨時取名為“帶有類的C”(C with Classes),開始改造編譯器。

開發一種新的編程語言是一項巨大的工程,定義語法、開發編譯器、編寫用戶手冊等。在這個過程中,本賈尼給自己的新語言取了一個簡單的名字:C++。

經過近5年的工作,1984年,C++語言的參考手冊在貝爾實驗室內部發布了。

1985年,C++的商業版本對外發布,C++開始了走向世界的步伐。

我在20世紀90年代讀大學時,專業課程里安排的編程語言有FORTRAN、C以及匯編語言,沒有C++。但是在圖書館里,我找到了介紹C++的書。更重要的是,當年流行的Borland C++ 3.1集成開發環境里大量使用了C++語言,最著名的就是寶藍(Borland)公司開發的窗口庫OWL(Object Windows Library)。于是我開始自學C++語言,并且使用C++語言編寫了一些程序,包括我的畢業設計程序。

2005年,在上海的C++大會上,第一次見到本賈尼先生,近距離聆聽了他關于C++的演講。從那以后,多次與本賈尼先生見面,與他談論的話題也逐漸增多。

2019年11月,本賈尼先生親臨C++大會會場,演講間隙與很多與會者微笑合影。特別是在與本賈尼的座談結束后,很多人走到本賈尼身邊,請求合影。本賈尼先生有求必應,座談大約12點結束,我上了個衛生間回來,合影仍在繼續。根據主辦方的安排,這天的午餐是所有講師與本賈尼先生共進午餐,因為合影,午餐被推遲了十幾分鐘。餐廳在5樓,午餐后有演講或者想聽演講的講師離開了,本賈尼先生繼續在餐廳,一邊喝茶,一邊聊天,我與他聊到13點多后,因為有事也到4樓會場了。大約14點左右,我在會場側面的衛生間門口,又見到本賈尼先生,他被一位同行攔住,請求合影。就是在這樣“人生有三急”的情況下,本賈尼先生還是非常配合地與那位同行來了個二人合照。我當時真是佩服本賈尼先生的平易和溫和。

從2010年起,C++語言走上了快車道,在過去10年間發布了4個版本,大刀闊斧地引入了很多新的特征。在C++11開始的4個已發布版本中,C++引入了100多個新特征。這么多新特征讓很多人感覺C++仿佛成了一門新的語言。于是便有了現代C++的說法。

與經典C++相比,現代C++的學習難度也比較大。這意味著對于一些老的C++程序員,學習現代C++也是有挑戰的。如何快速掌握現代C++呢?

在2008年《軟件調試》第1版出版后,我在高端調試網站舉辦了一個書友活動,在那次活動中,一個年輕帥氣的年輕人給我留下了深刻的印象,他風華正茂,目光炯炯有神。他就是謝丙堃,當時在武漢大學讀書。

去年年底,丙堃發了一份書稿給我,是關于現代C++的,我翻看了一下,書中選取了現代C++的40多個特征,每個特征一章,從多個角度解讀這個特征??少F的是,書中不僅有代碼示例,結合實際代碼來說理,還有作者的很多感悟和經驗分享。

現代社會中,每個人都忙忙碌碌,特別是程序員群體,大多忙得像個陀螺。人生就在這樣的忙碌中一天天過去。偶爾的閑暇也往往被各種游戲和刷屏占據,顧不上思考人生的方向和怎么實現目標。丙堃能在工作之余,堅持3年之久,日積月累,沉淀下這樣一份書稿,真是難能可貴,欽佩之余,略綴數語于書前,聊表寸心。

張銀奎   

2021年3月于盛格塾

主站蜘蛛池模板: 涞源县| 淮滨县| 新昌县| 睢宁县| 策勒县| 淮阳县| 崇阳县| 宁武县| 红安县| 信宜市| 江油市| 高要市| 磴口县| 娱乐| 海口市| 安仁县| 沁源县| 辽阳县| 蒲城县| 左贡县| 霞浦县| 鄂尔多斯市| 闽清县| 高雄市| 普安县| 东阳市| 巴中市| 南昌市| 卓资县| 定南县| 赫章县| 田阳县| 大化| 类乌齐县| 龙岩市| 邓州市| 宣威市| 平湖市| 武定县| 沈阳市| 仁化县|