1. 程式人生 > >計算機編程語言的種類

計算機編程語言的種類

靜態類型語言 是不是 程序 效率 基本 不能 要求 管理 行高

編程語言主要由以下幾種分類方法:
1、編譯型和解釋型
2、靜態語言和動態語言
3、強類型定義語言和弱類型定義語言

第一種劃分方法是,編譯型和解釋型:
之所以這麽劃分,是因為計算機不能直接理解高級語言,僅僅能直接理解機器語言(相對來說比較低級),所以必需要把高級語言翻譯成機器語言,計算機才能運行高級語言編寫的程序。翻譯的方式有兩種,一種叫做編譯,另一種叫做解釋。
編譯型:
編譯型語言和匯編語言是一樣的,也是一個負責翻譯的程序來對我們的源碼進行轉換,生成相應的可執行代碼,這個過程稱為編譯(compile),負責編譯的程序稱為編譯器(compiler)。如果我們寫的程序代碼都包含在一個源文件中,那麽編譯之後就會直接生成一個可執行的文件,我們就可以直接運行了。但是對於一個比較復雜的項目,為了方便管理,我們通常把代碼分散在各個源文件中,作為不同的模塊來組織。這時編譯各個文件時,就會生成目標文件(object files),而不是前面所說的可執行文件。一般一個源文件的編譯都會對應一個目標文件。這些目標文件裏的內容基本上是可執行代碼了,但對於整個項目來說,只是一部分,所以還不能直接運行。只有等待所有的源文件都編譯完成,我們就可以把這些半成品的目標文件打包成一個可執行文件,這個工作由另一個程序完成,這個過程是把包含可執行代碼的目標文件連接裝配起來,所以又稱為鏈接(link),負責這個步驟的程序叫做鏈接程序(linker)。鏈接程序除了目標文件之外,可能還有各種資源,如圖形文件、聲音文件等,還負責去除目標文件之間的冗余重復代碼等,所以也很累。鏈接完成之後,一般就可以得到我們想要的可執行文件了。

簡單來說,編譯型語言寫的程序執行之前,已經把程序編譯好了,比方exe文件,以後要執行的話就不用又一次翻譯了。直接使用編譯的結果即可了(exe文件),由於翻譯僅僅做了一次,執行時不須要翻譯,所以編譯型語言的程序執行效率高。
解釋型:
編譯型程序,是一次把所有的代碼轉換成機器語言,然後寫成可執行文件;而解釋型程序,是每執行到源程序的某一條指令,則會有一個稱之為解釋程序的外殼程序將源代碼轉換成二進制代碼以供執行,總而言之,就是不斷的解釋、執行、解釋、執行,所以,解釋型代碼是離不開解釋程序的。解釋型程序中,由於程序總是以源代碼的形式出現,因此只要有相應的解釋器,移植幾乎不成問題。編譯型程序也可以移植,但是針對不同系統,必須分別重新編譯,對於復雜工程來說,非常耗費時間。但解釋型程序因為一邊解釋,一邊執行,因此速度比編譯型程序要慢上好多,幾百倍也不足為奇。
簡單來說,解釋性語言的程序在執行程序的時候才翻譯,邊執行邊翻譯。
總結:
編譯型由於速度快,因此對系統要求較低,開發操作系統、數據庫和大型應用等都使用它,比如C/C++、Pascal/Delphi、VB等都是編譯語言。而一些網頁腳本、服務器腳本和輔助開發接口等對速度要求不高,對不同系統平臺兼容性有要求的一般使用解釋型語言,如Java、JavaScript、VBScript、Perl、Python等。
打個比方,有一本英文書你想看,但是你又不懂英語,於是乎請來一位資深翻譯。這位資深翻譯可以從頭到底給你一口氣全部翻譯完,然後把中文版的書交給你閱讀,這種就是編譯型的方式來處理。而這位資深翻譯可以翻譯一個章節後,你可以閱讀翻譯完的這個章節,之後這位資深翻譯繼續翻譯下面的章節,翻譯完畢後,你才能再讀接下去的章節,但是當你想回看之前的章節,那麽必須由這名翻譯再次翻譯一下這個你想再次看的章節,等待翻譯完畢後,你才能再次閱讀這個章節,這種就是解釋型的方式來處理。

第二種劃分方法是根據變量是否必須賦值來定義的,分為動態類型語言和靜態類型語言:
動態類型語言:
動態類型語言是指在運行期間采取做數據類型檢查的語言。也就是說,在用動態類型的語言編程時,永遠也不用給任何變量指定數據類型,該語言會在你第一次賦值給變量時,在內部將數據類型記錄下來。Python和Ruby就是一種典型的動態類型語言,其它的各種腳本語言如VBScript也多少屬於動態類型語言。
靜態類型語言:
靜態類型語言剛好和動態類型語言相反,它的數據類型是在編譯期間去檢查的,也就是說在寫程序時,是需要聲明變量的數據類型的,如C/C++就是典型的例子,其它的還有C#、Java等。

第三種劃分方法是依據變量是否需要強制轉換來劃分的(這關系到程序語言的安全性和運行速度),分為強類型定義語言和弱類型定義語言:
強類型定義語言:
是指強制數據類型定義的語言。也就是說,一旦一個變量被指定了某個數據類型,如果不經過強制轉換,那麽它就是永遠這個數據類型了。比如說,如果定義了整型變量a,那麽程序就不會把a當做字符串類型處理了。強類型定義語言是類型安全的語言。
弱類型定義語言:
數據類型可以被忽略的語言。一個變量可以被賦予不同數據類型的值。
總結:
強類型語言運行速度慢於弱類型語言,但是強類型定義語言更安全,Python是強類型定義語言。另外,一門語言是不是動態語言和是不是強類型定義語言沒有任何關系。

由此得出結論,Python是一門解釋型的動態強類型定義語言。

計算機編程語言的種類