静态和动态编程语言之间的区别

Bal*_*raj 34 static type-systems programming-languages dynamic

静态和动态编程语言有什么不同?我知道这完全是关于类型系统的,但我正在寻找更清晰的说明.

sle*_*row 46

静态打字

静态类型表示在运行程序之前已知类型并检查其是否正确.这通常由语言编译器完成.例如,在运行程序之前,以下Java方法会导致编译错误:

public void foo() {
    int x = 5;
    boolean b = x;
}
Run Code Online (Sandbox Code Playgroud)

动态打字

动态类型意味着只有在程序运行时才知道类型.例如,以下Python(3,如果重要)脚本可以运行而没有问题:

def erroneous():
    s = 'cat' - 1

print('hi!')
Run Code Online (Sandbox Code Playgroud)

它确实会输出hi!.但如果我们打电话erroneous:

def erroneous():
    s = 'cat' - 1

erroneous()
print('hi!')
Run Code Online (Sandbox Code Playgroud)

A TypeError调用 运行引发erroneous.


小智 6

静态和动态之间的区别在于,在运行程序之前,如果每个变量的数据类型都经过检查和验证,那么它就是静态类型编程语言(例如:-在 C++ 的情况下,它是由编译器完成的)。在运行时的动态编程语言中,如果存在违反其数据类型的变量的无效赋值,则会为此给出错误。

摘要 - 静态类型语言在运行程序之前检查任何违规,而在动态类型语言中,在程序运行时会给出错误并转到已完成违规的部分。