什麼是靜態型別檢查?


型別檢查是確保運算子的運算元型別相容的過程。相容型別是指對運算子來說合法的型別,或者根據語言規則可以由編譯器生成的程式碼隱式修改為合法型別的型別。這種自動轉換稱為強制型別轉換。型別錯誤是指將運算子應用於不正確的運算元型別。考慮以下語句可以說明型別檢查的概念。

c:=a + 3 * b;

這裡b應該是一種允許乘以整數的型別。類似地,可以評估加法和賦值的運算元。

如果語言中所有變數到型別的繫結都是靜態的,那麼型別檢查實際上可以在編譯時完成。這比在執行時發現錯誤更有優勢,因為在編譯時的更正通常成本更低。因此,靜態型別檢查涉及檢查程式文字,通常在編譯期間進行。

使用型別系統的規則,編譯器可以從原始碼推斷出每次計算表示式f(a)時,函式f將應用於正確型別的運算元a。靜態型別檢查所需的資料通常一部分由程式設計師提供的宣告提供,一部分由不同的語言結構提供。

靜態型別檢查的優點

靜態型別檢查具有以下優點:

  • 在編譯時儘早發現錯誤。

  • 它用於檢查所有執行路徑。

  • 執行時不需要在資料物件上附加型別標籤。

  • 儲存空間利用率得到提高。

  • 執行速度得到提高。

靜態型別檢查的缺點

靜態型別檢查具有以下缺點:

  • 它可能會降低程式設計師的靈活性。

  • 許多語言,如APL和SNOBOL4,由於它們的動態型別繫結,只允許動態型別檢查。

  • 在沒有宣告的語言中,靜態型別檢查是不可能的。

  • 靜態型別檢查可能會影響宣告、資料控制結構以及子程式獨立編譯的機制。

  • 當語言允許記憶體單元在執行期間的不同時間儲存多種型別的值時,靜態型別檢查會變得複雜。

更新於:2021年10月22日

5K+ 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告