程式設計語言

程式設計語言

程式設計語言是用於書寫電腦程式的語言。語言的基礎是一組記號和一組規則。根據規則由記號構成的記號串的總體就是語言。在程式設計語言中,這些記號串就是程式。程式設計語言有3個方面的因素,即語法、語義和語用。語法表示程式的結構或形式,亦即表示構成語言的各個記號之間的組合規律,但不涉及這些記號的特定含義,也不涉及使用者。語義表示程式的含義,亦即表示按照各種方法所表示的各個記號的特定含義,但不涉及使用者。

基本介紹

  • 中文名:程式設計語言
  • 外文名:PDL/Programming Language
歷史,釋義,成分,程式設計語言的特性,分類,第一代機器語言,第二代彙編語言,第三代高級語言,第四代非過程化語言,主要語言,程式設計語言的選擇,數據模型,發展趨勢,

歷史

有許多用於特殊用途的語言,只在特殊情況下使用。例如,PHP專門用來顯示網頁;Perl更適合文本處理;C語言被廣泛用於作業系統和編譯器(所謂的系統編程)的開發。
高級程式設計語言(也稱高級語言)的出現使得電腦程式設計語言不再過度地倚賴某種特定的機器或環境。這是因為高級語言在不同的平台上會被編譯成不同的機器語言,而不是直接被機器執行。最早出現的程式語言之一FORTRAN的一個主要目標,就是實現平台獨立。

釋義

雖然大多數的語言可以既可被編譯(Compiled)又可被解譯(interpreted),但大多數只在一種情況下能夠良好運行。在一些編程系統中,程式要經過幾個階段的編譯,一般而言,後階段的編譯往往更接近機器語言。這種常用的使用技巧最早在1960年代末用於BCPL,編譯程式先編譯一個叫做“0代碼”的轉換程式(representation),然後再使用虛擬器轉換到可以運行於機器上的真實代碼。這種成功的技巧之後又用於Pascal和P-code,以及Smalltalk和二進制碼,雖然在很多時候,中間過渡的代碼往往是解譯,而不是編譯的。
如果所使用的翻譯的機制是將所要翻譯的程式代碼作為一個整體翻譯,並之後運行內部格式,那么這個翻譯過程就稱為編譯。因此,一個編譯器是一個將可閱讀的程式文本(叫做原始碼)作為輸入的數據,然後輸出執行檔(object code)。所輸出的執行檔可以是機器語言,由計算機的中央處理器直接運行,或者是某種模擬器的二進制代碼
如果程式代碼是在運行時才即時翻譯,那么這種翻譯機制就被稱作解譯。經解譯的程式運行速度往往比編譯的程式慢,但往往更具靈活性,因為它們能夠與執行環境互相作用。

成分

語言的種類千差萬別。但是,一般說來,基本成分不外4種。
  1. 數據成分。用以描述程式中所涉及的數據。
  2. 運算成分。用以描述程式中所包含的運算。
  3. 控制成分。用以表達程式中的控制構造。
  4. 傳輸成分。用以表達程式中數據的傳輸。

程式設計語言的特性

程式設計語言具有心理工程及技術等特性。
(1)心理特性:歧義性、簡潔性、局部性、順序性、傳統性。
(2)工程特性:可移植性,開發工具的可利用性,軟體的可重用性、可維護性。
(3)技術特性:支持結構化構造的語言有利於減少程式環路的複雜性,使程式易測試、易維護。

分類

自20世紀60 年代以來,世界上公布的程式設計語言已有上千種之多,但是只有很小一部分得到了廣泛的套用。從發展歷程來看,程式設計語言可以分為 4 代。

第一代機器語言

機器語言是由二進制 0、1 代碼指令構成,不同的 CPU 具有不同的指令系統。機器語言程式難編寫、難修改、難維護,需要用戶直接對存儲空間進行分配,編程效率極低。這種語言已經被漸漸淘汰了。

第二代彙編語言

彙編語言指令是機器指令的符號化,與機器指令存在著直接的對應關係,所以彙編語言同樣存在著難學難用、容易出錯、維護困難等缺點。但是彙編語言也有自己的優點:可直接訪問系統接口,彙編程式翻譯成的機器語言程式的效率高。 從軟體工程角度來看,只有在高級語言不能滿足設計要求,或不具備支持某種特定功能的技術性能(如特殊的輸入輸出)時,彙編語言才被使用。

第三代高級語言

高級語言是面向用戶的、基本上獨立於計算機種類和結構的語言。其最大的優點是:形式上接近於算術語言和自然語言,概念上接近於人們通常使用的概念。高級語言的一個命令可以代替幾條、幾十條甚至幾百條彙編語言的指令。因此,高級語言易學易用,通用性強,套用廣泛。高級語言種類繁多,可以從套用特點和對客觀系統的描述兩個方面對其進一步分類。
一、從套用角度分類
從套用角度來看,高級語言可以分為基礎語言、結構化語言和專用語言。
(1) 基礎語言
基礎語言也稱通用語言。它歷史悠久,流傳很廣,有大量的已開發的軟體庫,擁有眾多的用戶, 為人們所熟悉和接受。 屬於這類語言的有 FORTRAN、COBOLBASIC、ALGOL等。FORTRAN 語言是目前國際上廣為流行、也是使用得最早的一種高級語言,從 20 世紀90 年代起,在工程與科學計算中一直占有重要地位,備受科技人員的歡迎。BASIC 語言是在 20 世紀 60 年代初為適應分時系統而研製的一種互動式語言,可用於一般的數值計算與事務處理。BASIC 語言結構簡單,易學易用,並且具有互動能力,成為許多初學者學習程式設計的入門語言。
(2) 結構化語言
20 世紀 70 年代以來,結構化程式設計和軟體工程的思想日益為人們所接受和欣賞。在它們的影響下,先後出現了一些很有影響的結構化語言,這些結構化語言直接支持結構化的控制結構,具有很強的過程結構和數據結構能力。PASCAL、C、Ada 語言就是它們的突出代表。
PASCAL 語言是第一個系統地體現結構化程式設計概念的現代高級語言,軟體開發的最初目標是把它作為結構化程式設計的教學工具。由於它模組清晰、控制結構完備、有豐富的數據類型和數據結構、語言表達能力強、移植容易,不僅被國內外許多高等院校定為教學語言,而且在科學計算、數據處理及系統軟體開發中都有較廣泛的套用。
C 語言功能豐富,表達能力強,有豐富的運算符和數據類型,使用靈活方便,套用面廣,移植能力強,編譯質量高,目標程式效率高,具有高級語言的優點。同時,C 語言還具有低級語言的許多特點,如允許直接訪問物理地址,能進行位操作,能實現彙編語言的大部分功能,可以直接對硬體進行操作等。用 C 語言編譯程式產生的目標程式,其質量可以與彙編語言產生的目標程式相媲美,具有“可移植的彙編語言”的美稱,成為編寫套用軟體、作業系統和編譯程式的重要語言之一。
(3) 專用語言
是為某種特殊套用而專門設計的語言,通常具有特殊的語法形式。一般來說,這種語言的套用範圍狹窄,移植性和可維護性不如結構化程式設計語言。隨著時間的發展,被使用的專業語言已有數百種,套用比較廣泛的有 APL 語言、Forth 語言、LISP 語言。
二、從客觀系統的描述分類
從描述客觀系統來看,程式設計語言可以分為面向過程語言和面向對象語言。
(1) 面向過程語言
以“數據結構+算法”程式設計範式構成的程式設計語言,稱為面向過程語言。前面介紹的程式設計語言大多為面向過程語言。
(2) 面向對象語言
以“對象+訊息”程式設計範式構成的程式設計語言,稱為面向對象語言。比較流行的面向對象語言有 DelphiVisual BasicJavaC++等。
Delphi 語言具有可視化開發環境 , 提供面向對象的編程方法,可以設計各種具有Windows 內格的應用程式(如資料庫套用系統、通信軟體和三維虛擬現實等),也可以開發多媒體套用系統。
Visual Basic 語言簡稱 VB,是為開發應用程式而提供的開發環境與工具。它具有很好的圖形用戶界面,採用面向對象和事件驅動的新機制,把過程化和結構化編程集合在一起。它在應用程式開發中的圖形化構思,無需編寫任何程式,就可以方便地創建應用程式界面,且與 Windows 界面非常相似,甚至是一致的。
Java 語言是一種面向對象的、不依賴於特定平台的程式設計語言,簡單、可靠、可編譯、可擴展、多執行緒、結構中立、類型顯示說明、動態存儲管理、易於理解,是一種理想的、用於開發 Internet 套用軟體的程式設計語言。

第四代非過程化語言

4GL 是非過程化語言,編碼時只需說明“做什麼”,不需描述算法細節。
資料庫查詢和應用程式生成器是 4GL 的兩個典型套用。用戶可以用資料庫查詢語言(SQL)對資料庫中的信息進行複雜的操作。 用戶只需將要查找的內容在什麼地方、 據什麼 根條件進行查找等信息告訴 SQL,SQL 將自動完成查找過程。應用程式生成器則是根據用戶的需求“自動生成”滿足需求的高級語言程式。真正的第四代程式設計語言應該說還沒有出現。所謂的第四代語言大多是指基於某種語言環境上具有 4GL 特徵的軟體工具產品, System Z、如PowerBuilder、FOCUS 等。第四代程式設計語言是面向套用,為最終用戶設計的一類程式設計語言。它具有縮短套用開發過程、降低維護代價、最大限度地減少調試過程中出現的問題以及對用戶友好等優點。

主要語言

  1. 習語言 即中文版的C語言
  2. O語言 O語言是一款中文計算機語言(或稱套裝:O彙編語言、O中間語言、O高級語言)
  3. APT( Automatically Pro-grammed Tools)——自動數控程式。第一個專用語言,用於數控工具機加工,1956。
  4. FORTRAN(FORmula TRANslation)——公式翻譯程式設計語言。第一個廣泛使用的高級語言,為廣大科學和工程技術人員使用計算機創造了條件,1956。
  5. FLOW-MATIC。第一個適用於商用數據處理的語言,其語法與英語語法類似,1956。
  6. IPL-V(Information Processing Language V)——信息處理語言。第一個表處理語言,可看成是一種適用於表處理的假想計算機上的彙編語言,1958。
  7. COMIT(COmpiler Massachusetts Institute foTechnology) ——麻薩諸塞州理工學院編譯程式。第一個現實的串處理和模式匹配語言,1957。
  8. COBOL(COmmon Business Oriented Language)——面向商業的通用語言。使用最廣泛的商用語言,它是適用於數據處理的高級程式設計語言,1960。
  9. ALGOL60(ALGOrithmic language60) ——算法語言60。程式設計語言由技藝轉向科學的重要標誌,其特點是局部性、動態性、遞歸性和嚴謹性,1960。
  10. 表處理語言(LIStProceessing——LISP。引進函式式程式設計概念和表處理設施,在人工智慧的領域內廣泛使用,1960。
  11. JOVIAL(Jules Own Version of IAL)——國際算法語言的朱爾斯文本。第一個具有處理科學計算、輸入-輸出邏輯信息、數據存儲和處理等綜合功能的語言。多數JOVIAL編譯程式都是用JOVIAL書寫的,1960。
  12. GPSS(General-purpose Systems Simulator)——通用系統模擬語言 。第一個使模擬成為實用工具的語言 ,1961。
  13. JOSS(Johnniac Open-Shop System ——。第一個互動式語言,它有很多方言,曾使分時成為實用,1964。
  14. FORMAC(FORmula MAnipulation Compiler)——公式翻譯程式設計語言公式處理編譯程式。第一個廣泛用於需要形式代數處理的數學問題領域內的語言,1964。
  15. SIMULA (SIMUlation LAnguage)—— 模擬語言 。主要用於模擬的語言,是ALGOL60的擴充,1966。SIMULA67是1967年SIMULA的改進。其中引進的“類”概念,是現代程式設計語言中“模組”概念的先聲。
  16. APL/360 (A Programming Language)——程式設計語言360。一種提供很多高級運算符的語言,可使程式人員寫出甚為緊湊的程式 ,特別是涉及到矩陣計算的程式 ,1967。
  17. PASCAL ( Philips Automatic Sequence CALcul-ator)——菲利浦自動順序計算機語言。在ALGOL60的基礎上發展起來的重要語言 ,其最大特點是簡明性與結構化,1971。
  18. PROLOG(PROgrammingin LOGic)。 一種處理邏輯問題的語言。它已經廣泛套用於關係資料庫、數理邏輯、抽象問題求解、自然語言理解等多種領域中,1973。
  19. ADA。一種現代模組化語言。屬於ALGOLPASCAL語言族,但有較大變動。其主要特徵是強類型化和模組化,便於實現個別編譯,提供類屬設施,提供異常處理,適於嵌入式套用,1979。
  20. Python 最好的字元串處理腳本語言
  21. perl 廣泛套用於unix/linux系統管理的腳本語言
  22. ruby 日本人設計的一種被廣泛學習使用的動態語言
  23. C結構化程式設計語言的經典,它能完成你想要的一切。
  24. C++ 構建大型軟體,要求速度與性能,可以使用它。
  25. JAVA SUN公司開發的一種基於JVM虛擬機的面向對象的語言,被廣泛套用於移動設備。

程式設計語言的選擇

程式設計語言特點不同,適用領域也不同,以下從不同角度介紹選擇的方法。
1、項目的套用領域
(1)科學工程計算。需要大量的標準庫函式,以便處理複雜的數值計算,可供選用的語言有FORTRAN語言、C語言等。
(2)數據處理與資料庫套用。SQL為IBM公司開發的資料庫查詢語言,4GL稱為第4代語言。
(3)實時處理。實時處理軟體一般對性能的要求很高,可選用的語言有彙編語言、Ada語言等。
(4)系統軟體。如果編寫作業系統、編譯系統等系統軟體時,可選用彙編語言、C語言、Pascal語言和Ada語言。
(5)人工智慧。如果要完成知識庫系統、專家系統決策支持系統、推理工程、語言識別、模式識別等人工智慧領域內的系統,應選擇Prolog、Lisp語言。
2、軟體開發的方法
有時程式語言的選擇依賴於開發的方法,如果要用快速原型模型來開發,要求能快速實現原型,因此宜採用4GL。如果是面向對象方法,宜採用面向對象的語言編程。
3、軟體執行的環境
良好的編程環境不但能有效提高軟體生產率,同時能減少錯誤,有效提高軟體質量。
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)。
除了何時以及如何確定表達式和型態的聯繫,另外一個重要的問題就是語言到底定義了哪些型態,以及允許哪些型態作為表達式的值。諸如C程式語言之類的低端語言允許程式命名記憶體位置、記憶體區域以及編譯時的常量;ANSI C甚至允許表達式返回結構值(struct values)。功能性的語言一般允許變數直接使用運行時計算出的值,而不是指出該值可能儲存的記憶體地址

發展趨勢

程式設計語言是軟體的重要方面。它的發展趨勢是模組化、簡明性和形式化。
  1. 模組化。不僅語言具有模組成分,程式由模組組成,而且語言本身的結構也是模組化的。
  2. 簡明性。涉及的基本概念不多,成分簡單,結構清晰,易學易用。
  3. 形式化。發展合適的形式體系,以描述語言的語法、語義、語用。

相關詞條

熱門詞條

聯絡我們