编译型/解释型、强类型/弱类型、动态类型/静态类型语言

post date: 2022-06-10

首先声明下面这些术语并没有非常明确的定义,只是人们根据各种各样的编程语言特点给它们分个类。

# 编译型/解释型语言

  • 编译型语言:代码执行前先通过编译器,转化为机器语言,然后可以直接运行。例如C/C++,代码文件(windows)编译成二进制的可执行文件exe,可以直接运行。
  • 解释型语言:每次代码执行时都需要通过解释器逐行解释运行。例如Python、JavaScript、Shell等。

# 强类型/弱类型语言

  • 强类型语言:一旦某个变量被定义类型,如果不经强制转换,那么它永远是该数据类型。例如Java、Python、C++等。

  • 弱类型语言:某一个变量被定义类型,该变量可以根据环境自动变化类型。例如JavaScript、PHP。

# 动态类型/静态类型语言

  • 动态类型语言:在运行期间才去做数据类型检查,例如典型Python。在用动态类型语言编程时,永远不用给任何变量指定数据类型,该语言会在第一次给变量赋值时,在内部将数据类型记录下来。
  • 静态类型语言:数据类型在编译期间检查。C/C++是静态类型语言的典型代表,其他静态语言还有C#、Java等。