我們編寫的代碼都屬于高級語言,比如OC JAVA python C C++ JavaScript 等,計算機是不能理解這些高級語言的,他只能理解機器語言,所以要把高級語言轉(zhuǎn)換成機器碼。轉(zhuǎn)換方式有兩種:編譯 和 解釋
圖片上傳失敗
編譯型語言
使用專門的編譯器,針對特定的平臺,將高級語言源代碼一次性的編譯成可被該平臺的硬件執(zhí)行的機器碼,并包裝成該平臺所能識別的可執(zhí)行性程序格式。以后再運行直接使用編譯結(jié)果即可。現(xiàn)有的C 、 C++ 、OC 等都屬于編譯型語言
總結(jié)
1.一次性的編譯成平臺相關(guān)的機器語言,運行時脫離開發(fā)環(huán)境,運行效率高;
2.與特定平臺相關(guān),一般無法移植到其他平臺;
image
解釋型語言
使用專門的解釋器對源代碼逐行解釋成特定平臺的機器碼并立即執(zhí)行。因此某一平臺只要提供相應(yīng)的解釋器即可運行該程序 Python JavaScript PHP Ruby Java 等就是解釋型語言
總結(jié)
1.解釋型語言每次運行都需要將源代碼解釋成機器碼執(zhí)行,效率低下;
2.只要平臺提供相應(yīng)的解釋器,就可以運行源代碼,所以可以方便源程序移植;
image
動態(tài)語言
運行時代碼可以通過某些條件改變自身結(jié)構(gòu),比如:Objective-C、JavaScript、PHP、Python、C#
靜態(tài)語言
與動態(tài)語言相對應(yīng)的,運行時結(jié)構(gòu)不可變的語言就是靜態(tài)語言比如:Java、C、C++
補充:
動態(tài)語言和動態(tài)類型的語言完全不同的兩個概念。動態(tài)類型語言是指在運行期間才去做數(shù)據(jù)類型檢查的語言,說的是數(shù)據(jù)類型,動態(tài)語言說是運行時改變結(jié)構(gòu),說的是代碼結(jié)構(gòu)。
動態(tài)類型語言的數(shù)據(jù)類型不是在編譯階段決定的,而是把類型綁定延后到了運行階段。
主要語言:Python、JavaScript、swift、PHP
靜態(tài)類型語言
靜態(tài)類型語言是在編譯期間確定的,編寫代碼的時候要明確變量的數(shù)據(jù)類型。
主要語言:Java、Objective-C、C
因此
OC 屬于編譯型語言 & 動態(tài)型語言 & 靜態(tài)類型語言
swift 屬于編譯型語言 & 動態(tài)型語言 & 動態(tài)類型語言
Java 屬于解釋型語言 & 靜態(tài)型語言 & 靜態(tài)類型語言
JavaScript 屬于解釋型語言 & 動態(tài)型語言 & 動態(tài)類型語言