閱讀1006 返回首頁    go 阿裏雲 go 技術社區[雲棲]


年輕人,這就是C語言家族的故事

——今日閱讀《C++對話係列》,喜歡上這篇文章

 

起源

sebastian 翻譯


我闖入船艙,“嗨!你聽到一些傳聞了嗎?”

珍妮的工作並沒有絲毫的停頓:“草料(在英語中的發音跟嗨一樣,珍妮的話帶有幾分嘲諷)是用來喂馬的。什麼傳聞?”

“關於加尼米德,”我解釋道,“我聽說他們在冰下發現了一些東西。沒有跡象表明冰層近期曾融化過,說明那東西很古老了,而且它絕對不是大自然的產物。”

這吸引了她的注意力。她直起身來,眼睛閃著光,“是嗎?不屬於人類的?”

“有一種嗡嗡聲。這是不是刺激了你的神經?”

“是,嗯,還有其他的嗎?”

“沒有其他的信息了,”我走到沙發前麵,一屁股坐了下去,老老實實地回答,“這僅僅是一個傳聞。而且,即使有什麼大的事情發生,也不值得如此令人激動,不是嗎?用不了兩個月,我們都將在空間站裏了。”

“冰下麵...?"珍妮思考著,“無論這個東西是不是人造物,至少有一點可以肯定,它已經有一段曆史了。這會促使我們思考一些大的問題,不是嗎?人類的曆史,我們從哪裏來,我們到哪裏去。”

“人類的起源和前進的方向,對。”我說,“這使我想起了發生在我的第一份工作期間的一些事情...”


那是一個陰天,我正在和溫迪談話。她是我的鄰居...也就是說,我們的臥室相鄰。

“對了,"我說,“我聽說Stroustrup之所以命名這種語言為C++,是因為它是在C語言的基礎上增加了一些東西,對嗎?”

“是這樣的,”溫迪說,“如果你再仔細考究一下這個名稱的語義,你能想到什麼呢?”

一陣迷惘後,我隻能搖搖頭:“願聞其詳。”

“你看,它使用了後綴形式的自增運算,意思是‘拿來C語言,增強它的功能,但還用原來的。'"我們一起笑了起來。

“一個不高明的玩笑。”Guru的聲音把我們都嚇了一跳。我們轉過身,我有點緊張,但還是發現了一件不同尋常的事情:Guru的藍眼睛裏閃著光。她接著說:“對這個被你們嘲弄的語言,你們知道它的曆史嗎?”

我放鬆下來,很快答道:“您的意思是...”

Guru 合上了手中的書--從封麵上看是一本D&E[1]。她微微抬頭,眼睛注視著遠方然後開始慷慨陳詞,像唱歌一樣,瘦弱的身體隨著演講內容起伏晃動:

“最初,計算機語言非常混亂,高級語言根本不存在,連固定的語言形式也沒有。貝爾實驗室的Richard Martin在使用了計算機語言的過程中意識到了高級語言的必要性。他深入地研究後,開發出了他認為不錯的BCPL語言。

“然後Ken Thompson使用了BCPL,雖然他覺得很不錯,但他認為如果想在一台PDP-7上使用BCPL,就必須精簡BCPL。Ken Thompson深入地研究後,他開發出了一門新的語言,命名為B,它是BCPL的一個簡化版本,他認為這是一門很好的語言。

“然而B語言沒有類型的概念。Dennis Ritchie意識到了這一點,他深入研究後,對B語言進行了擴展。Ritchie 添加了結構和類型,他把這門語言叫作C語言,因為C是B的下一個字母,無論是在字母表還是在BCPL中。Ritchie 認為這門語言已經相當好了,但是他並不滿足,繼續投入大量的心血和汗水去完善這門語言。在1978年,Brian Kernighan 和Dennis Ritchie合作出版了《The C Programming Language.》[3]這為人們帶來了很多的喜悅,人們看到了C的美妙,‘耶,這門語言真的很棒!’人們紛紛議論。

“C語言很快流傳開來。新的特征不斷的被添加,但並不是被所有的編譯器廠商支持。人們開始感到沮喪,開始唿籲“我們需要標準C!” ANSI響應了這一要求,在1989年ANSI 宣布," 請注意,我將給所有的程序員帶來快樂。因為在今天,C的標準X3.159-1989將誕生."接著ISO采納了這一標準,發布了ISO/IEC 9899-1990。這又一次為人們帶來喜悅。

“事情在進一步發展,早在C標準被發布之前,Bjarne Stroustrup就已經致力於改善C語言。Stroustrup致力於在C語言裏增加類、函數參數類型檢查和其他的一些優秀的特征。他繼續深入,於1980年發布了'C With Classes.'這為人們帶來了更多的喜悅和興奮。

Stroustrup 並沒有止步不前。他在對C語言做了很大的改變後,產生了一門新的語言,他命名這門語言為C++,就是C的增強的意思。他繼續努力,在1986年出版了《The C++ Programming Language》,這再一次為人們帶來了喜悅。

"象所有的事物一樣,C++語言也在不斷的進化著。模板,異常處理(exception handling)以及其它的特征陸續被添加到C++中,人們再次為新事物而興奮。

“然而人們又開始抱怨了。那時候,不同的編譯器開發商使用不同的解決方案支持模板和異常以及其它的特征,甚至有些開發商拒絕支持這些新特性。因此ISO又行動了, 在1998年----克林頓上台後第六年, 克雷蒂安成了除魁北克人之外所有加拿大人的總理。萊溫斯基成了媒體的大紅人,因為沒有第二個辛普森誕生,那年沒有什麼大的新聞----在九月的第一天,ISO 宣布“ 請注意,我將給所有的程序員帶來快樂的消息。因為在今天,C++的標準ISO/IEC 14882:1998(E)將誕生。”接著ANSI接受了這一建議,在七月的二十七號發布了幾乎相同的標準,甚至早於ISO標準的發布,有時候事情就是這樣。這又一次為人們帶來喜悅,“啊,太好了,我們可以踩在巨人的肩膀上前進了”大家是這樣歡唿的。

故事並未結束,當時Patrick Naughton為Sun Microsystems工作了一段時間後,深感厭煩,想離開Sun ,尋求新的發展。然而公司挽留了他,‘你可以擁有一支開發隊伍,隻要你願意,一切都可以由你指揮,但要給我們帶來點酷的東西。’於是一個名叫Green的團隊產生了。

Green小組孤獨地在荒野上不斷的探索。他們尋求一種可用於嵌入式設備的麵向對象語言,他們一開始在C++的基礎上修改,但是C++的龐大使之無法滿足他們的需要,於是他們在C++的基礎上創建了一門新的語言Oak----這個命名僅僅因為James Gosling看到了相窗外的一顆橡樹(Oak)。開發隊伍仔細審視了這門語言,認為它相當的好。

也是在那個時代,美國巨型計算機應用中心開發出了Mosaic,這為我們帶來了令人興奮的WWW。隨後Bill Joy試圖公開Oak的源代碼,使Oak能使用於網頁瀏覽。Sun審視了這個想法,覺得不錯,但Oak這個商標已經被人占用,所以Sun把這門新語言稱為Java,並發布了《the Java programming Language》。這又一次使人們激動,"耶!我們又有了一個真正與開發平台無關的語言!我們認為,這真是太酷了!"

Guru 結束了她的演講,把目光轉向了我,“年輕人,這就是C語言家族的故事。”她輕輕的把遮住耳朵的一縷灰發撥開,靜穆的站了一會兒,重新低下了頭,打開她的D&E,靜靜的走開了。

我被震住了,呆呆的站了好一會才看了看溫迪。

“嗨,不要看我,”溫迪聳了聳肩,“你會慢慢熟悉她的。她是我共事過的程序員中最好的。”

我幾乎不能相信。我試圖想記起裝有我的軟盤放在哪了。


珍妮開玩笑似的笑了起來:“你花了多少時間----工作還是思考如何離她遠點?”

“是的,”我傻笑了一下。那不是我最後一次同珍妮談論關於Guru或者其它更令人高興的的話題,


[注釋]

1. B. Stroustrup, The Design and Evolution of C++ (Addison-Wesley, 1994) ISBN 0201543303.

2. See https://cm.bell-labs.com/cm/cs/who/dmr/chist.html for alternate etymologies of "B".

3. B. Kernighan and D. Ritchie, The C Programming Language, 2nd edition (Prentice Hall, 1998) ISBN 0131103709.

4. B. Stroustrup, The C++ Programming Language, Special Edition (Addison-Wesley, 2000) ISBN 0201700735.


[參考書]

M. Ellis and B. Stroustrup, The Annotated C++ Reference Manual (Addison-Wesley, 1990) ISBN 0201514591.

J. English, The Story of the Java Platform.

D. Ritchie, The Development of the C Language.

B. Stroustrup, The Design and Evolution of C++ (Addison-Wesley, 1994) ISBN 0201543303.


[建議閱讀]

D. Bank, The Java Saga.

M. O'Connell, Java: The Inside Story.

最後更新:2017-04-02 06:51:27

  上一篇:go 關於java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream解決辦法
  下一篇:go Windows編程中的映射模式和坐標轉換