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

1.3.1 C和C++簡史

在第2屆程序設計語言的歷史(History of Programming Languages)大會[Bergin 1996]上,Dennis Ritchie發表了C語言的發展(The Development of the C Language)演講。C語言是在20世紀70年代末期作為UNIX操作系統的實現語言而開發出來的。C語言源于無類型語言B語言[Johnson 1973],而B語言則源于BCPL(Basic Combined Programming Language,基本組合編程語言)[Richards 1979]。BCPL語言是由Martin Richards于20世紀60年代設計開發的,并且在20世紀70年代早期的一些項目中得到了使用。B語言可以看成是無類型的C語言,或者更準確地說,是BCPL語言被濃縮于8KB內存中的版本。

《The C Programming Language》一書(也就是通常說的“K&R”)[Kernighan 1978]最初于1978年出版。該書出版前后的一段時間里,對語言的改變主要是在移植性方面,這也是把代碼移植到Interdata8/32計算機上的結果。那時候,C語言仍強烈地表現出其無類型的血統。

ANSI于1983年夏季成立了X3J11委員會。ANSI這么做的目的在于“將現有的通用的C語言的定義進一步形式化,形成一個清晰的、穩定的和無二義性的標準,以增強用戶程序在不同的C語言環境中的移植能力”[ANSI 1989]。X3J11在1989年年底發表了一份報告,該報告隨后被ISO(the International Organization for Standardization,國際標準化組織)接受,成為ISO/IEC 9899-1990。這兩份報告沒有技術上的差別,僅僅是將ANSI標準的章節序號按照ISO標準進行了重新編排。通常將這兩份標準稱為C89,偶爾也稱為C90(根據其被批準的日期)。該標準的第1版隨后被ISO/IEC 9899/COR1:1994、ISO/IEC 9899/AMD1:1995以及ISO/IEC 9899/COR2:1996改進和修正。通常將ISO/IEC 9899/AMD1:1995稱為AMD1,有時將其所改進的標準稱為C95。

這份標準的第1版(及修正版)隨后被ISO/IEC 9899:1999 [ISO/IEC1999]所取代。通常將這份后來的C標準稱為C99。最近,第二版的標準(修訂)由ISO/IEC 9899:2011[ISO/IEC 2011]所取代,后者通常簡稱為C11。

嚴格意義上的C的后繼語言有Concurrent C[Gehani 1989]、Objective-C[Cox 1991],C*[Thinking 1990]、當然還有C++[Stroustrup 1986]。C語言同時也廣泛用作很多編譯器的中間代碼表示(作為一種可移植的匯編語言),包括其直接后繼者如C++或者某些與其無直接關系的語言(例如,Modula3[Nelson 1991]和Eiffel[Meyer 1988]等)。

在這些C的后繼者中,C++使用得最為廣泛。C++是由Bjarne Stroustrup于1983~1985年間在貝爾實驗室中開發的。在1983年前,Stroustrup也曾給C增加過一些特性,并且稱其為“帶類的C”(C with classes)。C++這個術語在1983年首次提出。

C++在首次發布后發生了巨大的變化。特別值得一提的是,《The Annotated C++ Reference Manual》[Ellis 1990](ARM C++)為其加入了模板和異常,ISO C++標準則為其加入了運行時類型識別(Runtime Type Identification,RTTI)、名字空間以及一個標準庫。最新版本的C++標準是ISO/IEC14882:2011,通常簡稱為C++11[ISO/IEC14882:2011]。

C和C++語言在今天仍然在不斷發展。C編程語言國際標準化工作組(ISO/IEC JTC1 SC22 WG14)負責C語言標準的維護。美國的立場由INCITS的PL22.11 C技術委員會代表。C++編程語言國際標準化工作組(ISO/IEC JTC1 SC22 WG21)負責C++標準的維護。美國的立場由INCITS的PL22.16 C++技術委員會代表。

主站蜘蛛池模板: 田阳县| 德兴市| 壶关县| 宾阳县| 康定县| 闽清县| 子洲县| 大竹县| 鄢陵县| 永丰县| 化隆| 宜章县| 白山市| 平舆县| 南开区| 蓝山县| 临夏县| 浦城县| 疏附县| 利川市| 竹北市| 休宁县| 郁南县| 龙里县| 汽车| 蕲春县| 小金县| 漳平市| 唐河县| 马边| 大城县| 博乐市| 南京市| 内乡县| 乐山市| 班戈县| 仪陇县| 惠水县| 彝良县| 东兰县| 丹江口市|