有許多用於特殊用途的語言,只在特殊情況下使用。例如,PHP專門用來顯示網頁;Perl更適合文本處理;C語言被廣泛用於操作系統和編譯器的開發(所謂的系統編程)。
程序設計語言使得計算機程序不再過度地倚賴某種特定的機器或環境。這是因為程序設計語言在不同的平臺上會被編譯成不同的機器語言,而不是直接被機器執行。最早出現的編程語言之壹FORTRAN的壹個主要目標,就是實現平臺獨立。
雖然大多數的語言可以既被編譯(compiled)又被解譯(interpreted),但大多數只在壹種情況下能夠良好運行。在壹些編程系統中,程序要經過幾個階段的編譯,壹般而言,後階段的編譯往往更接近機器語言。這種常用的使用技巧最早在1960年代末用於BCPL,編譯程序先編譯壹個叫做“0代碼”的轉換程序(representation),然後再使用虛擬器轉換到可以運行於機器上的真實代碼。這種成功的技巧之後又用於Pascal和P-code,以及Smalltalk和二進制碼,雖然在很多時候,中間過渡的代碼往往是解譯,而不是編譯的。
如果所使用的翻譯的機制是將所要翻譯的程序代碼作為壹個整體翻譯,並之後運行內部格式,那麽這個翻譯過程就被成為編譯。因此,壹個編譯器是壹個將人可閱讀的程序文本(叫做源代碼)作為輸入的數據,然後輸出可執行文件(object code)。所輸出的可執行文件可以是機器語言,由計算機的中央處理器直接運行,或者是某種模擬器的二進制代碼。
如果程序代碼是在運行時才即時翻譯,那麽這種翻譯機制就被稱作解譯。經解譯的程序運行速度往往比編譯的程序慢,但往往更具靈活性,因為它們能夠與執行環境互相作用。參見解譯語言。
目錄 [顯示隱藏]
1 特點
1.1 數據和數據結構
1.2 指令及流程控制
1.3 引用機制和重用
2 程序設計語言的歷史
3 常見的程序設計語言
[編輯]特點
每壹種程序設計語言可以被看作是壹套包含語法、詞匯和含義的正式規範。
這些規範通常包括:
數據和數據結構
指令及流程控制
引用機制和重用
設計哲學
大多數被廣泛使用或經久不衰的語言,擁有負責標準化的組織,經常會晤來創造及發布該語言的正式定義,並討論擴展或貫徹現有的定義。
[編輯]數據和數據結構
現代計算機內部的數據都只以二元方式儲存,即開-關模式(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)。功能性的語言壹般允許變量直接使用運行時計算出的值,而不是指出該值可能儲存的內存地址。
[編輯]指令及流程控制
壹旦數據被確定,機器必須被告知如何對這些數據進行處理。較簡單的指令可以使用關鍵字或定義好的語法結構來完成。不同的語言利用序列系統來取得或組合這些語句。除此之外,壹個語言中的其他指令也可以用來控制處理的過程(例如分支、循環等)。
[編輯]引用機制和重用
引用的中心思想是必須有壹種間接設計儲存空間的方法。最常見的方法是通過命名變量。根據不同的語言,進壹步的引用可以包括指向其他儲存空間的指針。還有壹種類似的方法就是命名壹組指令。大多數程序設計語言使用宏調用、過程調用或函數調用。使用這些代替的名字能讓程序更靈活,並更具重用性。
[編輯]程序設計語言的歷史
二十世紀四十年代當計算機剛剛問世的時候,程序員必須手動控制計算機。當時的計算機十分昂貴,唯壹想到利用程序設計語言來解決問題的人是德國工程師楚澤(Konrad Zuse)。
幾十年後,計算機的價格大幅度下跌,而計算機程序也越來越復雜。也就是說,開發時間已經遠比運行時間來得寶貴。
於是,新的集成、可視的開發環境越來越流行。它們減少了所付出的時間、金錢(以及腦細胞)。只要輕敲幾個鍵,壹整段代碼就可以使用了。這也得益於可以重用的程序代碼庫。
[編輯]常見的程序設計語言
APL、A+和J
ASP
Ada
匯編語言
AWK
Basic、Fortran
Brainfuck
C、C++
C#
Clipper
COBOL
dBase
PASCAL、Delphi
Forth
FoxPro
F#
IDL
Java
JavaScript
J#
LISP
LOGO
Modula
Perl
PHP
PL/1
Prolog
Python
Ruby
Scheme
Smalltalk
SQL
Tcl/Tk
UML
Visual Basic
Visual FoxPro