歷史
釋義
雖然大多數的語言可以既可被編譯(Compiled)又可被解譯(interpreted),但大多數只在一種情況下能夠良好運行。在一些編程系統中,程式要經過幾個階段的編譯,一般而言,後階段的編譯往往更接近
機器語言。這種常用的使用技巧最早在1960年代末用於BCPL,
編譯程式先編譯一個叫做“0代碼”的轉換程式(representation),然後再使用虛擬器轉換到可以運行於機器上的真實代碼。這種成功的技巧之後又用於
Pascal和P-code,以及Smalltalk和
二進制碼,雖然在很多時候,中間過渡的代碼往往是解譯,而不是編譯的。
如果所使用的翻譯的機制是將所要翻譯的程式代碼作為一個整體翻譯,並之後運行內部格式,那么這個翻譯過程就稱為編譯。因此,一個
編譯器是一個將可閱讀的程式文本(叫做
原始碼)作為輸入的數據,然後輸出
執行檔(object code)。所輸出的
執行檔可以是
機器語言,由計算機的
中央處理器直接運行,或者是某種
模擬器的
二進制代碼。
如果程式代碼是在
運行時才即時翻譯,那么這種翻譯機制就被稱作解譯。經解譯的程式
運行速度往往比編譯的程式慢,但往往更具靈活性,因為它們能夠與執行環境互相作用。
成分
語言的種類千差萬別。但是,一般說來,基本成分不外4種。
數據成分。用以描述程式中所涉及的數據。
運算成分。用以描述程式中所包含的運算。
控制成分。用以表達程式中的控制構造。
程式設計語言的特性
程式設計語言具有心理工程及技術等特性。
(3)技術特性:支持結構化構造的語言有利於減少程式環路的複雜性,使程式易測試、易維護。
分類
自20世紀60 年代以來,世界上公布的程式設計語言已有上千種之多,但是只有很小一部分得到了廣泛的套用。從發展歷程來看,程式設計語言可以分為 4 代。
第一代機器語言
機器語言是由二進制 0、1 代碼指令構成,不同的
CPU 具有不同的
指令系統。機器語言程式難編寫、難修改、難維護,需要用戶直接對
存儲空間進行分配,編程效率極低,程式代碼
直觀性、
兼容性差,並且很容易出現錯誤,這種語言已經被漸漸淘汰了。
第二代彙編語言
彙編語言指令是
機器指令的符號化,與機器指令存在著直接的對應關係,所以彙編語言同樣存在著難學難用、容易出錯、維護困難等缺點。但是彙編語言也有自己的優點:占用
記憶體空間少,可
直接訪問系統接口,
彙編程式翻譯成的機器語言程式的效率高。 從
軟體工程角度來看,只有在
高級語言不能滿足設計要求,或不具備支持某種特定功能的技術性能(如特殊的輸入輸出)時,彙編語言才被使用。
第三代高級語言
高級語言是面向用戶的、基本上獨立於計算機種類和結構的語言。其最大的優點是:形式上接近於算術語言和
自然語言,概念上接近於人們通常使用的概念。高級語言的一個命令可以代替幾條、幾十條甚至幾百條彙編語言的指令。因此,高級語言易學易用,通用性強,套用廣泛。高級語言種類繁多,可以從套用特點和對客觀系統的描述兩個方面對其進一步分類。
一、從套用角度分類
(1) 基礎語言
基礎語言也稱通用語言。它歷史悠久,流傳很廣,有大量的已開發的軟體庫,擁有眾多的用戶, 為人們所熟悉和接受。 屬於這類語言的有
FORTRAN、
COBOL、BASIC、
ALGOL等。FORTRAN 語言是國際上廣為流行、也是使用得最早的一種高級語言,從 20 世紀90 年代起,在工程與
科學計算中一直占有重要地位,備受
科技人員的歡迎。BASIC 語言是在 20 世紀 60 年代初為適應
分時系統而研製的一種
互動式語言,可用於一般的
數值計算與
事務處理。BASIC 語言結構簡單,易學易用,並且具有互動能力,成為許多初學者學習程式設計的入門語言。
(2) 結構化語言
20 世紀 70 年代以來,
結構化程式設計和軟體工程的思想日益為人們所接受和欣賞。在它們的影響下,先後出現了一些很有影響的結構化語言,這些結構化語言直接支持結構化的
控制結構,具有很強的過程結構和
數據結構能力。
PASCAL、C、Ada 語言就是它們的突出代表。
PASCAL 語言是第一個系統地體現結構化程式設計概念的現代高級語言,
軟體開發的最初目標是把它作為結構化程式設計的教學工具。由於它模組清晰、控制結構完備、有豐富的
數據類型和數據結構、
語言表達能力強、移植容易,不僅被國內外許多高等院校定為
教學語言,而且在科學計算、數據處理及系統軟體開發中都有較廣泛的套用。
C
語言功能豐富,
表達能力強,有豐富的
運算符和數據類型,使用靈活方便,套用面廣,移植能力強,編譯質量高,
目標程式效率高,具有高級語言的優點。同時,C 語言還具有低級語言的許多特點,如允許直接訪問
物理地址,能進行位操作,能實現彙編語言的大部分功能,可以直接對硬體進行操作等。用 C 語言
編譯程式產生的目標程式,其質量可以與彙編語言產生的目標程式相媲美,具有“可移植的彙編語言”的美稱,成為編寫套用軟體、作業系統和編譯程式的重要語言之一。
(3) 專用語言
二、從客觀系統的描述分類
(1) 面向過程語言
以“數據結構+算法”程式
設計範式構成的程式設計語言,稱為面向過程語言。前面介紹的程式設計語言大多為面向過程語言。
(2) 面向對象語言
Visual Basic 語言簡稱
VB,是為開發應用程式而提供的開發環境與工具。它具有很好的
圖形用戶界面,採用面向對象和事件驅動的新機制,把過程化和
結構化編程集合在一起。它在應用程式開發中的圖形化構思,無需編寫任何程式,就可以方便地創建
應用程式界面,且與 Windows 界面非常相似,甚至是一致的。
Java 語言是一種面向對象的、不依賴於特定平台的程式設計語言,簡單、可靠、可編譯、可擴展、
多執行緒、結構中立、類型顯示說明、
動態存儲管理、易於理解,是一種理想的、用於開發 Internet 套用軟體的程式設計語言。
第四代非過程化語言
4GL 是非過程化語言,編碼時只需說明“做什麼”,不需描述算法細節。
資料庫查詢和
應用程式生成器是 4GL 的兩個典型套用。用戶可以用資料庫
查詢語言(
SQL)對資料庫中的信息進行複雜的操作。 用戶只需將要查找的內容在什麼地方、 據什麼 根條件進行查找等信息告訴 SQL,SQL 將
自動完成查找過程。應用程式生成器則是根據用戶的需求“自動生成”滿足需求的高級語言程式。真正的第四代程式設計語言應該說還沒有出現。所謂的
第四代語言大多是指基於某種
語言環境上具有 4GL 特徵的
軟體工具產品, System Z、如PowerBuilder、FOCUS 等。第四代程式設計語言是面向套用,為
最終用戶設計的一類程式設計語言。它具有縮短套用開發過程、降低維護代價、最大限度地減少調試過程中出現的問題以及對
用戶友好等優點。
主要語言
習語言 即中文版的C語言,C語言是一種通用的程式設計語言,既具有高級語言語法精煉、類型豐富、適於模組化設計等優點,也具有低級語言效率高、易控制計算機硬體等特點。
O語言 O語言是一款中文
計算機語言(或稱套裝:O彙編語言、O中間語言、O高級語言)
APT( Automatically Pro-grammed Tools)——自動
數控程式。第一個專用語言,用於數控工具機加工,1956。
FORTRAN(FORmula TRANslation)——公式翻譯程式設計語言。第一個廣泛使用的
高級語言,為廣大科學和
工程技術人員使用計算機創造了條件,1956。
IPL-V(Information Processing Language V)——信息處理語言。第一個表處理語言,可看成是一種適用於表處理的假想計算機上的彙編語言,1958。
COMIT(COmpiler Massachusetts Institute foTechnology) ——
麻薩諸塞州理工學院編譯程式。第一個現實的串處理和模式匹配語言,1957。
COBOL(COmmon Business Oriented Language)——面向商業的通用語言。使用最廣泛的商用語言,它是適用於
數據處理的高級程式設計語言,1960。
ALGOL60(ALGOrithmic language60) ——
算法語言60。程式設計語言由技藝轉向科學的重要標誌,其特點是局部性、
動態性、
遞歸性和嚴謹性,1960。
JOVIAL(Jules Own Version of IAL)——國際
算法語言的朱爾斯文本。第一個具有處理科學計算、輸入-輸出邏輯信息、數據存儲和處理等綜合功能的語言。多數JOVIAL
編譯程式都是用JOVIAL書寫的,1960。
GPSS(General-purpose Systems Simulator)——通用系統模擬語言 。第一個使模擬成為實用工具的語言 ,1961。
JOSS(Johnniac Open-Shop System ——。第一個互動式語言,它有很多方言,曾使分時成為實用,1964。
FORMAC(FORmula MAnipulation Compiler)——公式翻譯程式設計語言公式處理
編譯程式。第一個廣泛用於需要形式代數處理的數學問題領域內的語言,1964。
SIMULA (SIMUlation LAnguage)—— 模擬語言 。主要用於模擬的語言,是
ALGOL60的擴充,1966。SIMULA67是1967年SIMULA的改進。其中引進的“類”概念,是現代程式設計語言中“模組”概念的先聲。
APL/360 (A Programming Language)——程式設計語言360。一種提供很多高級
運算符的語言,可使程式人員寫出甚為緊湊的程式 ,特別是涉及到
矩陣計算的程式 ,1967。
PASCAL ( Philips Automatic Sequence CALcul-ator)——菲利浦自動順序
計算機語言。在
ALGOL60的基礎上發展起來的重要語言 ,其最大特點是簡明性與結構化,1971。
PROLOG(PROgrammingin LOGic)。 一種處理邏輯問題的語言。它已經廣泛套用於關係資料庫、
數理邏輯、抽象問題求解、
自然語言理解等多種領域中,1973。
ADA。一種現代
模組化語言。屬於ALGOLPASCAL語言族,但有較大變動。其主要特徵是強類型化和模組化,便於實現個別編譯,提供類屬設施,提供
異常處理,適於嵌入式套用,1979。
C++ 構建大型軟體,要求速度與性能,可以使用它。
JAVA SUN公司開發的一種基於JVM
虛擬機的面向對象的語言,被廣泛套用於移動設備。
程式設計語言的選擇
程式設計
語言特點不同,適用領域也不同,以下從不同角度介紹選擇的方法。
(1)科學工程計算。需要大量的標準庫函式,以便處理複雜的數值計算,可供選用的語言有
FORTRAN語言、C語言等。
(2)數據處理與資料庫套用。
SQL為
IBM公司開發的資料庫查詢語言,4GL稱為第4代語言。
(3)實時處理。實時處理軟體一般對性能的要求很高,可選用的語言有彙編語言、
Ada語言等。
(4)系統軟體。如果編寫作業系統、
編譯系統等系統軟體時,可選用彙編語言、C語言、
Pascal語言和Ada語言。
2、軟體開發的方法
4、算法和數據結構的複雜性
科學計算、實時處理和人工智慧領域中的問題算法較複雜,而數據處理、資料庫套用、系統軟體領域的問題,數據結構.比較複雜,因此選擇語言時可考慮是否有完成複雜算法的能力,或者有構造複雜數據結構的能力。
5、軟體開發人員的知識
編寫語言的選擇與軟體開發人員的
知識水平及
心理因素有關,開發人員應仔細地分析軟體項目的類型,敢於學習新知識,掌握新技術。
數據模型
現代計算機內部的
數據都只以二元方式儲存,即開-關模式(on-off)。現實世界中代表信息的各種數據,例如名字、銀行賬號、度量以及同樣低端的二元數據,都經由程式設計語言整理,成為高端的概念。
一個程式中專門
處理數據的那個系統被稱為
程式語言的型態系統(type system);對型態系統的研究和設計被稱為型態理論(type theory)。語言可以被分為靜態型態系統(statically typed systems),例如C++和Java,和動態型態系統(dynamically typed systems),例如Lisp,
JavaScript,Tcl和Prolog。前者可被進一步分為包含宣告型態(manifest type)的語言,即每一個變數和函式的型態都清楚地宣告,或type-inferred語言(例如
MUMPS,ML)。
大多數語言還能夠在內置的型態基礎上組合出複雜的數據結構型態(使用數組,列表,
堆疊,檔案等等)。
面向對象語言(
Object Oriented Language,又譯作“物件導向語言”)允許程式設計師定義新的數據型態,即“對象”或“物件”(objects),以及運行於該對象的函式(functions)和方法(methods)。
發展趨勢
程式設計語言是軟體的重要方面。它的
發展趨勢是模組化、簡明性和形式化。
模組化。不僅語言具有模組成分,程式由模組組成,而且語言本身的結構也是模組化的。
簡明性。涉及的基本概念不多,成分簡單,結構清晰,易學易用。
形式化。發展合適的形式體系,以描述語言的語法、語義、語用。