連載:麵向對象葵花寶典:思想、技巧與實踐(2) - 麵向對象語言發展曆史
Simula
麵向對象技術最早是在編程語言Simula中提出的。1967年5月20日,在挪威奧斯陸郊外的小鎮莉沙布舉行的IFIP TC-2 工作會議上,挪威科學家Ole-Johan Dahl和Kristen Nygaard正式發布了Simula 67語言。Simula 67被認為是最早的麵向對象程序設計語言,是麵向對象的開山祖師,它引入了所有後來麵向對象程序設計語言所遵循的基礎概念:對象、類、繼承,但它的實現並不是很完整。
Simula雖然最早提出麵向對象的概念,但因為其本身複雜,比較難學,而並沒有大規模流行。但Simula提出的麵向對象的概念對程序語言後繼的發展產生了巨大和深遠的影響。
Smalltalk
Smalltalk是公認為曆史上第二個麵向對象的程序語言,而且是第一個完整實現了麵向對象技術的語言。
最早的Smalltalk原型由艾倫·凱於70年代初提出。類(來自Simula-67)、海龜繪圖(來自MIT的LOGO)以及圖形界麵等概念的有機組合,構成了Smalltalk的最初的藍圖。在1971年到1975年之間,艾倫·凱在Xerox PARC的小組設計並實現了第一個真正的Smalltalk語言係統。
Smalltalk引領了麵向對象的設計思想的思潮,對其它眾多的程序設計語言的產生起到了極大的推動作用。C++,C#,Objective-C,Actor,Java和Ruby等,無一不受到Smalltalk的影響,這些程序語言中也隨處可見Smalltalk的影子。
除了編程語言受到Smalltalk的影響外,90年代的許多軟件開發思想得利於Smalltalk,例如設計模式、敏捷編程和代碼重構等。
C++
C++是第一個大規模使用的麵向對象語言,麵向對象程序設計在80年代成為了一種主導思想,這很大程度上得益於C++的流行。而且與Simula、Smalltalk不同的是,C++到現在為止還是排名前三的編程語言,並沒有湮沒在曆史的洪流中。
C++由貝爾實驗室的Bjarne Strou-strup與1983年推出,C++進一步擴充和完善了C語言,成為一種麵向 對象的程序設計語言。
C++最開始的時候不是叫做C++,而是C with class,這是把它當作一種C語言的有效擴充。由於當時C語言在編程界居於老大的地位,要想發展一種新的語言,最強大的競爭對手就是C語言,所以當時有兩個問題最受關注:C++要在運行時間、代碼緊湊性和數據緊湊性方麵能夠與C語言相媲美,但是還要盡量避免在語言應用領域的限製。在這種情況下,一個很自然的想法就是讓C++從C語言繼承過來,但如果隻是簡單繼承的話,就不能有所突破了,因此Bjarne博士采取了拿來主義,參考了很多的語言,將它們的優點“繼承”過來了。例如:從Simula繼承了類的概念,從Algol68繼承了運算符重載、引用以及在任何地方聲明變量的能力,從BCPL獲得了//注釋,從Ada得到了模板、名字空間,從Ada、Clu和ML取來了異常。
正是因為C++兼容C,同時又具備了麵向對象的能力,使得C++能夠大行其道,廣受歡迎;然而也正是C++是一個超級大雜燴,語言本身很複雜,導致針對C++存在很多批評和爭議。有一個玩笑是說:Bjarne Strou-strup發明C++語言的時候就沒有指望任何一個程序員能夠完全掌握C++!
Java
Java是目前使用最廣的麵向對象編程語言,擁有全球最多的開發者,常年穩居開發語言排行榜第一名(偶爾和C交換一下位置)。如果說C++促進了麵向對象的流行,那麼Java就將麵向對象推上了王座。比爾蓋茨曾這樣評價“Java是很長時間以來最優秀的程序設計語言”。
Java是由Sun Microsystems公司於 1995年5月推出,由“Java之父”James Gosling和一群技術天才創造,並在1995年正式推出。最初的Java被稱為Oak —— 以Gosling辦公室外的一棵橡樹命名,後來由於商標版權問題,改名為Java —— 據說取名的靈感來自印尼爪哇島味道優美的咖啡。
Sun 公司在推出 Java 之際就將其作為一種開放的技術,並且定位於互聯網應用。因此隨著互聯網的發展和流行,加上開源運動的發展,Java逐漸成為了最流行的編程語言。
相比C++來說,Java語言是一個更加純淨、更加易用的麵向對象編程語言。Java語言的編程風格和C++比較相似,但去掉了很多C++中複雜和容易出錯的特性,例如指針,多繼承等,同時增加了垃圾回收等大大提升生產率的特性。Sun公司對Java語言的解釋是:“Java編程語言是個簡單、麵向對象、分布式、解釋性、健壯、安全與係統無關、可移植、高性能、多線程和動態的語言”,雖然有點王婆賣瓜的味道,但Java針對C++的改進,確實大大提升了生產力,降低了複雜度,客觀上也促進了Java的流行。
==============================================================
轉載請注明出處:https://blog.csdn.net/yunhua_lee/article/details/17279013
==============================================================
最後更新:2017-04-03 12:53:43