我经常听到这样的说法:动态类型化语言比静态类型化语言更有生产力。这一说法的理由是什么?它不只是使用现代概念,如约定而不是配置、使用函数式编程、高级编程模型和使用一致的抽象--所有这些都可以在静态类型化语言中使用?诚然,由于(例如,在Java中)不需要冗余类型声明,所以没有那么复杂,但您也可以在使用类型推断的静态类型化语言中省略大多数类型声明,而不会失去静态类型的其他优点。所有这些都适用于像Scala这样的现代静态类型化语言。
那么:对于真正是类型模型本身优势的动态类型,对于生产率有什么可说的呢?
澄清:我更感兴趣的是大中型项目,而不是速成黑客。:-)
发布于 2011-11-29 07:13:53
我真的认为这是一个相当近的距离。动态类型和静态类型都有各自的优点。
动态输入效率更高的原因:
静态输入效率更高的原因:
平均而言,我的结论(经过多年的经验,双方的栅栏)是,动态类型可以更有效率在短期内,但它最终变得很难维护,除非您有非常好的测试套件和测试纪律。
另一方面,总的来说,我更喜欢静态类型的方法,因为我认为从长远来看,正确性的好处和工具的支持会给您带来更好的生产力。
发布于 2011-11-29 17:19:04
使用动态语言,可以比使用类型化语言时更快地编写糟糕的代码。
一旦您快速创建了大量动态的东西,您就可以安全地转移到另一个项目,而不必关心长期的维护。
这是生产力的提高:)
我在开玩笑,但在参与了一个使用“动态语言”的项目之后,我被大量不必要的测试、文档和约定吓坏了,如果你想要一个工作的产品的话。
还有喜悦的大量运行时错误,这些错误可能会在编译时捕捉到。
哦,我还忘了抱怨元编程让你在代码中引入的那些黑客和巫毒!
因此,生产率的提高可能是中、大型项目在其生命周期中的一个神话。
发布于 2011-11-29 08:58:06
对于这个问题也有一种理论观点:静态类型系统本质上是一个专门的定理证明器,它只在能够证明程序的类型正确性时才接受它。所有静态类型系统都拒绝一些有效的程序,因为没有一个可判定的静态类型系统强大到足以证明所有可能的类型正确的程序。
有人可能会说,那些静态打字机无法证明的程序是黑客和/或糟糕的风格,但如果你已经有了一个有效的程序,而打字机不接受它,它肯定会损害你的生产力在短期内。
在某些情况下,您可能会注意到类型检查器会遇到泛型容器以及参数和返回类型的协/反方差。
https://softwareengineering.stackexchange.com/questions/122205
复制相似问题