動態語言的動態型別

2021-08-29 16:42:35 字數 976 閱讀 7497

1. 在靜態語言中,宣告的目的是為了告訴編譯器所使用的變數「是什麼」,使型別檢查可以在編譯階段靜態地進行,儘量減少執行時的型別檢查,提高執行效率,但缺乏靈活性。

2. 而在動態語言中,變數被設計成無型別的,變數的型別可以按需改變,同乙個變數既可作為整型的,也可作為字串,還可用來定義函式。那麼如何保證所執行的操作是否接收到型別正確的引數呢?在執行時進行動態型別檢查機制解決了型別安全這一問題。動態型別檢 查通過在每個資料物件中儲存乙個型別標籤表明該資料物件的型別,比如在表示式c=a+b中,a和b的型別在程式執行時確定,也可以在執行時改變,所以每次 執行 + 操作時都要根據型別標籤對a和b的型別進行檢查,只有在型別正確的情況下才能執行,否則發出錯誤訊號。操作正確執行後,確定了變數c的型別,並記下c的類 型標籤以備隨後可能的操作進行型別檢查。

3. 這並不意味動態型別容易在程式中引入型別安全的錯誤。在大規模的程式中,靜態語言要為型別上編寫大量的語句,這就使得程式設計師專注於程式中的型別正確性而容易忽視程式其他部分的正確性。而對於動態語言,如果熟悉了這些風格和習慣,犯錯誤這件事情同樣是可能很好地避免的。使用弱型別的語言同樣可以開發很好的系統,而且實際上已經開發了很多很好的系統。

4. 動態型別檢查的主要優點在於程式設計的靈活性,不需要宣告語句,乙個變數名繫結的資料物件的型別可以在程式執行時按需改變,使程式設計師從資料型別擺脫出來,同時也可以編寫更少的程式**行完成同樣的功能。動態型別是動態語言的最顯著的優點,但也是動態語言的弱點根源所在。

5. 不足之處:

a. 程式難以除錯。因為動態型別檢查只在程式執行到某一條操作時才對其進行型別檢查,而從來不檢查沒有被執行的執行路徑上的操作。

b. 在軟體測試時是不 能遍歷程式中所有的執行路徑,這樣沒有被執行的路徑仍有可能存在bugs。這一點可能是動態語言致命的缺點,它導致了動態語言對開發大型軟體 專案支援力度不夠。

c. 儲存大量的型別資訊。執行時需要相當大的額外儲存空間。

d. 執行效率低。動態型別檢查要靠軟體模擬實現,主要是在執行時完成的,所以在執行速度上降低了不少。

動態型別語言與靜態型別語言

在程式執行期間才做型別檢查的語言。在編寫程式時,不需要給變數指定型別。在程式執行時,給變數賦第乙個值時確定變數的資料型別。動態語言型別優點 1.簡潔,且程式設計師可以專注於本質設計,大大提公升開發效率。動態語言的缺點 1.程式執行速度慢,因為型別檢查是在執行時做的。2.不執行就發現不了型別錯誤問題。...

動態型別 動態繫結 動態載入

1.動態型別 執行時才知道,物件的型別,動態型別在程式設計中非常常見,簡單的說就是id型別 比如 在自定的時候就是,id型別。當前我們有時候自己定的方法,不確定,傳進來的是什麼型別的物件,我們也id型別,然後在方法內部去確定型別 2.動態繫結 物件被例項化後,就確定的物件型別,也確定了物件的屬性和響...

動態型別和動態繫結,動態載入

1.ios動態型別和動態繫結簡述 nsobject 也就是id型別 動態型別 動態繫結 先明白引用多型 父類指標可以指向子類物件 方法多型 方法名相同,方法的實現卻不同 動態繫結就是當程式執行的時候,才去查詢物件的型別.一種是靜態載入,一種動態載入 2.簡述你對uiview uiwindow和cal...