程式設計語言

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

基本信息

歷史

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

釋義

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

成分

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

分類

自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)專用語言
是為某種特殊套用而專門設計的語言,通常具有特殊的語法形式。一般來說,這種語言的套用範圍狹窄,移植性和可維護性不如結構化程式設計語言。隨著時間的發展,被使用的專業語言已有數百種,套用比較廣泛的有APL語言、Forth語言、LISP語言。
二、從客觀系統的描述分類
從描述客觀系統來看,程式設計語言可以分為面向過程語言和面向對象語言。
(1)面向過程語言
以“數據結構+算法”程式設計範式構成的程式設計語言,稱為面向過程語言。前面介紹的程式設計語言大多為面向過程語言。
(2)面向對象語言
以“對象+訊息”程式設計範式構成的程式設計語言,稱為面向對象語言。比較流行的面向對象語言有Delphi、VisualBasic、Java、C++等。
Delphi語言具有可視化開發環境,提供面向對象的編程方法,可以設計各種具有Windows內格的應用程式(如資料庫套用系統、通信軟體和三維虛擬現實等),也可以開發多媒體套用系統。
VisualBasic語言簡稱VB,是為開發應用程式而提供的開發環境與工具。它具有很好的圖形用戶界面,採用面向對象和事件驅動的新機制,把過程化和結構化編程集合在一起。它在應用程式開發中的圖形化構思,無需編寫任何程式,就可以方便地創建應用程式界面,且與Windows界面非常相似,甚至是一致的。
Java語言是一種面向對象的、不依賴於特定平台的程式設計語言,簡單、可靠、可編譯、可擴展、多執行緒、結構中立、類型顯示說明、動態存儲管理、易於理解,是一種理想的、用於開發Internet套用軟體的程式設計語言。

第四代非過程化語言

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

主要語言

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

數據模型

現代計算機內部的數據都只以二元方式儲存,即開-關模式(on-off)。現實世界中代表信息的各種數據,例如名字、銀行賬號、度量以及同樣低端的二元數據,都經由程式設計語言整理,成為高端的概念。
一個程式中專門處理數據的那個系統被稱為程式語言的型態系統(typesystem);對型態系統的研究和設計被稱為型態理論(typetheory)。語言可以被分為靜態型態系統(staticallytypedsystems),例如C++和Java,和動態型態系統(dynamicallytypedsystems),例如Lisp,JavaScript,Tcl和Prolog。前者可被進一步分為包含宣告型態(manifesttype)的語言,即每一個變數和函式的型態都清楚地宣告,或type-inferred語言(例如MUMPS,ML)。
大多數語言還能夠在內置的型態基礎上組合出複雜的數據結構型態(使用數組,列表,堆疊,檔案等等)。面向對象語言(ObjectOrientedLanguage,又譯作“物件導向語言”)允許程式設計師定義新的數據型態,即“對象”或“物件”(objects),以及運行於該對象的函式(functions)和方法(methods)。
除了何時以及如何確定表達式和型態的聯繫,另外一個重要的問題就是語言到底定義了哪些型態,以及允許哪些型態作為表達式的值。諸如C程式語言之類的低端語言允許程式命名記憶體位置、記憶體區域以及編譯時的常量;ANSIC甚至允許表達式返回結構值(structvalues)。功能性的語言一般允許變數直接使用運行時計算出的值,而不是指出該值可能儲存的記憶體地址。

發展趨勢

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

分類

程式設計語言的基本成分有:①數據成分,用於描述程式所涉及的數據;②運算成分,用以描述程式中所包含的運算;③控制成分,用以描述程式中所包含的控制;④傳輸成分,用以表達程式中數據的傳輸。

程式設計語言按照語言級別可以分為低級語言和高級語言。低級語言有機器語言和彙編語言。低級語言與特定的機器有關、功效高,但使用複雜、繁瑣、費時、易出差錯。機器語言是表示成數碼形式的機器基本指令集,或者是操作碼經過符號化的基本指令集。彙編語言是機器語言中地址部分符號化的結果,或進一步包括宏構造。高級語言的表示方法要比低級語言更接近於待解問題的表示方法,其特點是在一定程度上與具體機器無關,易學、易用、易維護。

程式設計語言按照用戶的要求有過程式語言和非過程式語言之分。過程式語言的主要特徵是,用戶可以指明一列可順序執行的運算,以表示相應的計算過程,如FORTRAN、COBOL、PASCAL等。

按照套用範圍,有通用語言與專用語言之分。如FORTRAN、COLBAL、PASCAL、C等都是通用語言。目標單一的語言稱為專用語言,如APT等。

按照使用方式,有互動式語言和非互動式語言之分。具有反映人機互動作用的語言成分的語言成為互動式語言,如BASIC等。不反映人機互動作用的語言稱為非互動式語言,如FORTRAN、COBOL、ALGOL69、PASCAL、C等都是非互動式語言。

按照成分性質,有順序語言、並發語言和分布語言之分。只含順序成分的語言稱為順序語言,如FORTRAN、C等。含有並發成分的語言稱為並發語言,如PASCAL、Modula和Ada等。

程式設計語言是軟體的重要方面,其發展趨勢是模組化、簡明化、形式化、並行化和可視化。

特點

每一種程式設計語言可以被看作是一套包含語法、辭彙和含義的正式規範。

這些規範通常包括:

數據和數據結構
指令及流程控制
引用機制和重用
設計哲學
大多數被廣泛使用或經久不衰的語言,擁有負責標準化的組織,經常會晤來創造及發布該語言的正式定義,並討論擴展或貫徹現有的定義。

常見的程式設計語言

ActionScript
APL、A+和J
Ada
彙編語言
AWK
Basic、Fortran
VBScript
Brainfuck
C、C++
C#
Clipper
COBOL
dBase
PASCAL、Delphi
Forth
FoxPro
F#
Fava
IDL
Java
JavaScript
J#
LISP
Lua
LOGO
Modula
Perl
PHP
PL/I
Prolog
Python
Ruby
Scheme
Smalltalk
SQL
Tcl/Tk
Visual Basic
Visual FoxPro
XML

相關詞條

相關搜尋

熱門詞條

聯絡我們