1. 程式人生 > >程式語言歷史

程式語言歷史

             
         C語言發展史
 
1、第一個程式語言比現代的計算機還早誕生。首先,這種語言是種編碼(en:code)。於1801年發明的提花織布機(或稱甲卡提花織布機,英文:en:Jacquard loom),運用打孔卡上的坑洞來代表縫紉織布機的手臂動作,以便自動化產生裝飾的圖案。
 
Ada Lovelace在1842年至1843年間花費了九個月,將義大利數學家Luigi Menabrea關於查爾斯•巴貝奇新發表機器分析機的回憶錄翻譯完成。她於那篇文章後面附加了一個用分析機計算伯努利數方法的細節,被部分歷史學家認為是世界上第一個電腦程式。
 
Herman Hollerith在觀察列車長對乘客票根在特定位置打洞的方式後,意識到他可以把資訊編碼記載到打孔卡上,隨後根據這項發現使用打孔卡來編碼並紀錄1890年的人口統計資料。
 
第一個計算機程式碼是針對他們的應用面設計的。在20世紀的前十年主要是用十進位制來算數,後來人們發現不只是用文字,也可以用數字來表現邏輯。舉例來說,阿隆佐•邱奇曾以公式化(formulaic)的方式表達λ演算。圖靈機是一種紙帶標記(tape-marking)機器(就像電話公司用的那種)操作方法抽象化後的集合。圖靈機這種透過有限數字(finite number)呈現機器的方式,奠定了程式如同馮•諾伊曼結構計算機中的資料一樣地儲存的基礎。但不同於λ演算,圖靈機的程式碼並沒有辦法成為高階程式語言的基石,這是是因為它主要的用途是分析演算法的複雜度。
 
 
 
就像許多歷史上的"第一次"一樣,第一個現代程式語言也很難界定。最一開始是因為硬體限制而限定了語言,打孔卡允許80行(column)的長度,但某幾行必須用來記錄卡片的順序。FORTRAN則納入了一些與英文字詞相同的關鍵字,像是"IF"、"GOTO"(原字詞為go to),以及"CONTINUE"。之後採用磁鼓(magnetic drum)作為記憶體使用,也代表計算機程式也必須插入(interleave)到磁鼓的轉動(rotation)中。和現今比較起來,這也讓程式語言必須更加依賴硬體(hardware-dependent)。
 
 
 
對部分的人認為必須在"程式語言"的狀態確立之前,根據能力(power)以及可讀性(human-readability)的程度來決定歷史上第一個程式語言是什麼語言。提花織布機和查爾斯•巴貝奇所製作的差分機(en:Difference Engine)都具備在大量限制下,簡單描述機器應執行行為的語言。也有種並非設計給人類運用的受限特定領域語言(en:domain-specific language),是將打孔卡運用到自動演奏鋼琴(en:player piano)上。
 
2、ALGOL,為“演算法語言”(ALGOrithmic Language)的縮寫,是計算機發展史上首批產生的高階程式語言家族。ALGOL語言並沒有被廣泛的使用,但它是許多現代程式語言的概念基礎。
 
Algol 58:1958年,ACM小組和以當時聯邦德國的應用數學和力學協會GAMM在蘇黎世把他們關於演算法表示法的建議綜合為一,形成了Algol 58,先被命名為IAL(國際代語言,International Algebraic Language),後來改稱Algol 58。
 
Algol 60:1960年1月,圖靈獎獲得者:艾倫•佩利在巴黎舉行的有全世界一流軟體專家參加的討論會上,發表了"演算法語言Algol 60報告",確定了程式設計語言Algol 60。Algol60語言的第一個編譯器由艾茲赫爾•戴克斯特拉來實現。1962年,艾倫。佩利又對Algol 60進行了修正。
 
Algol 60引進了許多新的概念如:區域性性概念、動態、遞迴、巴科斯-諾爾正規化BNF(Backus-Naur Form)等等。Algol 60是程式設計語言發展史上的一個里程碑,它標誌著程式設計語言成為一門獨立的科學學科,併為後來軟體自動化及軟體可靠性的發展奠定了基礎。
 
Algol 68:Algol W:1966年,IFIP吸收尼克勞斯•維爾特參加對Algol語言進行完善與擴充的工作小組。沃思參加進去以後,提交了一份建議書並由東尼•霍爾等人修改、完善以後形成Algol W。Algol 68一些較少被使用到的語言功能(如同步與並列區塊)、語法捷徑的複雜系統,以及型態自動強制轉換(coercions),使得實作者興趣缺缺,也讓Algol 68獲得了很難用(diffcult)的名聲。尼克勞斯•維爾特就乾脆離開該設計委員會,另外在開發出更簡單的Pascal語言。
 
1.CPL(英語:Combined Programming Language,原名Cambridge Programming Language)在1963年,由英國的劍橋大學和倫敦大學首先開發出來。CPL語言在ALGOL 60的基礎上更接近硬體一些,但規模比較大,難以實現。
 
3、BCPL(Basic Combined Programming Language),源自CPL語言,1966年由劍橋大學的馬丁•理察德(Martin Richards)所發展出來的。
 
Richards試著移除了CPL中最複雜的組成,第一支BCPL compiler在IBM 7094電腦中完成。
 
身為早期程式語言的BCPL,如今已不再廣泛使用,但它的影響卻是深遠的,BCPL是第一支使用括號語言,括號特徵在C語言中隨處可見。BCPL程式從一個主函式中開始,功能模組可以新增在各個函式中,函式支援巢狀和遞迴。
 
4、B語言於1969年前後由美國貝爾實驗室的電腦科學家肯•湯普森(Ken Thompson)在丹尼斯•利奇(Dennis Ritchie)的支援下設計出來。
 
B語言是從BCPL系統中刪減了湯姆森認為非必備的元件以便能執行在當時的小型計算機上而產生的。B語言還包括了湯姆森的一些個人偏好(主要在一些特定的程式中減少非空格字元的數量)。B語言只有一種資料型別,計算機字。大部分操作將其作為整數對待(例如進行+、-、*、/操作),但其餘操作將其作為一個復引用的記憶體地址。B語言包括了一些庫函式。
 
20世紀60年代,美國AT&T公司貝爾實驗室(AT&T Bell Laboratory)的研究員Ken Thompson閒來無事,手癢難耐,想玩一個他自己編的,模擬在太陽系航行的電子遊戲—Space Travel。他揹著老闆,找到了臺空閒的機器—PDP-7。但這臺機器沒有作業系統,而遊戲必須使用作業系統的一些功能,於是他著手為PDP-7開發作業系統。後來,這個作業系統被命名為—UNIX。
 
1970年,美國貝爾實驗室的Ken Thompson,以BCPL語言為基礎,設計出很簡單且很接近硬體的B語言(取BCPL的首字母)。並且他用B語言寫了第一個UNIX作業系統。
 
1971年,同樣酷愛Space Travel的Dennis M.Ritchie為了能早點兒玩上游戲,加入了Thompson的開發專案,合作開發UNIX。他的主要工作是改造B語言,使其更成熟。
 
5、1972年美國貝爾實驗室的D.M.Ritchie丹尼斯•利奇 在B語言的基礎上最終設計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。
 
1973年初,C語言的主體完成。Thompson和Ritchie迫不及待地開始用它完全重寫了UNIX。此時,程式設計的樂趣使他們已經完全忘記了那個"Space Travel",一門心思地投入到了UNIX和C語言的開發中。
 
1977年,Dennis M.Ritchie發表了不依賴於具體機器系統的C語言編譯文字《可移植的C語言編譯程式》。
 
1978年由美國電話電報公司(AT&T)貝爾實驗室正式發表了C語言。布萊恩• 柯林漢(Brian Kernighan) 和 丹尼斯•裡奇(Dennis Ritchie) 出版了一本書,名叫《The C Programming Language》《C程式設計語言》。這本書被C語言開發者們稱為"K&R",很多年來被當作C語言的非正式的標準說明。人們稱這個版本的C語言為K&R C。
 
6、1982年,成立C標準委員會,建立C語言的標準。委員會由硬體廠商,編譯器及其他軟體工具生產商,軟體設計師,顧問,學術界人士,C語言作者和應用程式設計師組成。
 
1983年美國國家標準局 (American National Standards Institute,簡稱ANSI)成立了一個委員會。
 
1989年C語言標準被批准,被稱為ANSI X3.159-1989 "Programming Language C",俗稱ANSI C或C89標準。
 
1990年,國際標準化組織ISO(International Organization for Standards)接受了1989年的ANSI C為ISO C 的標準,命名為ISO/IEC 9899:1990,簡稱C90標準。不過習慣上仍然叫C89標準。
 
1994年,ISO修訂了C語言的標準。
 
1995年,ISO對C90做了一些修訂,即“1995基準增補1(ISO/IEC/9899/AMD1:1995)”。在ANSI標準化後,C語言的標準在一段相當的時間內都保持不變,儘管C繼續在改進。
 
1999年ISO 9899:1999的發表。它通常被稱為C99。C99被ANSI於2000年3月採用。
 
2011年12月8日,ISO正式釋出了新的C語言的新標準C11,之前被稱為C1X,官方名稱為ISO/IEC 9899:2011。新的標準提高了對C++的相容性,並增加了一些新的特性。

 

Java語言發展簡史 JAVA 語言歷史近二十年, 已發展成為人類計算機史上影響深遠的程式語言. JAVA 語言是一門非常純粹的面向物件程式語言, 它吸收了 C++ 語言的各種優點, 又摒棄了 C++ 裡難以理解的多繼承、指標等概念, 因此 JAVA 語言具有功能強大和簡單易用兩個特徵. Sun 公司在 1995年年初發布了 JAVA 語言, 同時放到了網際網路上, 免費給大家使用. 甚至連原始碼也不保密, 對所有人公開. (這就是所謂的開源) 之後吸引了大批的程式設計師使用JAVA語言開發出了各種小動畫、小遊戲等.Sun公司雖然推出了 JAVA , 但這只是一種語言, 如果想要開發複雜的應用程式, 必須要有一個強大的開發類庫. 因此, Sun 在 1996年年初發布了 JDK 1.0 這個版本包括兩部分: 執行環境(即 JRE) 和 開發環境(即JDK)  執行環境包括核心 API 、 整合 API 、 使用者介面 API 、 釋出技術 、 JAVA虛擬機器(JVM) 5個部分. 開發環境包括編譯 JAVA 程式的編譯器 (即 javac 命令)
  1995年5月23日,Java語言誕生;
1996年1月,第一個JDK-JDK1.0誕生;
1996年4月,10個最主要的作業系統供應商申明將在其產品中嵌入Java技術;
1996年9月,約8.3萬個網頁應用了Java技術來製作;
1997年2月18日,JDK1.1釋出;
1997年4月2日,JavaOne會議召開,參與者逾一萬人,創當時全球同類會議紀錄;
1997年9月,JavaDeveloperConnection社群成員超過十萬;
1998年2月,JDK1.1被下載超過2,000,000次;
1998年12月8日,Java 2企業平臺J2EE釋出;
2001年6月5日,Nokia宣佈到2003年將出售1億部支援Java的手機;
2001年9月24日,J2EE1.3釋出; 
2002年2月26日,J2SE1.4釋出,此後Java的計算能力有了大幅提升;
2004年9月30日,J2SE1.5釋出,成為Java語言發展史上的又一里程碑。為了表示該版本的重要性,J2SE1.5更名為Java SE 5.0;
2005年6月,JavaOne大會召開,SUN公司公開Java SE 6。此時,Java的各種版本已經更名,以取消其中的數字“2”: 
J2EE更名為Java EE,J2SE更名為Java SE,J2ME更名為Java ME;
2009年12月,SUN公司釋出Java EE 6;
2010年11月,由於甲骨文對Java社群的不友善,因此Apache揚言將退出JCP;
2011年7月28日,甲骨文釋出Java SE 7;
2014年3月18日,甲骨文發表Java SE 8。 Java三個版本
J2SE:  JSE 指標準版一般用於使用者學習JAVA語言的基礎也是使用其他兩個版本的基礎主要用於編寫C/S專案和提供標準的JAVA類庫,是所有基於Java語言開發的基礎,該版本主要用於開發桌面應用程式。
J2ME: JME 指移動版為小型移動器械搭建使用平臺主要是用來為手機程式設計,製作手機相關軟體的 三個版本一個是做C/S專案如QQ 一個是做網站如163 一個是做手機系統如大部分手機的小遊戲 ,是針對移動裝置,嵌入式系統的開發
J2EE:  JEE 指企業版依託互連網技術提供企業級平臺應用說白了就是用來構建大型網站和B/S系統 ,作為一個企業版本,主要是給出一個開發企業級應用架構的解決方案,同時給出了在這個架構中相關元件以供開發人員使用,例如我們連線資料庫所用的JDBC。 Java三類API
核心API: 基本API, JAVA核心類庫.
可選API: Sun公司為JDK提供的擴充API, 這些API因平臺的不同而不同.
特殊API: 用於滿足特殊要求的API. 如用於JCA和JCE的第三方加密類庫.