我使用过很多静态类型的编程语言,也使用过不少动态类型的语言。我发现,当使用静态类型的语言时,各种的IDE给了我巨大的帮助。这些编程语言集成 开发环境能让我的开发极其的高效。代码的修改和移动(例如重构代码)都非常的方便,不容易出现错误。编译速度通常不是问题。IDE的自动编译功能使得在我 每敲完几个代码后都能得到编译好的程序。文档提示和变量、方法、类提示在我输入变量时会自动弹出。所有的这些都能够使我把全身心注意力都投入写代码中。
相反,编程语言的类型越动态,我就越无法借助于IDE的帮助,通常在使用动态类型编程语言开发程序时,我只能使用一个文本编辑器。编程效率受此的影 响而下降很多。代码重构变得困难,甚至完全不可能,程序的正确性严重的依赖单元测试。但测试程序并非能做到完美。很多时候,一些老的、历史遗留的项目中的 测试程序根本不可信。 在文本编辑器中依靠grep来重构,就是个笑话。即费事,又费力,而且效率不高,经常出错。然而,重构是很多程序员经常、大量需要做的事情。 动态类型语言通常会在速度上有些欠缺——因为它的动态属性。 使用动态编程语言开发的过程中,我通常会严重的依赖文档来决定应该使用哪一个方法或提供了哪些方法。如果一个类没有提供文档说明,我必须打开源代 码,搜索整个文件,来了解它提供的功能。有时,一个代码库里包含了成百上千的代码文件。很显然,我是没法记住在这样的一个代码库里哪些文件包含了哪些方法 和类。因此,我不得不频繁的打开一个又一个文件,经常出现找来找去也找不到某个方法究竟是在哪个文件里。于是,我只能使用grep来搜索整个项目库文件。 我能想出很多的静态类型语言的优点和好处,但对于动态编程语言,我总结不出多少有点,但很显然,有很多人非常的喜欢动态编程语言,为什么? 一个答案就是动态语言通常更方便开发较小的项目,因为可以无需声明类型而节省了很多麻烦。另外一个答案是,动态类型解除了程序员的束缚,可以最大的 发挥程序员的编程技能,能最有效的利用编程语言里的各种特征和模式。但这些能力都是一把双刃剑,更多的依赖于程序员的个人才能,如果用不好,或用的过度, 都会产生负面的害处。 你认同我的观点吗? 英文原文:Why is dynamic typing so popular? |