編程語言之美,在動、靜之態,在強、弱之間,分解釋、編譯之道

編程語言之美,在動、靜之態,在強、弱之間,分解釋、編譯之道

在很多技術文檔、官方介紹,以及各種各樣的編程書籍中,都免不了對編程語言做一些介紹,介紹語言的背景、發展歷程,設計理念等一大堆開篇立論,在這一大堆理論中,介紹語言類型時往往會有這麼幾個詞顯得有些很不一樣,比如:動態類型、靜態類型、強類型,弱類型、解釋型、編譯型。

那麼這幾個類型是什麼意思呢,現在市場上流行、曾經流行的編程語言又分別是哪個類型的呢,接下來就來一一看看。

動態類型

動態類型語言,是指在運行期間才做數據類型檢查的語言**。**

此類型的編程語言,變量、屬性、方法的參數的數據類型以及方法的返回值類型都可以不用指定,他們的數據類型會在首次賦值時被記錄下來。此類型的語言有JavaScript、Perl、PHP、Ruby 、PythonVB等等。

靜態類型

靜態類型語言,編譯階段就做數據類型檢查的語言,這點與動態類型語言剛好相反;也就是說這種類型的語言,聲明變量時在就要明確指定變量的數據類型;如果沒有明確指定,程序就無法通過編譯,更加無法運行。

比如:C、C++、C#、Java以及運行JVM的其他語言都是靜態類型語言的典型代表。

強類型

強類型語言,也稱爲強類型定義語言,是一種強制數據類型定義的語言。此類語言的變量的數據類型一旦確定,除非發生類型強制轉換,否則其數據類型永遠不會發生改變。所以,強類型定義語言也是類型安全的語言。

並且還要求所有的變量、屬性必須先聲明並初始化後才能使用,而且變量、屬性、方法的參數以及方法的返回值必須明確指定數據類型,而且即便不同類型的變量之間的類型轉換也要嚴格按照轉換規則來執行。如Java、C#Python、C、C++等都是強類型的語言。

雖然強類型定義語言運行速度上比起弱類型語言稍稍遜色一些,但加以優化,也並非不能克服;強類型定義語言由於明確指定數據類型,所有會更加嚴謹,從而能避免很懂邏輯和語法上的錯誤。

弱類型

弱類型語言,數據類型可以被忽略的語言,這點與強類型定義語言相反;一個變量可以被賦不同數據類型的值。

在定義變量時可以只使用變量修飾符標識其是一個變量即可,而不用考慮其時什麼數據類型;同時,一個變量可以賦不同數據類型的值,且不需要明確的數據類型。比如:變量a 首次賦值的數據類型是字符串類型,但在後期根據需要可以把數字類型的值賦給變量a。

弱類型語言如VB 、PHP、JavaScript等。

編程語言之美,在動、靜之態,在強、弱之間,分解釋、編譯之道

解釋型

解釋型語言的源代碼會在執行到的那一刻纔會被語言解釋器轉換爲計算機可執行文件並執行,整個的運行過程會不斷的解釋,執行;解釋,執行… 即便新的一次運行到已經解釋過的程序,解釋器也依然還會再次解釋,並執行。

這個過程好比,你買了本純英文的書,但你看不懂,然後去找了英文翻譯來輔助你閱讀,你想看哪行,他給你翻譯哪行;如果你想回頭去看之前的內容,他也依然會重新翻譯一次,並給到你。

在解釋型程序中,程序總是以源代碼的形式出現;那麼只要有解釋器,一個解釋型的程序就能很輕易的移植到另一個平臺上。還有程序的修改也很方便,因爲其是實時解釋的,能夠實時查看改動的效果。但也會因程序的不斷擴大,減慢程序解釋的響應速度,往往對計算機性能有一定的要求。

比如:JavaJavaScript、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

編程語言之美,在動、靜之態,在強、弱之間,分解釋、編譯之道

完結,老夫雖不正經,但老夫一身的才華!關注我,獲取更多編程科技知識。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章