我用过很多静态类型的编程语言,也用过不少动态类型的语言。我发现在使用静态类型语言时,各种IDE对我帮助很大。这些编程语言集成开发环境可以让我的开发变得异常高效。代码的修改和移动(比如重构代码)非常方便,也很容易出错。编译速度通常不是问题。IDE的自动编译功能让我每敲几下代码就能得到编译好的程序。当我键入变量时,文档提示和变量、方法、类提示会自动弹出。所有这些都让我可以全身心地投入到编写代码中。反之,越是动态类型的编程语言,我就越不能依赖IDE的帮助,通常在用动态类型的编程语言开发程序时,我只能使用文本编辑器。编程效率受此影响下降很多。代码重构变得困难,甚至不可能,程序的正确性很大程度上依赖于单元测试。但是测试程序并不完美。很多时候,一些旧的遗留项目中的测试程序根本不值得信赖。在文本编辑器中依赖grep进行重构是一个笑话。即麻烦、费力,而且效率不高,经常出错。然而,重构是许多程序员需要经常和广泛进行的事情。动态类型语言通常在速度上有所欠缺——因为它的动态特性。在使用动态编程语言进行开发时,我通常严重依赖文档来确定应该使用或提供哪些方法。如果一个类不提供文档,我必须打开源代码并搜索整个文件以找出它提供的功能。有时,一个代码库包含成百上千个代码文件。显然,我不记得在这样的代码库中哪些文件包含哪些方法和类。因此,我不得不经常一个接一个地打开文件,经常发现找不到某个方法在哪个文件中,所以只能用grep搜索整个工程库文件。我能想到静态类型语言的很多优点和好处,但是对于动态编程语言,我不能总结太多,但是很明显,很多人都非常喜欢动态编程语言,为什么呢?一个答案是,动态语言通常更适合开发较小的项目,因为不必声明类型可以省去很多麻烦。另一个答案是,动态类型使程序员摆脱束缚,可以充分发挥程序员的编程技能,可以最有效地利用编程语言的各种特性和模式。但是这些能力是一把双刃剑,更多的依赖于程序员的个人才能,如果使用不好或者使用过度,都会造成负面的伤害。你是否同意我的观点?英文原文:动态类型为何如此流行?翻译来源:程序员网
