編程軟件 - Programming
編程語言
Jruby
PHP
Perl
Python
Ruby
Sun Java Development Kit
編程工具
Apache Ant
Apache Portable Runtime
程式語言
維基百科,自由的百科全書
程式語言(programming language),又稱程式語言(program design language,簡稱PDL),是一組用來定義電腦程式的語法規則。它是一種被標準化的交流技巧,用來向電腦發出指令。一種電腦語言讓程式設計師能夠準確地定義電腦所需要使用的資料,並精確地定義在不同情況下所應當採取的行動。概論
程式語言原本是被設計成專門使用在電腦上的,但它們也可以用來定義演算法或者資料結構。正是因為如此,程式設計師才會試圖使程式程式碼更容易閱讀。
程式語言往往使程式設計師能夠比使用機器語言更準確地表達他們所想表達的目的。對那些從事電腦科學的人來說,懂得程式語言是十分重要的,因為在當今所有的計算都需要程式語言才能完成。
在過去的幾十年間,大量的程式語言被發明、被取代、被修改或組合在一起。儘管人們多次試圖創造一種通用的程式語言,卻沒有一次嘗試是成功的。之所以 有那麼多種不同的程式語言存在的原因是,編寫程式的初衷其實也各不相同;新手與老手之間技術的差距非常大,而有許多語言並對新手來說太難學;還有,不同程 式之間的運行成本(runtime cost)各不相同。
有許多用於特殊用途的語言,只在特殊情況下使用。例如,PHP專門用來顯示網頁;Perl更適合文字處理;C語言被廣泛用於作業系統和編譯器的開發(所謂的系統編程)。
進階語言的出現使得電腦程式語言不再過度地倚賴某種特定的機器或環境。這是因為進階語言在不同的平臺上會被編譯成不同的機器語言,而不是直接被機器執行。最早出現的程式語言之一FORTRAN的一個主要標的,就是實現平臺獨立。
雖然大多數的語言可以既可被編譯(compiled)又可被解譯(interpreted),但大多數隻在一種情況下能夠良好運行。在一些編程系統中,程式要經過幾個階段的編譯,一般而言,後階段的編譯往往更接近機器語言。這種常用的使用技巧最早在1960年代末用於BCPL,編譯程式先編譯一個叫做「0程式碼」的轉換程式(representation),然後再使用虛擬器轉換到可以運行於機器上的真實程式碼。這種成功的技巧之後又用於Pascal和P-code,以及Smalltalk和二進位碼,雖然在很多時候,中間過渡的程式碼往往是解譯,而不是編譯的。
如果所使用的翻譯的機制是將所要翻譯的程式程式碼作為一個整體翻譯,並之後運行內部格式,那麼這個翻譯過程就被成為編譯。因此,一個編譯器是一個將人可閱讀的程式文字(叫做原始碼)作為輸入的資料,然後輸出可執行檔案(object code)。所輸出的可執行檔案可以是機器語言,由電腦的中央處理機直接運行,或者是某種模擬器的二進位程式碼。
如果程式程式碼是在運行時才即時翻譯,那麼這種翻譯機制就被稱作解譯。經解譯的程式運行速度往往比編譯的程式慢,但往往更具靈活性,因為它們能夠與執行環境互相作用。參見解譯語言。
特點
每一種程式語言可以被看作是一套包含語法、詞彙和含義的正式規範。
這些規範通常包括:
- 資料和資料結構
- 指令及流程式控制制
- 取用機制和重用
- 設計哲學
大多數被廣泛使用或經久不衰的語言,擁有負責標準化的組織,經常會晤來創造及發佈該語言的正式定義,並討論擴展或貫徹現有的定義。
資料和資料結構
現代電腦內部的資料都只以二元方式儲存,即開-關樣式(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)。
幾十年後,電腦的價格大幅度下跌,而電腦程式也越來越複雜。也就是說,開發時間已經遠比運行時間來得寶貴。
於是,新的整合、可視的開發環境越來越流行。它們減少了所付出的時間、金錢(以及腦細胞)。只要輕敲幾個鍵,一整段程式碼就可以使用了。這也得益於可以重用的程式程式碼庫。
常見的程式語言
- ActionScript
- APL、A+和J
- Ada
- 組合語言
- AWK
- Basic
- VBScript
- Brainfuck
- C、C++
- C#
- Clipper
- COBOL
- dBase
- PASCAL、Delphi
- Forth
- Fortran
- FoxPro
- F#
- Fava
- IDL
- Java
- JavaScript
- J#
- LISP
- Lua
- LOGO
- Modula
- Nuva
- Perl
- PHP
- PL/I
- Prolog
- Python
- R
- Ruby
- Scheme
- Smalltalk
- Tcl/Tk
- Visual FoxPro
沒有留言:
張貼留言