1. 程式人生 > >History of program (language).

History of program (language).

1 程式語言的發展歷程及未來趨勢

1.1 程式語言的發展

· 1946 Plankalkul 
    Konrad Zuse,一位德國工程師,他躲藏在巴伐利亞附近的阿爾卑斯山上時,獨立開發了Plankalkul。他把該項成果應用在其它的事物中,比如國際象棋。

 

· 1949 Short Code

    第一種真正在電子裝置上使用的計算機語言,儘管它是一個純手工編譯的語言。

 

· 1951 Grace Hopper 

    Grace Hopper為Remington Rand工作,是在第一個著名的編譯器——A-o上開始設計工作。當Rand在1957年釋出這個詞語時,它被稱為MATH-MATIC

 

· 1952 AUTOCODE

    Alick E. Glennie ,他利用自己在曼徹斯特大學的課餘時間,發明了一個名為AUTOCODE的程式設計系統,一個未能成型的編譯器。    · 1954 Fortran

    FORTRAN(FORmula TRANslator的縮寫)意為“公式翻譯器”,是世界上最早出現的計算機高階程式設計語言,廣泛應用於科學和工程計算領域。FORTRAN語言以其   特有的功能在數值、科學和工程計算領域發揮著重要作用。

 

· 1958 LISP
    LISP語言(全名LISt Processor,即連結串列處理語言)由約翰·麥卡錫在1960年左右創造的一種基於λ演算的函數語言程式設計語言。
  · 1959 Cobol
    COBOL(Common Business Oriented Language)是資料處理領域最為廣泛的程式設計語言,是第一個廣泛使用的高階程式語言。主要應用於數值計算並不復   雜,但資料處理資訊量卻很大的商業領域。

· 1962 Simula
    Simula 67被認為是最早的面向物件程式設計語言,它引入了所有後來面向物件程式設計語言所遵循的基礎概念:物件、類、繼承。
· 1964 Basic
    BASIC(Beginners’ All-purpose Symbolic Instruction Code)的意思就是“初學者的全方位符號指令程式碼”,是一種設計給初學者使用的程式設計語     言。BASIC是一種解釋語言,在完成編寫後不須經過編譯及連結即可執行,但如果要單獨執行仍然需要編譯成可執行檔案。
· 1968 Pascal
    Pascal語言語法嚴謹,層次分明,程式易寫,具有很強的
  可讀性,是第一個結構化的程式語言。Pascal的取名是為了紀念十七世紀法國著名哲學家和數學家Blaise Pascal,它由瑞士Niklaus Wirth教授於六十年代末設計   並創立。
· 1969 C
    C語言既具有高階語言的特點,又具有組合語言的特點,由美國貝爾研究所的D.M.Ritchie於1972年推出。1978後,C語言已先後被移植到大、中、小及微型機上。   · 1975 SQL
    SQL(Structured Query Language,結構化查詢語言)是一種資料庫查詢和程式設計語言,用於存取資料以及查詢、更新和管理關係資料庫系統。
· 1983 C++
    C++是一種靜態資料型別檢查的、支援多重程式設計正規化的通用程式設計語言。它支援過程化程式設計、資料抽象、面向物件程式設計、泛型程式設計等多種程式設   計風格。
· 1987 Perl
    Perl象C一樣強大,象awk、sed等指令碼描述語言一樣方便。
    Perl借取了C、sed、awk、shell scripting以及很多其他程式語言的特性。其中最重要的特性是它內部集成了正則表示式的功能,以及巨大的第三方程式碼庫     CPAN。     Perl最初的設計者是拉里·沃爾(Larry Wall),發表於1987年12月18日。
· 1991  Python
    Python是一種面向物件、直譯式計算機程式設計語言,由Guido van Rossum於1989年底發明,第一個公開發行版發行於1991年。Python是一種代表簡單主義思   想的語言。閱讀一個良好的Python程式就感覺像是在讀英語一樣。它使你能夠專注於解決問題而不是去搞明白語言本身。
· 1995  Java     Java是一種簡單的,面向物件的,分散式的,解釋的,健壯的,安全的,結構的中立的,可移植的,效能很優異的多執行緒的,動態的語言。
  是由Sun Microsystems公司於1995年5月推出的Java程式設計語言和Java平臺(即JavaSE, JavaEE, JavaME)的總稱。在Java 出現以前。Internet上的資訊內   容都是一些乏味死板的HTML文件。
    這對於那些迷戀於WEB瀏覽的人們來說簡直不可容忍。他們迫切希望能在WEB中看到一些互動式的內容,開發人員也極希望能夠在WEB上建立一類無需考慮軟硬體平   臺就可以執行的應用程式,當然這些程式還要有極大的安全保障。對於使用者的這種要求,傳統的程式語言顯得無能為力,而SUN的工程師敏銳地察覺到了這一點,從1994   年起,他們開始將OAK技術應用於WEB上,並且開發出了HotJava的第一個版本。
· 1995 JavaScript
    JavaScript是一種能讓你的網頁更加生動活潑的程式語言,也是目前網頁中設計中最容易學又最方便的語言。   · 2001 C#
    C#(C Sharp)是微軟為.NET框架量身訂做的程式語言,C#擁有C/C++的強大功能以及Visual Basic簡易使用的特性,是第一個元件導向的程式語言,與C++和Java   同樣是面向物件程式設計語言。
· 2002 .Net
    .NET 是 Microsoft XML Web服務平臺。XML Web服務允許應用程式通過Internet進行通訊和共享資料,而不管所採用的是哪種作業系統、裝置或程式設計語   言。
· 2005 Ruby On Rails
    Ruby on Rails是一個可以使你開發、部署、維護web應用程式變得簡單的框架,Ruby以7月的誕生石ruby(紅寶石)命名。
· 2009 Node.JS
    Node是一個伺服器端 JavaScript 直譯器,它改變了伺服器應該如何工作的概念。它的目標是幫助程式設計師構建高度可伸縮的應用程式,編寫能夠處理數萬條同   時連線到一臺物理機的連線程式碼。當1995年SUN推出Java語言之後,全世界的目光都被這個神奇的語言所吸引。  

1.2 程式語言的發展趨勢

 

      “首先,程式語言的發展非常緩慢。期間當然出現了一些東西,例如面向物件等等,但是遠沒有好上1000倍。另一方面,你可能會想,那麼這些努力都到哪裡去了呢?事實上這些努力沒有體現在程式語言上,而是出現在框架及工具等方面了。如果你關注如今我們使用的框架,它們的體積的確有1000倍的增長。與此類似,如果你觀察現在的IDE,我們現在已經有了無數強大的功能,例如語法提示,重構,偵錯程式,探測器等等,這方面的新東西有很多。與此相比,程式語言的改進的確很不明顯。”
   幾十年來,硬體效能按成千上萬倍的規模增長,軟體工具與框架也有數倍乃至十數的增長,強調這一點,我們不難識別網上的程式語言之爭,有些確屬“愚忠”之舉,如果我們把程式語言自身與它所依賴(或由它拓展的)執行環境區分開來,什麼都是浮雲,剩下的其實主要是平臺路線之爭,都與具體應用相關,大家不甚著調的鬧個熱火朝天。當然,語言之間區別還是存在的,像C語言面向過程,C++面向物件,面向物件自然比面向過程更加人性,但這是顯而易見的,無關語言優劣。
   原本的程式語言分類方式也要有所改變了。以前我們經常說面嚮物件語言,動態語言或是函式式語言。但是我們現在發現,這些邊界變得越來越模糊,經常會互相學習各自的正規化。靜態語言中出現了動態型別,動態語言裡也出現了靜態能力,而如今所有主要的程式語言都受到函式式語言的影響。因此,一個越來越明顯的趨勢是多正規化程式設計語言。
   C#、java、Go等語言的發展軌跡,我們明顯看到這種趨勢。CSE也是這種趨勢的典型代表,它分明是一種解釋性動態語言,但模擬C/C++命令式風格,把動態與靜態的特質融為一體。
   程式語言能做的事情有限,請勿期望過高。
   語言對併發支援沒大家想象得重要,併發程式設計更多是程式設計方式、思維模式變化,你要關注任務隔離性,更加精心的構造(或分離出)可並行的任務,提供普適的“純潔”函式(無副作用函式)。併發對程式語言的要求是:能標識這種純潔函式,提供foreach 多核分發機制,相比較而言,並行程式設計的思維方式變化才是根本性的。
瞭解程式語言的文化,利用好程式語言,在資訊化的今天,我們會走的更遠。 來源:https://wenku.baidu.com/view/fb0754e904a1b0717ed5dd07.html?from=search  

2 程式設計語言的發展

(一)“史前”時期
世界上最早的"計算機"是我國的算盤,它被人們沿用至今。在17世紀, Pascal等人發明了一種以傳動齒輪為基礎的“計算機”,它是以齒輪的轉動來控制計算的累加與進位。上個世紀初,英國劍橋大學著名數學家Charles Babbage 於1822年與1848年分別設計出了兩種差分機,並於1833年製造出了有名的分析機。分析機在原理上與當今社會的計算機非常類似,它靠輸入讀進穿孔卡片來對輸入的數進行算術運算並給出結果。而且分析機可以隨意重複運算序列。這些是由Ada Lovelace設計的運算序列可以解決許多問題。實際上,這種運算序列就是程式的雛形,而這種設計思想一直沿用至今。因而Ada Lovelace被稱為是世界上第一個程式設計師(ADA語言就是為紀念她而命名)。1890年Hollerith研製出了一種同樣使用穿孔卡片的統計機被用作各種統計工作。此後,Hollerith成立了一個公司,這個公司便是如今的IBM。
紀30年代,英國數學家Turing提出了圖靈機的概念,它是由一個控制塊、一條儲存帶及一個讀寫頭構成的能執行左移、右移、在儲存帶中清除或寫入符號以及條件轉移等操作的機器。這種圖靈機的結構雖然較為簡單,但一切運算。隨後Church發明了一種以邏輯公式中約束變數的代入為主要運算的λ-演算,這種運算已經相當於一種語法與語義都非常簡單的程式設計語言,已被廣泛應用於程式理論以及程式設計語言理論與實踐的研究中。
(二)低階語言時期
1.第一代程式設計語言——機器語言
機器語言是二進位制機器程式碼編成的程式碼序列,用來控制計算機執行規定的操作。其特點是能直接反映計算機的硬體結構,並且用機器語言編寫的程式不須作任何處理即可直接輸入計算機執行。由於機器語言與機器是一對一的,不同的機器有不同的指令系統,一種機器編寫的程式也無法直接搬到另一種機器上執行。一個問題如果需要在多種機器上求解,那麼就必須對同一問題重複編寫多個應用程式。
2.第二代程式設計語言——組合語言
由於機器語言程式的直觀性差,且與人們習慣使用的數學表示式及自然語言差距太大,導致機器語言難學、難記,編寫出來的程式難以除錯、修改、移植和維護,極大限制了計算機的推廣作用。在這種情況下,用助記符號來表示機器指令的操作符與運算元(亦稱運算子與運算物件),用地址符號或標號代替指令或運算元的地址的組合語言出現了。機器不能直接識別使用匯編語言編寫的程式,還要由組合語言編譯器轉換成機器指令才能執行。
由於組合語言與機器指令之間是一對一的關係,導致即使是編寫一個很簡單的程式也需要數百條指令。所以在組合語言的基礎上,人們又研製出了只需一條
指令便可編譯成多條機器指令的巨集組合語言。而後又研製出了用於把多個獨立編寫的程式塊連線組裝成一個完整程式的連線程式。但組合語言大多是針對特定的計算機或計算機系統設計的,所以它對機器的依賴性很強,同時還有很多的機器語言中存在的問題,組合語言也沒有解決。
(三)高階語言階段
1954年,第一個完全脫離機器硬體的高階語言——FORTRAN語言問世了。高階語言在不同的平臺上會被編譯成不同的機器語言,使得程式設計語言不再過度的依賴某種特定的機器或者語言環境。1970年,一個標誌著結構化程式設計時期開始的語言問世了,它就是Pascal語言。這個標緻性的語言擁有嚴格的結構化形式、豐富且完備的資料型別,執行效率高、查錯能力強。同時Pascal語言還是一種自編譯語言。這個以法國數學家pascal命名的語言現已成為使用最廣泛的基於DOS的語言之一。
80年代初,在程式設計的思想上又發生了一次大的革命。這個時期研製出的語言多為面對物件的程式設計。之後,高階語言的目標則是面對應用的程式設計。它側重於描述程式“做什麼”而不是“如何做”。
程式設計語言的發展是一個不斷演變的過程。從最開始的機器語言,到組合語言,再到各種各樣的高階語言,最後到支援面對物件技術的面對物件的語言,甚至未來的面對應用的語言,它的演化過程的根本推動力就是抽象機制的更高要求,以及對程式設計思想的更好的支援。也就是說把機器能夠理解的語言提升到能夠很好的模擬人類思考問題的形式的過程。 來源:https://wenku.baidu.com/view/eb72ca12c5da50e2524d7f34.html?from=search