關於計算機編程語言的理解
匯編語言 編譯
高級語言 c++ java php python
高級語言 ------- 編譯器 --------- 匯編語言 --------解釋器 -----------機器語言
總的來說
一、編譯型語言
定義:指用專用的編譯器,針對特定的操作平臺(操作系統)將某種高級語言源代碼一次性翻譯成可被硬件平臺直接運行的二進制機器碼(具有操作數,指令、及相應的格式),這個過程叫做編譯;編譯好的可執行性文件(.exe),可在相對應的平臺上運行(移植性差,但運行效率高)。
有些程序編譯後,還需要把其他編譯好的,可能需要組裝兩個以上的目標代碼生成最終的可執行性文件,稱為鏈接
典型的編譯型語言有,我們非常熟悉的C語言、C++等。
另外,Java語言是一門很特殊的語言,Java程序需要進行編譯步驟,但並不會生成特定平臺的二進制機器碼,它編譯後生成的是一種與平臺無關的字節碼文件(*.class)(移植性好的原因),這種字節碼自然不能被平臺直接執行,運行時需要由解釋器解釋成相應平臺的二進制機器碼文件;大多數人認為Java是一種編譯型語言,但我們說Java即是編譯型語言,也是解釋型語言也並沒有錯。
二、解釋型語言
定義:指用專門解釋器對源程序逐行解釋成特定平臺的機器碼並立即執行的語言;相當於把編譯型語言的編譯鏈接過程混到一起同時完成的。
解釋型語言執行效率較低,且不能脫離解釋器運行,但它的跨平臺型比較容易,只需提供特定解釋器即可。
常見的解釋型語言有,筆者正在學習的Python(同時是腳本語言)與Ruby等。
三、腳本語言
定義:為了縮短傳統的編寫-編譯-鏈接-運行(edit-compile-link-run)過程而創建的計算機編程語言。
它的特點是:程序代碼即是最終的執行文件,只是這個過程需要解釋器的參與,所以說腳本語言與解釋型語言有很大的聯系。腳本語言通常是被解釋執行的,而且程序是文本文件。
典型的腳本語言有,JavaScript,Python等。
與腳本語言相對應的是系統語言,他們的區別是:
1、抽象的級別:這是最重要也是最明顯示的不同。腳本語言對程序員提供了更高級的抽象。這一點明顯表現在:在這種語言自身中,存在有高級的數據結構,如列表和字典結構,和對這種結構簡單方便的嵌套和操作。這樣可以創建非常成功的程序。
2、類型定義:系統語言通常是強類型和靜態類型定義。這就意味著所有變量的類型要在程序中指定,在編譯時檢查。相反地,腳本語言是最松散的類型定義,完全沒有類型聲明,並且在運行時進行動態類型檢查。
3、執行:系統語言的特點是編譯的。程序被編譯成可執行的二進制。另一方面,腳本語言的特點是解釋,也就是,指令被立即執行,不存在一個編譯的中間狀態。這就意味著腳本語言是交互式的(你可以在提示符下敲入命令,並且看到結果),這是另一個巨大的勝利。這樣完全將編譯過程從編輯-編譯-運行循環中去掉了。
4、速度:以上三點是腳本語言一方面在速度與效率, 一方面在易用性與表示式的強大性之間進行折衷的典型例子。這就使得腳本語言的執行速度比系統語言慢一個數量級。這就是對腳本語言誹謗最多的方面。性能的降低不是真正的問題,因為思想是用腳本語言來組合組件,這些組件是用象C 這樣的快速系統語言來編寫的。所以所有需要運行快速的東西將因為是用快速的語言實現的而運行得快速。腳本語言只用於將東西綁在一起,並且這些通常不是性能的瓶頸( 或如果是,你需要重新檢查你的設計)。
關於計算機編程語言的理解