1. 程式人生 > >靜態語言與動態語言的區別

靜態語言與動態語言的區別

動態語言和靜態語言區別在於執行時結構是否可以改變
動態語言和靜態語言區分是否有鴨子型別
型別檢查和改變結構是靜態語言和動態語言兩個區別點

動態型別語言 和靜態型別語言區別在於 語言型別是執行前確定還是執行時宣告

靜態語言(強型別語言)

靜態語言是在編譯時變數的資料型別即可確定的語言,多數靜態型別語言要求在使用變數之前必須宣告資料型別。
例如:C++、Java、Delphi、C#等。

動態語言(弱型別語言)

動態語言是在執行時確定資料型別的語言。變數使用之前不需要型別宣告,通常變數的型別是被賦值的那個值的型別。
例如PHP/ASP/Ruby/Python/Perl/ABAP/SQL/JavaScript/Unix Shell等等。

強型別定義語言

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

弱型別定義語言

資料型別可以被忽略的語言。它與強型別定義語言相反, 一個變數可以賦不同資料型別的值。強型別定義語言在速度上可能略遜色於弱型別定義語言,但是強型別定義語言帶來的嚴謹效能夠有效的避免許多錯誤。

兩者區別

特性

強型別語言是一旦變數的型別被確定,就不能轉化的語言。
弱型別語言則反之,一個變數的型別是由其應用上下文確定的。

靜態語言的優勢

由於型別的強制宣告,使得IDE有很強的程式碼感知能力,故,在實現複雜的業務邏輯、開發大型商業系統、以及那些生命週期很長的應用中,依託IDE對系統的開發很有保障;
由於靜態語言相對比較封閉,使得第三方開發包對程式碼的侵害性可以降到最低;
動態語言的優勢
思維不受束縛,可以任意發揮,把更多的精力放在產品本身上;
集中思考業務邏輯實現,思考過程即實現過程;