静态和动态编程语言有何不同?我知道这完全与类型系统有关,但我正在寻找更清晰的说明。
答案 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 ++等)旨在优化硬件效率,以便您编写的代码尽快执行。