我有一些问题:
换句话说,之间确实存在一个联系:
答案 0 :(得分:3)
类型系统和执行方法之间没有固有的联系。可以编译动态语言,并可以解释静态语言。可以说,静态类型系统对于在执行之前编译的程序很有意义,作为在程序执行之前捕获某些类型的错误的方法。但是,动态类型系统解决的问题与静态类型系统不同,解释执行解决了与编译不同的问题。
答案 1 :(得分:2)
总是会解释动态编程语言吗?我想是的,但为什么呢?
没有。广泛使用的大多数动态语言在内部编译为字节码或机器代码(“JIT”)。还有一些用于动态类型语言的提前编译器。 Scheme和Lisp以及其他语言有很多编译器。
静态打字系统是否有动态语言?
是。您在这里寻找的术语是“可选输入”和“逐步输入”。
总是编译带有静态类型系统的编程语言?
大多数是,但这不是严格要求的。许多静态类型的函数语言(如ML,F#和Haskell)支持交互模式,它将动态解释(或内部编译和执行)代码。 Go还有一个命令,可以直接从源代码编译和运行代码。
换句话说,之间确实存在一个联系:
静态/动态类型系统和静态/动态语言 静态/动态类型系统和编译器/解释器 静态/动态语言和编译器/解释器
两者之间存在软链接。大多数使用动态类型语言的人都在使用它们,部分原因是他们希望在开发时快速迭代。同时,大多数使用静态类型语言的人希望尽早捕获尽可能多的错误。这意味着动态类型语言倾向于直接从源代码运行,而静态类型语言则倾向于提前编译所有内容。
但是没有技术原因阻止你混淆它。