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

时间:2013-12-13 09:50:08

标签: dynamic static programming-languages type-systems

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

7 个答案:

答案 0 :(得分:36)

静态打字

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

public void foo() {
    int x = 5;
    boolean b = x;
}

动态打字

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

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

print('hi!')

确实会输出hi!。但是,如果我们致电erroneous

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

erroneous()
print('hi!')

TypeError被调用时, 运行时将会引发erroneous

答案 1 :(得分:2)

静态与动态之间的区别在于,在运行程序之前,如果检查并验证了每个变量的数据类型,则它是静态类型的编程语言(例如,对于C ++,它是由编译器完成的)。在运行时使用动态编程语言,如果变量的无效分配违反了其数据类型,则将给出错误。

摘要-静态类型语言在运行程序之前检查是否有违规情况,而在动态类型语言中,当程序运行并进入违反行为的部分时会给出错误。

答案 2 :(得分:1)

静态类型语言在运行程序之前检查是否有违规情况,而在动态类型语言中,当程序正在运行时会出现错误,并转到发生违规的部分。

答案 3 :(得分:-1)

静态类型语言:

  • 您需要事先声明变量的“类型”。
NSString *string = @"Hello";
  • 您无法在同名变量
  • 中保存其他类型的对象(具体或原始)
NSString *string = @"Hello";  
int string = 9; // Not legal, compile type warning

例如静态类型语言: Java,Objective-C等

动态类型语言:

  • 无需声明对象类型。它将在运行时计算出来。
  

string ='Hello'

  • 我们被允许更改同一变量的对象类型,因为名称绑定到具有赋值运算符的对象。
   string = 'Hello'  
   string = 9 // Allowed

e.g。动态类型语言: Python等

答案 4 :(得分:-1)

如果任何编程语言允许在编译时完成内存分配,则该编程语言称为STATIC编程语言。 例如:C,C ++ ...等。

如果任何编程语言允许在运行时完成内存分配,则该编程语言称为DYNAMIC编程语言。 例如:Java,Python ...等。

答案 5 :(得分:-1)

⚫静态语言是一种可以像动态语言一样工作的语言,但工作量较小,并且 这种努力就是编写代码。

⚫在静态语言中,与动态语言相比,我们必须编写更少的代码 语言。

要点是<<< / p>

 -> In static language we can write/use variables without declaring it :-

        Eg. i = 12
            print(i)

  -> In dynamic language if we have to use variable we have to declare it :-

        Eg. int i;
            int i = 21;
            print(i);

答案 6 :(得分:-3)

所有语言都旨在将人类可读代码转换为机器指令。动态语言(Lisp,Perl,Python,Ruby)旨在优化程序员效率,因此您可以使用更少的代码实现功能。静态语言(C,C ++等)旨在优化硬件效率,以便您编写的代码尽快执行。