1. 程式人生 > >強類型語言/弱類型語言、動態語言/靜態語言、編譯型語言/解釋型語言(整理)

強類型語言/弱類型語言、動態語言/靜態語言、編譯型語言/解釋型語言(整理)

編程範式

【強類型語言/弱類型語言】

  • 強類型語言偏向於不容忍隱式類型轉換。強類型語言有 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 ***


強類型語言/弱類型語言、動態語言/靜態語言、編譯型語言/解釋型語言(整理)