1. 程式人生 > >編程語言相關名詞解釋匯總

編程語言相關名詞解釋匯總

size compile double 不能 強類型語言 avi src 緩沖 span

今天給大家分享下,我們常見卻不一定清楚的名詞:

先上個圖

技術分享

我們看這個圖,是一個語言坐標系,分別按編程語言的性質粗分為四個軸:動態、靜態、強類型、弱類型。像筆者使用的Javascript就屬於弱類型動態語言。

那麽,我們思考,這麽多的編程語言有這麽多的性質,它們之間存在怎樣的差異呢?

經過一番Google & Baidu後,筆者得出了答案,即為今天的總結:

In a word強/弱類型指的是語言類型系統的類型檢查的嚴格程度。動態/靜態類型指的是變量與類型的綁定方法

強/弱類型

  • 強類型 (strongly typed) : 如果一種語言的所有程序都是 well behaved——即不可能出現 forbidden behaviors,則該語言為 strongly typed。
  • 弱類型 (weakly typed) : 否則為 weakly typed。比如C語言的緩沖區溢出,屬於 trapped errors,即屬於 forbidden behaviors.. 故C是弱類型。
弱類型語言,類型檢查更不嚴格,如偏向於容忍隱式類型轉換。譬如說C語言的int可以變成double。 這樣的結果是:容易產生 forbidden behaviours,所以是弱類型的。 強類型語言一般不允許這麽做。

動態/靜態類型

  • 靜態類型 (statically) : 如果在編譯時拒絕ill behaved 程序,則是 statically typed;
  • 動態類型 (dynamiclly)
    : 如果在運行時拒絕ill behaviors, 則是 dynamiclly typed。

靜態類型指的是編譯器 compile time 執行類型檢查,動態類型指的是編譯器(虛擬機)在 runtime 執行類型檢查。

最後,我們得出結論:

在聲明了一個變量之後,不能改變它的類型的語言,是靜態語言

能夠隨時改變它的類型的語言,是動態語言

因為動態語言的特性,一般需要運行時虛擬機支持。

(PS:引用輪子哥的總結:

強類型:偏向於不容忍隱式類型轉換。譬如說haskell的int就不能變成double

弱類型:偏向於容忍隱式類型轉換。譬如說C語言的int可以變成double

靜態類型:編譯的時候就知道每一個變量的類型,因為類型錯誤而不能做的事情是語法錯誤。

動態類型:編譯的時候不知道每一個變量的類型,因為類型錯誤而不能做的事情是運行時錯誤。譬如說你不能對一個數字a寫a[10]當數組用。)

編程語言相關名詞解釋匯總