Dynamic 动态/静态语言和编译器/解释器

Dynamic 动态/静态语言和编译器/解释器,dynamic,compiler-construction,static,programming-languages,interpreter,Dynamic,Compiler Construction,Static,Programming Languages,Interpreter,我有一些问题: 动态编程语言总是被解释的吗?我想是的,但是为什么呢 有动态语言吗​​使用静态打字系统 是否总是编译带有静态类型系统的编程语言 换句话说,以下两者之间真的有联系吗 静态/动态打字系统和静态/动态语言 静态/动态键入系统和编译器/解释器 静态/动态语言和编译器/解释器 类型系统和执行方法之间没有内在联系。可以编译动态语言,也可以解释静态语言。可以说,静态类型系统对于在执行之前编译的程序非常有意义,因为它是在程序执行之前捕获某些类型错误的一种方法。然而,动态类型系统解决的问题与静

我有一些问题:

  • 动态编程语言总是被解释的吗?我想是的,但是为什么呢
  • 有动态语言吗​​使用静态打字系统
  • 是否总是编译带有静态类型系统的编程语言
换句话说,以下两者之间真的有联系吗

  • 静态/动态打字系统和静态/动态语言
  • 静态/动态键入系统和编译器/解释器
  • 静态/动态语言和编译器/解释器

类型系统和执行方法之间没有内在联系。可以编译动态语言,也可以解释静态语言。可以说,静态类型系统对于在执行之前编译的程序非常有意义,因为它是在程序执行之前捕获某些类型错误的一种方法。然而,动态类型系统解决的问题与静态类型系统不同,解释执行解决的问题与编译不同

动态编程语言总是被解释的吗?我想是的,但是为什么呢

不是。大多数广泛使用的动态语言在内部编译为字节码或机器码(“JIT”)。还有许多用于动态类型语言的超前编译器。有许多用于Scheme和Lisp以及其他语言的编译器

有动态语言吗​​使用静态打字系统

对。您在这里寻找的术语是“可选键入”和“渐进键入”

是否总是编译带有静态类型系统的编程语言

大多数是这样,但这并不是严格要求的。许多静态类型的函数式语言,如ML、F#和Haskell,都支持一种交互模式,在这种模式下,它将动态解释(或内部编译和执行)代码。Go还有一个直接从源代码处编译和运行代码的命令

换句话说,以下两者之间真的有联系吗

静态/动态打字系统和静态/动态语言 静态/动态键入系统和编译器/解释器 静态/动态语言和编译器/解释器

这两者之间有一种软联系。大多数使用动态类型语言的人之所以使用它们,部分原因是他们希望在开发过程中快速迭代。同时,大多数使用静态类型语言的人希望尽早捕获尽可能多的错误。这意味着动态类型语言倾向于直接从源代码运行,而静态类型语言倾向于提前编译所有内容


但是没有任何技术原因阻止您将其混淆。

回答:不,不理解,不,可能,不,不。from:“大多数动态语言也是动态类型的,但不是所有的。”。一个例子?Scala,Objective-C,…谢谢你的链接,我会花时间阅读。我找到了原始版本