靜態(tài)語言和動態(tài)語言
基本概念
靜態(tài)語言(強類型語言)
靜態(tài)語言是在編譯時變量的數(shù)據(jù)類型即可確定的語言,多數(shù)靜態(tài)類型語言要求在使用變量之前必須聲明數(shù)據(jù)類型。
例如:C++、Java、Delphi、C#等。
動態(tài)語言(弱類型語言)
動態(tài)語言是在運行時確定數(shù)據(jù)類型的語言。變量使用之前不需要類型聲明,通常變量的類型是被賦值的那個值的類型。
例如PHP/ASP/Ruby/Python/Perl/ABAP/SQL/JavaScript/Unix Shell等等。
強類型定義語言
強制數(shù)據(jù)類型定義的語言。也就是說,一旦一個變量被指定了某個數(shù)據(jù)類型,如果不經(jīng)過強制轉(zhuǎn)換,那么它就永遠是這個數(shù)據(jù)類型了。舉個例子:如果你定義了一個整型變量a,那么程序根本不可能將a當作字符串類型處理。強類型定義語言是類型安全的語言。
弱類型定義語言
數(shù)據(jù)類型可以被忽略的語言。它與強類型定義語言相反, 一個變量可以賦不同數(shù)據(jù)類型的值。強類型定義語言在速度上可能略遜色于弱類型定義語言,但是強類型定義語言帶來的嚴謹性能夠有效的避免許多錯誤。
兩者區(qū)別
特性
強類型語言是一旦變量的類型被確定,就不能轉(zhuǎn)化的語言。
弱類型語言則反之,一個變量的類型是由其應用上下文確定的。
靜態(tài)語言的優(yōu)勢
1、由于類型的強制聲明,使得IDE有很強的代碼感知能力,故,在實現(xiàn)復雜的業(yè)務邏輯、開發(fā)大型商業(yè)系統(tǒng)、以及那些生命周期很長的應用中,依托IDE對系統(tǒng)的開發(fā)很有保障;
2、由于靜態(tài)語言相對比較封閉,使得第三方開發(fā)包對代碼的侵害性可以降到最低;
動態(tài)語言的優(yōu)勢
1、思維不受束縛,可以任意發(fā)揮,把更多的精力放在產(chǎn)品本身上;
2、集中思考業(yè)務邏輯實現(xiàn),思考過程即實現(xiàn)過程;