C++简史
? ? ? ? C++的歷史可以追溯到1979年,當時 Bjarne Stroustrup正在做他的博士論文,并且能夠使用的唯一一種編程語言就是Simula(一種用來進行仿真的編程語言)。Simula67是公認為的第一種面向對象的編程語言,在使用過程中,Stroustrup發現使用面向對象的方法進行軟件開發有很多益處,但Simula語言太過笨重,不適用于實際應用。
? ? ? ? ?正是出于這個原因,Stroustrup開始對C語言進行改進,在C語言的基礎上添加了類、基本的繼承、內聯、默認參數和強類型檢查機制,并且盡可能的保持C語言的性能。
? ? ? ? 第一個支持面向對象的C編譯器稱作Cfront,是從傳統C編譯器CPre基礎上發展而來的。當時Cfront是通過將面向對象的C代碼轉換為面向過程的C代碼,然后再編譯成機器代碼來實現面向對象C的編譯的。并且,Cfront使用面向對象的C進行編寫的。但是,由于Cfront的擴展性不是很強,加入新的特性很是困難(例如C++中的異常),所以在1993年就不在使用了。
? ? ? ? 1983年,C++語言正式出現了。之所以稱之為C++是取自++操作符在C中的寓意,代表C++是在C基礎之上發展起來的。與此同時,在C++中又加入了很多特征,包括:重載、引用、‘const’關鍵字、單行注釋(從BCPL中借鑒來的)等等。
? ? ? ? 1985年,Stroustrup出版了C++的參考書《 The C++ Programming Language 》。同年,C++在商業標準下進行了實現,但由于此時C++還不具備官方標準,所以那本書成為了重要的參考手冊。在1989年,C++中又加入了protected和static關鍵字,同時加入了多繼承機制(從多個類繼承)。
? ? ? ? 1990年,《The Annotated C++ ReferenceManual》參考手冊出版了。同年發布了TurboC++編譯器,其中加入了很多標準庫之外的支撐庫。盡管Turbo C++在2006年就不在進行開發了,但對C++的發展產生了巨大的影響。
? ? ? ? 1998年,在《The Annotated C++ ReferenceManual》推動之下,第一個C++國際標準出爐: C++ ISO/IEC 14882:1998。C++98的STL(The StandardTemplate Library,標準庫)包含了自1979年開發的所有標準。2003年,根據各方面收集的C++ bugs報告,C++標準協會對C++進行了修訂,發布了C++03標準。
? ? ? ? 2005年,C++標準協會發布了一份技術報告,報告中描述了即將加入到C++中的新特征,并且將新的標準命名為C++0x,希望能夠在20世紀頭十年中發布這個標準。然而這個標準的定制直到2011年才完成。但在標準發布之前,很多編譯器已經加入了對此標準的新特征的支持。
? ? ? ? 2011年,C++11標準終于完成了。這些新的特征包括:正則表達式、新的隨機數庫、新的時間庫、atomicssupport、線程庫、新的for循環方式(類似于foreach)、auto關鍵字、新的容器類、更好的支持unions和array-initializationlists,以及 variadictemplates。
C++語言發展大概可以分為三個階段:
第一階段
從80年代到1995年。這一階段C++語言基本上是傳統類型上的面向對象語言,并且憑借著接近C語言的效率,在工業界使用的開發語言中占據了相當大份額;
第二階段
從1995年到2000年,這一階段由于標準模板庫(STL)和后來的Boost等程序庫的出現,泛型程序設計在C++中占據了越來越多的比重性。當然,同時由于Java、C#等語言的出現和硬件價格的大規模下降,C++受到了一定的沖擊;
第三階段
從2000年至今,由于以Loki、MPL等程序庫為代表的產生式編程和模板元編程的出現,C++出現了發展歷史上又一個新的高峰,這些新技術的出現以及和原有技術的融合,使C++已經成為當今主流程序設計語言中最復雜的一員。
?
計算機誕生初期,人們要使用計算機必須用機器語言或匯編語言編寫程序。世界上第一種計算機高級語言誕生于1954年,它是FORTRAN語言。先后出現了多種計算機高級語言。其中使用最廣泛、影響最大的當推BASIC語言和C語言:BASIC語言是1964年在FORTRAN語言的基礎上簡化而成的, 它是為初學者設計的小型高級語言;C語言是1972年由美國貝爾實驗室的D.M.Ritchie研制成功的。它不是為初學者設計的,而是為計算機專業人員設計的。大多數系統軟件和許多應用軟件都是用C語言編寫的,但是隨著軟件規模的增大,用C語言編寫程序漸漸顯得有些吃力了。
在C基礎上,1983年又由貝爾實驗室的BjarneStroustrup推出了C++。 C++進一步擴充和完善了C語言,成為一種面向 對象的程序設計語言。C++目前流行的編譯器最新版本是GCC 4.8.2和Microsoft Visual Studio 2013。C++提出了一些更為深入的概念,它所支持的這些面向對象的概念容易將問題空間直接地映射到程序空間,為程序員提供了一種與傳統結構程序設計不同的思維方式和編程方法。因而也增加了整個語言的復雜性,掌握起來有一定難度。
C++由美國AT&T貝爾實驗室的本賈尼·斯特勞斯特盧普博士在20世紀80年代初期發明并實現(最初這種語言被稱作“C with Classes”,即“帶類的C”)。 C++保留了C語言原有的所有優點,增加了面向對象的機制。開始,C++是作為C語言的增強版出現的,從給C語言增加類開始,不斷的增加新特性。虛函數(virtualfunction)、運算符重載(OperatorOverloading)、多重繼承(MultipleInheritance)、模板(Template)、異常(Exception)、RTTI、命名空間(namespace)逐漸被加入標準。
1998年國際標準組織(InternationalOrganization for Standardization, ISO)第一次頒布了C++程序設計語言的國際標準ISO/IEC14882:1998。此后C++是具有國際標準的編程語言,該標準通常簡稱ANSI C++或ISO C++ 98標準,以后每5年視實際需要更新一次標準。后來又在2003年通過了C++的第二個標準ISO/IEC 14882:2003,簡稱ISO C++ 03標準。此后,新的標準草案叫做C++ 0x。對于C++ 0x標準草案的最終國際投票已于2011年8月10日結束,并且所有國家都投出了贊成票,C++0x已經毫無疑義地成為正式國際標準。先前被臨時命名為C++0x的新標準正式定名為ISO/IEC 14882:2011,簡稱ISO C++ 11標準。C++ 11標準將取代現行的C++標準C++98和C++03。國際標準化組織于2011年9月1日出版發布《ISO/IEC 14882:2011》,名稱是:Information technology --Programming languages -- C++ Edition: 3。
C++這個名字是RickMascitti于1983年中所建議的,并于1983年12月首次使用。更早以前,尚在研究階段的發展中語言曾被稱為“new C”,之后是“C withClasses”。在計算機科學中,C++仍被稱為C語言的上層結構。它最后得名于C語言中的“++”操作符(其對變量的值進行遞增)。而且在共同的命名約定中,使用“+”以表示增強的程序。Stroustrup說:“這個名字象征著源自于C語言變化的自然演進”。C+是一個和C/C++無關的早期編程語言。
Rick Mascitti在1992年被非正式地問起名字的由來,他表示這是在半開玩笑中說出的。他從沒想過C++會成為這門語言的正式名字。有一個關于C++名字的笑話,當你使用后綴++時,附加只發生在運算之后(因此,它應該是++C,而不是C++,這個笑話是說時下某些程序員還在以使用C的方式使用C++,這通常被一些權威著作認為是不正確的)。
C++是由C發展而來的,與C兼容。用C語言寫的程序基本上可以不加修改地用于C++。從C++的名字可以看出它是C的超越和集中。C++既可用于面向過程的結構化程序設計,又可用于面向對象的程序設計,是一種功能強大的混合型的程序設計語言。
C++對C的“增強”,表現在六個方面:
(1) 類型檢查更為嚴格。
(2) 增加了面向對象的機制。
(3) 增加了泛型編程的機制(Template)。
(4) 增加了異常處理。
(5) 增加了運算符重載。
(6) 增加了標準模板庫(STL)。
面向對象程序設計,是針對開發較大規模的程序而提出來的,目的是提高軟件開發的效率。不要把面向對象和面向過程對立起來,面向對象和面向過程不是矛盾的,而是各有用途、互為補充的。
學習C++,既要會利用C++進行面向過程的結構化程序設計,也要會利用C++進行面向對象的程序設計,更要會利用模板進行泛型編程。
總結
- 上一篇: 三星 联通 i9502 root 未安
- 下一篇: s3c2440移植MQTT