静态编译的语言可以替换脚本语言吗?

2 scripting static-language

假设您可以获得动态解释器; 静态编译语言可以替换脚本语言吗?我完全不明白为什么有人会使用脚本语言?我在谈论PC,而不是一个需要简单解释器的有限系统.我看到了一些python安装脚本,并看到了类似的python和C#解决问题的方法.那么为什么要使用脚本语言呢?

注意:有些事情让我对C#感到烦恼,我不是在问为什么不用C#代替.我在问为什么要使用脚本语言?我发现静态编译语言更容易调试,并且通常更容易编码.

Dan*_*ker 5

这些天在编译和口译之间几乎没有什么区别.看看如何执行解释语言 - 第一步是将脚本转换为某种内部可执行形式,比如可以通过更简单的指令集执行的字节代码.这基本上是编译为虚拟机格式.这正是现代编译语言所做的.当编译语言部署在服务器端Web应用程序中时,它们甚至可以动态地从源代码重新编译.因此,在编译/执行技术方面几乎没有区别.

唯一的区别在于指令集的细节,特别是在类型系统中.脚本语言通常(但不总是)动态输入.但是许多大型应用程序也是用动态类型语言编写的.所以,这里没有明确的区别.

我个人认为静态打字,远非"额外的不必要的努力"(因为它经常被描述)实际上是一个巨大的生产力助推器,使得在第一次尝试时正确编写短片段更容易,这要归功于intellisense/autocompletion.为了强调这一点,看看微软如何通过向其添加静态类型信息(在特殊格式的注释中)来改进jQuery库,这样我们就可以在IDE中进行智能感知.

同时,静态语言(包括C#和Java)带来了更多动态类型.

所以我认为这些类别最终合并,区别毫无意义.