日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(动态,静态)(解释,编译)(强类型,弱类型)

發布時間:2024/4/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (动态,静态)(解释,编译)(强类型,弱类型) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 動態語言和靜態語言通常我們所說的動態語言、靜態語言是指動態類型語言和靜態類型語言。1 動態類型語言:動態類型語言是指在運行期間才去做數據類型檢查的語言,也就是說,在用動態類型的語言編程時,永遠也不用給任何變量指定數據類型,該語言會在你第一次賦值給變量時,在內部將數據類型記錄下來。Python和Ruby就是一種典型的動態類型語言,其他的各種腳本語言如VBScript也多少屬于動態類型語言。2 靜態類型語言:靜態類型語言與動態類型語言剛好相反,它的數據類型是在編譯其間檢查的,也就是說在寫程序時要聲明所有變量的數據類型,C/C++是靜態類型語言的典型代表,其他的靜態類型語言還有C#、JAVA等。 對于動態語言與靜態語言的區分,套用一句流行的話就是:Static typing when possible, dynamic typing when needed。2 強類型定義語言和弱類型定義語言1 強類型定義語言:強制數據類型定義的語言。也就是說,一旦一個變量被指定了某個數據類型,如果不經過強制轉換,那么它就永遠是這個數據類型了。舉個例子:如果你定義了一個整型變量a,那么程序根本不可能將a當作字符串類型處理。強類型定義語言是類型安全的語言。2 弱類型定義語言:數據類型可以被忽略的語言。它與強類型定義語言相反, 一個變量可以賦不同數據類型的值。 強類型定義語言在速度上可能略遜色于弱類型定義語言,但是強類型定義語言帶來的嚴謹性能夠有效的避免許多錯誤。另外,“這門語言是不是動態語言”與“這門語言是否類型安全”之間是完全沒有聯系的!例如:Python是動態語言,是強類型定義語言(類型安全的語言); VBScript是動態語言,是弱類型定義語言(類型不安全的語言); JAVA是靜態語言,是強類型定義語言(類型安全的語言)。 解釋性語言和編譯性語言的區別?? 計算機不能直接理解高級語言,只能直接理解機器語言,所以必須要把高級語言翻譯成機器語言,計算機才能執行高級語言編寫的程序。? 翻譯的方式有兩種,一個是編譯,一個是解釋。兩種方式只是翻譯的時間不同。?編譯性語言? 編譯型語言寫的程序執行之前,需要一個專門的編譯過程,把程序編譯成為機器語言的文件,比如exe文件,以后要運行的話就不用重新翻譯了,直接使用編譯的結果就行了(exe文件),因為翻譯只做了一次,運行時不需要翻譯,所以編譯型語言的程序執行效率高。?? 解釋性語言?解釋則不同,解釋性語言的程序不需要編譯,省了道工序,解釋性語言在運行程序的時候才翻譯,比如解釋性java語言,專門有一個解釋器能夠直接執行java程序,每個語句都是執行的時候才翻譯。這樣解釋性語言每執行一次就要翻譯一次,效率比較低。? 腳本語言?腳本語言是解釋性語言。腳本語言一般都有相應的腳本引擎來解釋執行。它們一般需要解釋器才能運行。所以只要系統上有相應語言的解釋程序就可以做到跨平臺。腳本語言是一種解釋性的語言,例如 vbscript,javascript,installshield?script等等,它不象c\c++等可以編譯成二進制代碼,以可執行文件的形式存在。?JAVA語言?java語言是解釋性語言。java很特殊,java程序也需要編譯,但是沒有直接編譯稱為機器語言,而是編譯稱為字節碼,然后用解釋方式執行字節碼。Java既可以被編譯,也可以被解釋。通過編譯器,可以把Java程序翻譯成一種中間代碼?-?稱為字節碼?-?可以被Java解釋器解釋的獨立于平臺的代碼。通過解釋器,每條Java字節指令被分析,然后在計算機上運行。只需編譯一次,程序運行時解釋執行。?Java字節碼使“寫一次,到處運行”成為可能。可以在任何有Java編譯器的平臺上把Java程序編譯成字節碼。這個字節碼可以運行在任何Java?VM上。例如,同一個Java程序可以運行在WindowsNT、Solaris和Macintosh上。?編譯器與解釋器的區別?編譯型與解釋型,兩者各有利弊。前者由于程序執行速度快,同等條件下對系統要求較低,因此像開發操作系統、大型應用程序、數據庫系統等時都采用它,像C/C++、Pascal/Object?Pascal(Delphi)等都是編譯語言,而一些網頁腳本、服務器腳本及輔助開發接口這樣的對速度要求不高、對不同系統平臺間的兼容性有一定要求的程序則通常使用解釋性語言,如Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB?等等。??編譯性語言?不如解釋性語言跨平臺性好??編譯性語言例如c語言:用c語言開發了程序后,需要通過編譯器把程序編譯成機器語言(即計算機識別的二進制文件,因為不同的操作系統計算機識別的二進制文件是不同的),所以c語言程序進行移植后,要重新編譯。(如windows編譯成ext文件,linux編譯成erp文件)。?解釋性語言,例如java語言,java程序首先通過編譯器編譯成class文件,如果在windows平臺上運行,則通過windows平臺上的java虛擬機(VM)進行解釋。如果運行在linux平臺上,則通過linux平臺上的java虛擬機進行解釋執行。所以說能跨平臺,前提是平臺上必須要有相匹配的java虛擬機。如果沒有java虛擬機,則不能進行跨平臺

?

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的(动态,静态)(解释,编译)(强类型,弱类型)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。