在不少技術文檔、官方介紹,以及各類各樣的編程書籍中,都免不了對編程語言作一些介紹,介紹語言的背景、發展歷程,設計理念等一大堆開篇立論,在這一大堆理論中,介紹語言類型時每每會有這麼幾個詞顯得有些很不同,好比:動態類型、靜態類型、強類型,弱類型、解釋型、編譯型。程序員
那麼這幾個類型是什麼意思呢,如今市場上流行、曾經流行的編程語言又分別是哪一個類型的呢,接下來就來一一看看。編程
動態類型語言,是指在運行期間才作數據類型檢查的語言。安全
此類型的編程語言,變量、屬性、方法的參數的數據類型以及方法的返回值類型均可以不用指定,他們的數據類型會在首次賦值時被記錄下來。此類型的語言有JavaScript、Perl、PHP、Ruby 、Python
和VB
等等。編程語言
靜態類型語言,在編譯階段就作數據類型檢查的語言,這點與動態類型語言恰好相反;也就是說這種類型的語言,聲明變量時在就要明確指定變量的數據類型;若是沒有明確指定,程序就沒法經過編譯,更加沒法運行。性能
好比:C、C++、C#、Java
以及運行JVM
的其餘語言都是靜態類型語言的典型表明。優化
強類型語言,也稱爲強類型定義語言,是一種強制數據類型定義的語言。此類語言的變量的數據類型一旦肯定,除非發生類型強制轉換,不然其數據類型永遠不會發生改變。因此,強類型定義語言也是類型安全的語言。spa
而且還要求全部的變量、屬性必須先聲明並初始化後才能使用,並且變量、屬性、方法的參數以及方法的返回值必須明確指定數據類型,並且即使不一樣類型的變量之間的類型轉換也要嚴格按照轉換規則來執行。如Java、C#
和 Python、C、C++
等都是強類型的語言。操作系統
雖然強類型定義語言運行速度上比起弱類型語言稍稍遜色一些,但加以優化,也並不是不能克服;強類型定義語言因爲明確指定數據類型,全部會更加嚴謹,從而能避免很懂邏輯和語法上的錯誤。翻譯
弱類型語言,數據類型能夠被忽略的語言,這點與強類型定義語言相反;一個變量能夠被賦不一樣數據類型的值。設計
在定義變量時能夠只使用變量修飾符標識其是一個變量便可,而不用考慮其時什麼數據類型;同時,一個變量能夠賦不一樣數據類型的值,且不須要明確的數據類型。好比:變量a 首次賦值的數據類型是字符串類型,但在後期根據須要能夠把數字類型的值賦給變量a。
弱類型語言如VB 、PHP、JavaScript
等。
解釋型語言的源代碼會在執行到的那一刻纔會被語言解釋器轉換爲計算機可執行文件並執行,整個的運行過程會不斷的解釋,執行;解釋,執行...... 即使新的一次運行到已經解釋過的程序,解釋器也依然還會再次解釋,並執行。
這個過程比如,你買了本純英文的書,但你看不懂,而後去找了英文翻譯來輔助你閱讀,你想看哪行,他給你翻譯哪行;若是你想回頭去看以前的內容,他也依然會從新翻譯一次,並給到你。
在解釋型程序中,程序老是以源代碼的形式出現;那麼只要有解釋器,一個解釋型的程序就能很輕易的移植到另外一個平臺上。還有程序的修改也很方便,由於其是實時解釋的,可以實時查看改動的效果。但也會因程序的不斷擴大,減慢程序解釋的響應速度,每每對計算機性能有必定的要求。
好比:Java
、JavaScript、VBScript、Perl、Python
等都是解釋型語言。Java
因其JVM
的跨平臺特性,因此Java
也可算是解釋型語言。
是指語言的源碼須要通過編譯器編譯,生成計算機(操做系統)的可執行文件,或者計算機指令,纔可以被計算機識別,並執行。完成的過程就是:程序員根據需求寫出項目源代碼,而後把源代碼交由編譯器將全部源碼文件一次性編譯,獲得可執行文件,這時,就能夠把可執行文件經過操做系統運行起來,就能看到實際的運行效果了。
若是用英文書的例子來講明,就是:英文翻譯會將整本書翻譯後給到你,那麼即使想回頭去看以前看過的內容,也只須要自行查閱就能夠了。
因爲程序要通過編譯後才能運行,因此其運行速度會比解釋型語言要快上很多;編譯過程當中會進行一些必要的檢查,所以也能避免很多錯誤的發生;但也是由於其運行機制,小小的改動也要從新編譯執行,一定會浪費必定的時間。
好比:C、C++、Java,C#、Pascal/Object Pascal(Delphi)、VB
等語言均可視爲編譯型語言。
C、C++
Perl、PHP、JavaScript
Java、C#
Python, Scheme
Java、C
Ocaml、Haskell
完結,老夫雖不正經,但老夫一身的才華!關注我,獲取更多編程科技知識。