動態語言和靜態語言 強型別語言和弱型別語言

2022-09-08 16:21:18 字數 1094 閱讀 6653

1 動態語言和靜態語言

通常我們所說的動態語言、靜態語言是指動態型別語言和靜態型別語言。

1 動態型別語言:動態型別語言是指在執行期間才去做資料型別檢查的語言,也就是說,在用動態型別的語言程式設計時,永遠也不用給任何變數指定資料型別,該語言會在你第一次賦值給變數時,在內部將資料型別記錄下來。python和ruby就是一種典型的動態型別語言,其他的各種指令碼語言如vbscript也多少屬於動態型別語言。

2 靜態型別語言:靜態型別語言與動態型別語言剛好相反,它的資料型別是在編譯其間檢查的,也就是說在寫程式時要宣告所有變數的資料型別,c/c++是靜態型別語言的典型代表,其他的靜態型別語言還有c#、j**a等。

對於動態語言與靜態語言的區分,套用一句流行的話就是:static typing when possible, dynamic typing when needed。

2 強型別定義語言和弱型別定義語言

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

2 弱型別定義語言:資料型別可以被忽略的語言。它與強型別定義語言相反, 乙個變數可以賦不同資料型別的值。

強型別定義語言在速度上可能略遜色於弱型別定義語言,但是強型別定義語言帶來的嚴謹性能夠有效的避免許多錯誤。另外,「這門語言是不是動態語言」與「這門語言是否型別安全」之間是完全沒有聯絡的!

例如:python是動態語言,是強型別定義語言(型別安全的語言); vbscript是動態語言,是弱型別定義語言(型別不安全的語言); j**a是靜態語言,是強型別定義語言(型別安全的語言)。

強型別語言是指需要進行變數/物件型別宣告的語言,一般情況下需要編譯執行。例如c/c++/j**a/c#

弱型別語言是指不需要進行變數/物件型別宣告的語言,一般情況下不需要編譯(但也有編譯型的)。例如php/asp/ruby/python/perl/abap/sql/j**ascript/unix shell等等

總結 : python 動態語言,強型別語言

shell  動態語言,弱型別語言

c/c++  靜態語言,強型別語言

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

一下純屬個人理解,如有錯誤,歡迎批評指教 所謂的靜態語言指的是 經過編寫後直接編譯,生成機器 然後cpu會根據機器 的邏輯順序,順序執行,不會動態改變。例如 c語言,過程語言。寫好,經過編譯生成cpu直接可以執行的機器碼。所謂的動態語言指的是編寫後的 可以在執行的時候動態改變。所寫非所得。舉個例子 ...

靜態語言和動態語言

語言可以簡略的分為 靜態語言和動態語言 我這邊主要會 python,c,shell 不同點 靜態語言 j a,c 往往需要宣告每乙個變數,而動態語言 python 可以跳過這個規定,也就是實現動態的輸入。總結 在c語言中,每個變數的資料型別都必須被明確的宣告 主要有訪問記憶體,指定資料記憶體大小 而...

關於強型別和弱型別 動態語言和靜態語言的解釋

動態型別語言是指在執行期間才去做資料型別檢查的語言,也就是說,動態型別的語言是在第一次賦值給變數時,才確定變數型別 靜態型別的語言則是在編譯階段確定變數型別。弱型別語言是指型別檢查不嚴格,容忍隱式型別轉換 強型別則是不容忍隱式型別轉換,如果發現型別錯誤就會中斷程式的執行。區分靜態和動態的關鍵在於 在...