- 高質量程序設計指南:C++/C語言
- 林銳 韓永泉編著
- 1079字
- 2019-01-09 14:08:56
2.3 C/C++發(fā)展簡史
C語言由貝爾實驗室的Dennis Ritchie從兩個早期語言BCPL和B發(fā)展而來,并于1972年在DEC PDP-11型機上實現。C語言最強大之處在于提供靈活的數據類型和硬件操作能力(位操作能力),因此被廣泛用做操作系統(tǒng)軟件和設備驅動程序設計的首選語言。UNIX操作系統(tǒng)就是使用C語言開發(fā)的第一個大型軟件系統(tǒng)。實際上,現在的大多數操作系統(tǒng)都是用C/C++語言實現的。C語言與硬件無關,因此經過認真的設計,程序員編寫出的程序可以移植到大多數不同的硬件平臺上。
隨著C語言的廣泛應用,出現了許多不兼容的版本,這對于C的可移植性來說是一個非常嚴重的問題。1983年,ANSI開始組織C的標準化工作。1989年,ANSI C語言標準正式頒布。此后,ANSI與ISO合作在全世界范圍內對C語言進行標準化和推廣。1990年,標準文檔出版,ANSI/ISO C正式誕生。C語言的最新情況是:1999年,ISO批準了一個新的C語言版本,即C99。
1979年,貝爾實驗室的一個年輕工程師Bjarne Stroustrup為了使C語言成為一種更好的實現大型軟件工程的編程語言而展開了實驗,實驗的內容就是對C進行擴展。那時,一般項目都需要十幾萬行的代碼。現在,光是Windows 2000(前身是NT 5.0)就有3000多萬行代碼。當軟件規(guī)模超過了100000行代碼的時候,C語言的缺陷達到了讓人無法忍受的地步。
最初對C的擴展就是給它增加類的概念,從而產生了“帶類的C”,它可以很好地支持封裝和信息隱藏。1983年,又對帶類的C做了幾處修改和擴展,于是“C++”這個名字產生了。
Bjarne Stroustrup是C++的鼻祖,受到無數程序員的敬仰。按中國人的說法,Bjarne果真是聰明絕頂。當初他要是把“++”注冊了專利,不僅可以發(fā)一筆大財,而且也不會導致現在“++”滿天飛。
1985至1989年間,C++經歷了最主要的革新:相繼增加了保護成員、保護繼承、模板,以及有爭議的多重繼承等特性。C++到了需要標準化的時候。
C++的標準化不同于C的標準化,它從一開始就是國際性的合作。ANSI C委員會使用Kernighan和Ritchie寫的《The C Programming Language》作為起點,而ANSI C++委員會使用Ellis和Bjarne寫的《Annotated C++ Reference Manual (ARM)》作為基礎文檔。1998年,在做了一些次要的修改后,ANSI/ISO C++產生了。C++的國際性工作使得該標準在世界范圍內被廣泛接受。
關于C++的設計和演化,在Bjarne Stroustrup的著作《The Design and Evolution of C++》中有詳細的敘述,其中總結了C++的一些設計原則:
? C++的每一步演化和發(fā)展必須是由于實際問題所引起的。
? C++是一門編程語言,而不是一個完整的系統(tǒng)。
? 不能無休止地一味追求完美。
? C++在其存在的“當時”必須是有用處的。
? 每一種語言特性必須有明確的實現方案。
? 總能提供一種變通的方法。
? 不強制于人。
……
從一開始,C++面向的就是那些從事軟件開發(fā)工作的程序員。所謂的“完美”被認為是不可能達到的。在C++語言的演化過程中,來自用戶的反饋和語言實現者們積累的經驗是最為重要的。
- HTML5+CSS3王者歸來
- The DevOps 2.3 Toolkit
- Learn Type:Driven Development
- Software Testing using Visual Studio 2012
- Python自動化運維快速入門
- Oracle 12c中文版數據庫管理、應用與開發(fā)實踐教程 (清華電腦學堂)
- Learning Informatica PowerCenter 10.x(Second Edition)
- C#程序設計
- SSM開發(fā)實戰(zhàn)教程(Spring+Spring MVC+MyBatis)
- App Inventor 2 Essentials
- 金融商業(yè)數據分析:基于Python和SAS
- JavaScript前端開發(fā)基礎教程
- 例說FPGA:可直接用于工程項目的第一手經驗
- JavaScript Unit Testing
- 深度學習:基于Python語言和TensorFlow平臺(視頻講解版)