標籤:資料 add soft orm 效率 過程 定義 問題 表示
語言分 底層語言 機器語言
組合語言 編譯
進階語言 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 這樣的快速系統語言來編寫的。所以所有需要運行快速的東西將因為是用快速的語言實現的而運行得快速。指令碼語言只用於將東西綁在一起,並且這些通常不是效能的瓶頸( 或如果是,你需要重新檢查你的設計)。
關於電腦程式設計語言的理解