Java的由來(轉)
Java的由來(轉)[@more@]對於計算機語言的發展史,業界一般認為:B語言導致了C語言的誕生,C語言演變出了C++語言,而C++語言將讓位於Java語言。要想更好地瞭解 Java語言,就必須瞭解它產生的原因、推動它發展的動力,以及它對其他語言的繼承。像以前其他成功的計算機語言一樣,Java繼承了其他語言的先進原理,同時又因其獨特的環境要求而提出了一些創新性的概念。在這本書的其他各章中,將從實用的角度,對Java語言、庫及應用程式進行包括語法在內的詳細介紹。在本章裡,我們將介紹Java語言產生的背景、發展過程,以及使它變得如此重要的原因。
儘管Java語言已和Internet的線上環境密不可分,但首先應該注意到的最重要一點是:它是一種程式語言。計算機語言的革新和發展需要2個基本因素的驅動:
• 適應正在變化的環境和需求
• 實現程式設計藝術的完善與提高
下面你將看到,Java也正是在這兩個因素的驅動下產生的。
Java總是和C++聯絡在一起,而C++則是從C語言派生而來的,所以Java語言繼承了這兩種語言的大部分特性。Java的語法是從C繼承的,Java許多物件導向的特性受到C++的影響。事實上,Java中幾個自定義的特性都來自於或可以追溯到它的前驅。而且,Java語言的產生與過去 30年中計算機語言細緻改進和不斷髮展密切相關。基於這些原因,本節將按順序回顧促使Java產生的事件和推動力。正如你將看到的一樣,每一次語言設計的革新都是因為先前的語言不能解決目前遇到的基本問題而引起。Java也不例外。
一、現代的程式語言的誕生:C語言
C語言的產生震撼了整個計算機界。它的影響不應該被低估,因為它從根本上改變了程式設計的方法和思路。C語言的產生是人們追求結構化、高效率、高階語言的直接結果,可用它替代組合語言開發系統程式。當設計一種計算機語言時,經常要從以下幾方面進行權衡:
• 易用性與功能
• 安全性和效率性
• 穩定性和可擴充套件性
C語言出現以前,程式設計師們不得不經常在有優點但在某些方面又有欠缺的語言之間做出選擇。例如,儘管公認FORTRAN在科學計算應用方面可以編寫出相當高效的程式,但它不適於編寫系統程式。BASIC雖然容易學習,但功能不夠強大,並且談不上結構化,這使它應用到大程式的有效性受到懷疑。組合語言雖能寫出高效率的程式,但是學習或有效地使用它卻是不容易的。而且,除錯彙編程式也相當困難。
另一個複雜的問題是,早期設計的計算機語言(如BASIC,COBOL,FORTRAN等)沒有考慮結構化設計原則,使用GOTO語句作為對程式進行控制的一種主要方法。這樣做的結果是,用這些語言編寫的程式往往成了“義大利麵條式的程式程式碼”,一大堆混亂的跳轉語句和條件分支語句使得程式幾乎不可能被讀懂。Pascal雖然是結構化語言,但它的設計效率比較低,而且缺少幾個必需的特性,因而無法在大的程式設計範圍內使用(特別是,給定的Pascal 的標準語言在特定時間是可用的,但將Pascal作為系統級編碼是不切實際的)。
因此,在C語言產生以前,沒有任何一種語言能完全滿足人們的需要,但人們對這樣一種語言的需要卻是迫切的。在20世紀70年代初期,計算機革命開始了,對軟體的需求量日益增加,使用早期的計算機語言進行軟體開發根本無法滿足這種需要。學術界付出很多努力,嘗試創造一種更好的計算機語言。但是,促使 C語言誕生的另一個,也許是最重要的因素,是計算機硬體資源的富餘帶來了機遇。計算機不再像以前那樣被緊鎖在門裡,程式設計師們可以隨意使用計算機,可以隨意進行自由嘗試,因而也就有了可以開發適合自己使用的工具的機會。所以,在C語言誕生的前夕,計算機語言向前飛躍的時機已經成熟。
在Dennis Ritchie第一個發明和實現在DEC PDP-11上執行UNIX作業系統時,一種更古老的由Martin Richards設計的BCPL語言導致了C語言的產生。受BCPL語言的影響,由Ken Thompson發明的B語言,在20世紀70年代逐漸向C語言發展演變。在此後的許多年裡,由Brian Kernighan和Dennis Ritchie編寫的《The C Programming Language》(Prentice-Hall,1978)被認為是事實上的C語言標準,該書認為C只是支援UNIX 作業系統的一種語言。1989年12月,美國國家標準化組織( ANSI )制定了C語言的標準,C語言被正式標準化。
許多人認為C語言的產生標誌著現代計算機語言時代的開始。它成功地綜合處理了長期困擾早期語言的矛盾屬性。C語言是功能強大、高效的結構化語言,簡單易學,而且它還包括一個無形的方面:它是程式設計師自己的語言。在C語言出現以前,計算機語言要麼被作為學術實驗而設計,要麼由官僚委員會設計。而C語言不同。它的設計、實現、開發由真正的從事程式設計工作的程式設計師來完成,反映了現實程式設計工作的方法。它的特性經由實際運用該語言的人們不斷去提煉、測試、思考、再思考,使得C語言成為程式設計師們喜歡使用的語言。確實,C語言迅速吸引了許多狂熱的追隨者,因而很快受到許多程式設計師的青睞。簡言之,C語言是由程式設計師設計並由他們使用的一種語言。正如你將看到的,Java繼承了這個思想。
二、對C++的需要
在20世紀70年代末和80年代初,C成為了主流的計算機程式語言,至今仍被廣泛使用。你也許會問,既然C是一種成功且有用的語言,為什麼還需要新的計算機語言?答案是複雜性(complexity)。程式越來越複雜這一事實貫穿程式語言的歷史。C++正是適應了這一需求。下面介紹為什麼對程式複雜性的更好管理是C++產生的基本條件。
自從計算機發明以來,程式設計方法經歷了戲劇性的變化。例如,當計算機剛發明出來時,程式設計是透過皮膚觸發器用人工打孔的辦法輸入二進位制機器指令來實現的。對於只有幾百行的程式,這種辦法是可行的。隨著程式不斷增大,人們發明了組合語言,它透過使用符號來代替機器指令,這樣程式設計師就能處理更大、更復雜的程式。隨著程式的進一步增大,高階語言產生了,它給程式設計師提供了更多的工具來處理複雜性問題。
第一個被廣泛使用的高階語言當然是FORTRAN。儘管FORTRAN最初給人留下了深刻的印象,但它無法開發出條理清楚易於理解的程式。20世紀60年代提出了結構化程式設計方法。這種結構化的程式設計思想被像C這樣的語言所應用,第一次使程式設計師可以相對輕鬆地編寫適度複雜的程式。然而,當一個工程專案達到一定規模後,即使使用結構化程式設計方法,程式設計人員也無法對它的複雜性進行有效管理。20世紀80年代初期,許多工程專案的複雜性都超過了結構化方法的極限。為解決這個問題,物件導向程式設計(object-oriented programming,OOP)新方法誕生了。物件導向的程式設計在這本書的後面詳細討論,但在這裡給出一個簡短的定義:物件導向的程式設計是透過使用繼承性、封裝性和多型性來幫助組織複雜程式的程式設計方法。
總之,儘管C是世界上偉大的程式語言之一,但它處理複雜性的能力有限。一旦一個程式的程式碼超過25 000~100 000行,就很難從總體上把握它的複雜性了。C++突破了這個限制,幫助程式設計師理解並且管理更大的程式。
1979年,當Bjarne Stroustrup在新澤西州的Murray Hill實驗室工作時,發明了C++。Stroustrup 最初把這種新語言稱為“帶類的C”。1983年,改名為C++。C++透過增加物件導向的特性擴充了C。因為C++產生在C的基礎之上,因此它包括了C所有的特徵、屬性和優點。這是C++作為語言成功的一個關鍵原因。C++的發明不是企圖創造一種全新的程式語言,而是對一個已經高度成功的語言的改進。C+ +在1997年11月被標準化,目前的標準是ANSI/ISO。
三、Java出現的時機已經到來
在20世紀80年代末和90年代初,使用物件導向程式設計的C++語言占主導地位。的確,有一段時間程式設計師似乎都認為已經找到了一種完美的語言。因為 C++有物件導向的特徵,又有C語言高效和格式上的優點,因此它是一種可以被廣泛應用的程式語言。然而,就像過去一樣,推動計算機語言進化的力量正在醞釀。在隨後的幾年裡,全球資訊網(WWW)和Internet達到臨界狀態。這個事件促成程式設計的另一場革命。
儘管Java語言已和Internet的線上環境密不可分,但首先應該注意到的最重要一點是:它是一種程式語言。計算機語言的革新和發展需要2個基本因素的驅動:
• 適應正在變化的環境和需求
• 實現程式設計藝術的完善與提高
下面你將看到,Java也正是在這兩個因素的驅動下產生的。
Java總是和C++聯絡在一起,而C++則是從C語言派生而來的,所以Java語言繼承了這兩種語言的大部分特性。Java的語法是從C繼承的,Java許多物件導向的特性受到C++的影響。事實上,Java中幾個自定義的特性都來自於或可以追溯到它的前驅。而且,Java語言的產生與過去 30年中計算機語言細緻改進和不斷髮展密切相關。基於這些原因,本節將按順序回顧促使Java產生的事件和推動力。正如你將看到的一樣,每一次語言設計的革新都是因為先前的語言不能解決目前遇到的基本問題而引起。Java也不例外。
一、現代的程式語言的誕生:C語言
C語言的產生震撼了整個計算機界。它的影響不應該被低估,因為它從根本上改變了程式設計的方法和思路。C語言的產生是人們追求結構化、高效率、高階語言的直接結果,可用它替代組合語言開發系統程式。當設計一種計算機語言時,經常要從以下幾方面進行權衡:
• 易用性與功能
• 安全性和效率性
• 穩定性和可擴充套件性
C語言出現以前,程式設計師們不得不經常在有優點但在某些方面又有欠缺的語言之間做出選擇。例如,儘管公認FORTRAN在科學計算應用方面可以編寫出相當高效的程式,但它不適於編寫系統程式。BASIC雖然容易學習,但功能不夠強大,並且談不上結構化,這使它應用到大程式的有效性受到懷疑。組合語言雖能寫出高效率的程式,但是學習或有效地使用它卻是不容易的。而且,除錯彙編程式也相當困難。
另一個複雜的問題是,早期設計的計算機語言(如BASIC,COBOL,FORTRAN等)沒有考慮結構化設計原則,使用GOTO語句作為對程式進行控制的一種主要方法。這樣做的結果是,用這些語言編寫的程式往往成了“義大利麵條式的程式程式碼”,一大堆混亂的跳轉語句和條件分支語句使得程式幾乎不可能被讀懂。Pascal雖然是結構化語言,但它的設計效率比較低,而且缺少幾個必需的特性,因而無法在大的程式設計範圍內使用(特別是,給定的Pascal 的標準語言在特定時間是可用的,但將Pascal作為系統級編碼是不切實際的)。
因此,在C語言產生以前,沒有任何一種語言能完全滿足人們的需要,但人們對這樣一種語言的需要卻是迫切的。在20世紀70年代初期,計算機革命開始了,對軟體的需求量日益增加,使用早期的計算機語言進行軟體開發根本無法滿足這種需要。學術界付出很多努力,嘗試創造一種更好的計算機語言。但是,促使 C語言誕生的另一個,也許是最重要的因素,是計算機硬體資源的富餘帶來了機遇。計算機不再像以前那樣被緊鎖在門裡,程式設計師們可以隨意使用計算機,可以隨意進行自由嘗試,因而也就有了可以開發適合自己使用的工具的機會。所以,在C語言誕生的前夕,計算機語言向前飛躍的時機已經成熟。
在Dennis Ritchie第一個發明和實現在DEC PDP-11上執行UNIX作業系統時,一種更古老的由Martin Richards設計的BCPL語言導致了C語言的產生。受BCPL語言的影響,由Ken Thompson發明的B語言,在20世紀70年代逐漸向C語言發展演變。在此後的許多年裡,由Brian Kernighan和Dennis Ritchie編寫的《The C Programming Language》(Prentice-Hall,1978)被認為是事實上的C語言標準,該書認為C只是支援UNIX 作業系統的一種語言。1989年12月,美國國家標準化組織( ANSI )制定了C語言的標準,C語言被正式標準化。
許多人認為C語言的產生標誌著現代計算機語言時代的開始。它成功地綜合處理了長期困擾早期語言的矛盾屬性。C語言是功能強大、高效的結構化語言,簡單易學,而且它還包括一個無形的方面:它是程式設計師自己的語言。在C語言出現以前,計算機語言要麼被作為學術實驗而設計,要麼由官僚委員會設計。而C語言不同。它的設計、實現、開發由真正的從事程式設計工作的程式設計師來完成,反映了現實程式設計工作的方法。它的特性經由實際運用該語言的人們不斷去提煉、測試、思考、再思考,使得C語言成為程式設計師們喜歡使用的語言。確實,C語言迅速吸引了許多狂熱的追隨者,因而很快受到許多程式設計師的青睞。簡言之,C語言是由程式設計師設計並由他們使用的一種語言。正如你將看到的,Java繼承了這個思想。
二、對C++的需要
在20世紀70年代末和80年代初,C成為了主流的計算機程式語言,至今仍被廣泛使用。你也許會問,既然C是一種成功且有用的語言,為什麼還需要新的計算機語言?答案是複雜性(complexity)。程式越來越複雜這一事實貫穿程式語言的歷史。C++正是適應了這一需求。下面介紹為什麼對程式複雜性的更好管理是C++產生的基本條件。
自從計算機發明以來,程式設計方法經歷了戲劇性的變化。例如,當計算機剛發明出來時,程式設計是透過皮膚觸發器用人工打孔的辦法輸入二進位制機器指令來實現的。對於只有幾百行的程式,這種辦法是可行的。隨著程式不斷增大,人們發明了組合語言,它透過使用符號來代替機器指令,這樣程式設計師就能處理更大、更復雜的程式。隨著程式的進一步增大,高階語言產生了,它給程式設計師提供了更多的工具來處理複雜性問題。
第一個被廣泛使用的高階語言當然是FORTRAN。儘管FORTRAN最初給人留下了深刻的印象,但它無法開發出條理清楚易於理解的程式。20世紀60年代提出了結構化程式設計方法。這種結構化的程式設計思想被像C這樣的語言所應用,第一次使程式設計師可以相對輕鬆地編寫適度複雜的程式。然而,當一個工程專案達到一定規模後,即使使用結構化程式設計方法,程式設計人員也無法對它的複雜性進行有效管理。20世紀80年代初期,許多工程專案的複雜性都超過了結構化方法的極限。為解決這個問題,物件導向程式設計(object-oriented programming,OOP)新方法誕生了。物件導向的程式設計在這本書的後面詳細討論,但在這裡給出一個簡短的定義:物件導向的程式設計是透過使用繼承性、封裝性和多型性來幫助組織複雜程式的程式設計方法。
總之,儘管C是世界上偉大的程式語言之一,但它處理複雜性的能力有限。一旦一個程式的程式碼超過25 000~100 000行,就很難從總體上把握它的複雜性了。C++突破了這個限制,幫助程式設計師理解並且管理更大的程式。
1979年,當Bjarne Stroustrup在新澤西州的Murray Hill實驗室工作時,發明了C++。Stroustrup 最初把這種新語言稱為“帶類的C”。1983年,改名為C++。C++透過增加物件導向的特性擴充了C。因為C++產生在C的基礎之上,因此它包括了C所有的特徵、屬性和優點。這是C++作為語言成功的一個關鍵原因。C++的發明不是企圖創造一種全新的程式語言,而是對一個已經高度成功的語言的改進。C+ +在1997年11月被標準化,目前的標準是ANSI/ISO。
三、Java出現的時機已經到來
在20世紀80年代末和90年代初,使用物件導向程式設計的C++語言占主導地位。的確,有一段時間程式設計師似乎都認為已經找到了一種完美的語言。因為 C++有物件導向的特徵,又有C語言高效和格式上的優點,因此它是一種可以被廣泛應用的程式語言。然而,就像過去一樣,推動計算機語言進化的力量正在醞釀。在隨後的幾年裡,全球資訊網(WWW)和Internet達到臨界狀態。這個事件促成程式設計的另一場革命。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-958073/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 未來的方向:由 Java 到 Kotlin 轉變JavaKotlin
- WebAssembly 的由來Web
- JVM的Eden由來JVM
- WebSocket的故事(一)—— WebSocket的由來Web
- AI來實現程式碼轉換!Python轉Java,Java轉Go不在話下?AIPythonJavaGo
- 連結器 ld 名稱的由來
- 建築師——由來已久的夢想
- 由Nodejs來說I/ONodeJS
- java由於越界導致的報錯Java
- 人的由來_人的起源_什麼是人?
- Java併發程式設計之執行緒篇之執行緒的由來(一)Java程式設計執行緒
- 探究Android View 繪製流程,Canvas 的由來AndroidViewCanvas
- HTTP 200 OK和HTTP 304 Not modified的由來HTTP
- 分割模型的資料集由json轉為txt模型JSON
- 由磁場和光碟機動的軟體機器人來了,旋轉跳躍不停歇~機器人
- Smartbi電子表格軟體產品的由來
- 遊戲付費制度的由來與過往遊戲
- WPF:MVVM的由來與屬性繫結的過程MVVM
- 移動端動態化的由來,你知道嗎?
- Java:HashMap原理與設計緣由JavaHashMap
- 專案管理辦公室 (PMO) 由來專案管理
- 【技術分享】FMEA到底由誰來做?
- 【譯】談談“typeof null為object”這一bug的由來NullObject
- 由 GraphQL 來思考如何做一個好的 API DesignAPI
- 由一張圖來理解javascript中的原型和原型鏈JavaScript原型
- AI實戰 | 由淺入深,手把手帶你實現Java轉型學習助手AIJava
- 將檔案的行結束符由 CRLF 轉換為 LF
- 由實現web動畫到產生轉行的念頭Web動畫
- 梅斯健康赴港IPO:七成收入來自營銷,去年由盈轉虧超1.5億
- 由淺入深的來聊聊Golang中select的實現機制Golang
- 關於Linux你瞭解多少?Linux由來Linux
- 關於Linux你瞭解多少?Linux由來!Linux
- 消細轉強容往由子性土pla
- Android路由框架AnnoRouter:使用Java介面來定義路由跳轉Android路由框架Java
- 由盈轉虧!金山股份前三季淨利潤預虧9.4億,未來出路在何方?
- 我的 Java 轉 Go 之路JavaGo
- C#由轉換二進位制所引起的思考,瞭解下?C#
- 【細品架構10/100】架構由術至道的轉變(1)架構
- 【細品架構11/100】架構由術至道的轉變(2)架構