天天看點

靜态語言和動态語言、強類型和弱類型

靜态語言和動态語言、強類型和弱類型

1、動态語言和靜态語言      

  通常我們所說的動态語言、靜态語言是指動态類型語言和靜态類型語言。

(1)動态類型語言:動态類型語言是指在運作期間才去做資料類型檢查的語言,也就是說,在用動态類型的語言程式設計時,永遠也不用給任何變量指定資料類型,該語言會在你第一次指派給變量時,在内部将資料類型記錄下來。Python和Ruby就是一種典型的動态類型語言,其他的各種腳本語言如VBScript也多少屬于動态類型語言。

(2)靜态類型語言:靜态類型語言與動态類型語言剛好相反,它的資料類型是在編譯其間檢查的,也就是說在寫程式時要聲明所有變量的資料類型,C/C++是靜态類型語言的典型代表,其他的靜态類型語言還有C#、JAVA等。

對于動态語言與靜态語言的區分,套用一句流行的話就是:Static typing when possible, dynamic typing when needed。

2、強類型定義語言和弱類型定義語言

(1)強類型定義語言:強制資料類型定義的語言。也就是說,一旦一個變量被指定了某個資料類型,如果不經過強制轉換,那麼它就永遠是這個資料類型了。舉個例子:如果你定義了一個整型變量a,那麼程式根本不可能将a當作字元串類型處理。強類型定義語言是類型安全的語言。

(2)弱類型定義語言:資料類型可以被忽略的語言。它與強類型定義語言相反, 一個變量可以賦不同資料類型的值。

強類型定義語言在速度上可能略遜色于弱類型定義語言,但是強類型定義語言帶來的嚴謹性能夠有效的避免許多錯誤。另外,“這門語言是不是動态語言”與“這門語言是否類型安全”之間是完全沒有聯系的!

例如:Python是動态語言,是強類型定義語言(類型安全的語言); VBScript是動态語言,是弱類型定義語言(類型不安全的語言); JAVA是靜态語言,是強類型定義語言(類型安全的語言)。

編譯型語言、解釋型語言、靜态類型語言、動态類型語言概念與差別 

http://blog.csdn.net/u012050154/article/details/51206731

英文釋義對比:

statically typed language

A language in which types are fixed at compile time. 

Most statically typed languages enforce this by requiring you to declare 

all variables with their datatypes before using them. 

Java and C are statically typed languages.

dynamically typed language

A language in which types are discovered at execution time;

the opposite of statically typed. 

VBScript and Python are dynamically typed, 

because they figure out what type a variable is when you first assign it a value

繼續閱讀