強類型語言/弱類型語言、動態語言/靜態語言、編譯型語言/解釋型語言(整理)
阿新 • • 發佈:2018-03-19
編程範式【強類型語言/弱類型語言】
強類型語言偏向於不容忍隱式類型轉換。強類型語言有 Java、C#、Python 等。示例如下(Python):
>>> 67 + 8 75 >>> 67 + '8' Traceback (most recent call last): File "<pyshell#3>", line 1, in <module> 67 + '8' TypeError: unsupported operand type(s) for +: 'int' and 'str'
弱類型語言偏向於容忍隱式類型轉換。弱類型語言有 C、C++、JavaScript 等。示例如下(JavaScript):
> 67 + 8 75 > 67 + '8' "678"
無類型語言:匯編
【動態語言/靜態語言】
動態語言是運行時檢查變量類型的語言。動態語言有 Python、JavaScript 等。示例如下(Python):
>>> a = 7 >>> type(a) <class 'int'> >>> a = 'z' >>> type(a) <class 'str'>
靜態語言是編譯時檢查變量類型的語言。靜態語言有 C、C++、Java、C# 等。
【編譯型語言/解釋型語言】
編譯型語言需通過編譯器將源代碼編譯成機器碼,之後才能執行。一般需經過編譯、鏈接這兩個步驟。編譯型語言有 C、C++ 等。
解釋性語言的程序不需要編譯,相比編譯型語言省了道工序,解釋性語言在運行程序的時候才逐行翻譯。解釋型語言有 Python、JavaScript 等。
半編譯/半解釋型語言,編譯時不生成機器碼,生成中間碼(/字節碼)。代碼語言有 Java、C# 等。(Java 執行時接近解釋型,C# 執行時接近編譯型)
【強弱動靜象限圖】(圖片來源:Dynamic Typing is NOT Weak Typing)
本文根據以下兩篇文章整理:
1、知乎:弱類型、強類型、動態類型、靜態類型語言的區別是什麽?
2、100多種編程語言學什麽?編程範型/編程範式
3、有什麽編譯型語言是動態類型的嗎?
*** walker ***
強類型語言/弱類型語言、動態語言/靜態語言、編譯型語言/解釋型語言(整理)