型別安全 

電腦科學中,一部分程式語言具備型別安全(中國大陸用語習慣稱型別為类型;稱資料為数据)的性質。這個術語在不同的社群中有不同的定義,特別是正規的型別理論上的定義遠遠強過大多數的程式員的理解,但對於使用型別系統的認知,皆旨在避免必然的錯誤形式,和不良的程式行為(稱為型別錯誤)。

类型错误(type error)是错误或不期望的程序行为,由不同数据类型的差别所引起,适用于程序的常量、变量、方法(函数),如把整型(int)当作了浮点型(float)。

型別安全可以靜態方式實施,及早在編譯時期就捕捉到潛藏的錯誤;或者以動態方式,在執行時期關聯型別的資訊,並在必要時檢測即將發生的錯誤。型別安全是程式語言的性質,而不是程式所自有的。例如,有可能以型別不安全的語言,編寫出型別安全的程式。在此是以程式語言為主,而不討論以個人能力維護的型別安全。

某個行為之所以會被程式語言歸類為型別錯誤,通常是因為試圖對不適當型別的進行運算。其分類的基本原則是:部分語言設計者和程式員的看法認為,如果所有運算不引起程式瓦解、安全上的瑕疵、或其它明顯故障,即為合理的,而不視之為一個錯誤;其他人則認為所有違背程式員意圖的,就是錯誤的,而且應該標上「不安全」。在靜態型別系統中,型別安全通常包含一個保證,所有運算式最終的值都是合理的靜態型別成員(比子型別多態性所要求的還要更加精確細微)。

型別安全近似於所謂的記憶體安全(就是限制從記憶體的某處,將任意的位元組合複製到另一處的能力)。例如,某個語言的實作具有若干型別 ,假如存在若干適當長度的位元,且其不為 的正統成員。若該語言允許把那些資料複製到 型別的變數,那個語言就不是型別安全的,因為這些運算可將非 型別的值指派給該變數。反過來說,若該語言型別不安全的程度,最高只到允許將任意整數用作為指標,顯然它就不是記憶體安全的。

大部分的靜態型別語言,都提供了一定程度的型別安全,而且其嚴格性更勝於記憶體的安全性。因其型別系統強迫程式員以適當的抽象資料型別定義來使用,即使對記憶體安全或任何可能的災難而言,並不需如此嚴格的要求。




取材自維基百科 - 中文時事百科