動(dòng)態(tài)語言和靜態(tài)語言
轉(zhuǎn)自http://www.cnblogs.com/icycore/archive/2012/02/24/2367016.html
通常我們所說的動(dòng)態(tài)語言来涨、靜態(tài)語言是指動(dòng)態(tài)類型語言和靜態(tài)類型語言恳啥。
(1)動(dòng)態(tài)類型語言:動(dòng)態(tài)類型語言是指在運(yùn)行期間才去做數(shù)據(jù)類型檢查的語言泥耀,也就是說,在用動(dòng)態(tài)類型的語言編程時(shí)棚唆,永遠(yuǎn)也不用給任何變量指定數(shù)據(jù)類 型,該語言會(huì)在你第一次賦值給變量時(shí),在內(nèi)部將數(shù)據(jù)類型記錄下來王污。Python和Ruby就是一種典型的動(dòng)態(tài)類型語言,其他的各種腳本語言如 VBScript也多少屬于動(dòng)態(tài)類型語言楚午。
(2)靜態(tài)類型語言:靜態(tài)類型語言與動(dòng)態(tài)類型語言剛好相反昭齐,它的數(shù)據(jù)類型是在編譯其間檢查的,也就是說在寫程序時(shí)要聲明所有變量的數(shù)據(jù)類型矾柜,C/C++是靜態(tài)類型語言的典型代表阱驾,其他的靜態(tài)類型語言還有C#就谜、JAVA等。
對(duì)于動(dòng)態(tài)語言與靜態(tài)語言的區(qū)分里覆,套用一句流行的話就是:Static typing when possible, dynamic typing when needed丧荐。
強(qiáng)類型定義語言和弱類型定義語言
(1)強(qiáng)類型定義語言:強(qiáng)制數(shù)據(jù)類型定義的語言。也就是說喧枷,一旦一個(gè)變量被指定了某個(gè)數(shù)據(jù)類型虹统,如果不經(jīng)過強(qiáng)制轉(zhuǎn)換,那么它就永遠(yuǎn)是這個(gè)數(shù)據(jù)類型了隧甚。舉個(gè)例子:如果你定義了一個(gè)整型變量a,那么程序根本不可能將a當(dāng)作字符串類型處理窟却。強(qiáng)類型定義語言是類型安全的語言。
(2)弱類型定義語言:數(shù)據(jù)類型可以被忽略的語言呻逆。它與強(qiáng)類型定義語言相反, 一個(gè)變量可以賦不同數(shù)據(jù)類型的值夸赫。
強(qiáng)類型定義語言在速度上可能略遜色于弱類型定義語言,但是強(qiáng)類型定義語言帶來的嚴(yán)謹(jǐn)性能夠有效的避免許多錯(cuò)誤咖城。另外茬腿,“這門語言是不是動(dòng)態(tài)語言”與“這門語言是否類型安全”之間是完全沒有聯(lián)系的!
例如:Python是動(dòng)態(tài)語言宜雀,是強(qiáng)類型定義語言(類型安全的語言); VBScript是動(dòng)態(tài)語言切平,是弱類型定義語言(類型不安全的語言); JAVA是靜態(tài)語言,是強(qiáng)類型定義語言(類型安全的語言)辐董。