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

一个答案就是动态语言通常更方便开发较小的项目,因为可以无需声明类型而节省了很多麻烦。另外一个答案是,动态类型解除了程序员的束缚,可以最大的 发挥程序员的编程技能,能最有效的利用编程语言里的各种特征和模式。但这些能力都是一把双刃剑,更多的依赖于程序员的个人才能,如果用不好,或用的过度, 都会产生负面的害处。
你认同我的观点吗?
英文原文:Why is dynamic typing so popular?
译文出处:程序师网
引用来自“倚天屠龙之金毛狮王”的评论
动态语言你用记事本怪谁 静态语言你用记事本也一样引用来自“赵占涛”的评论
动态语言没有很好的ide支持引用来自“久永”的评论
说反了吧?应该是 IDE 没法很好的支持 动态语言。引用来自“倚天屠龙之金毛狮王”的评论
动态语言你用记事本怪谁 静态语言你用记事本也一样引用来自“赵占涛”的评论
动态语言没有很好的ide支持引用来自“七液”的评论
我倒是觉得是因为现在程序员普遍技术降低的原因造成的动态语言兴起。开发速度快不快我觉得不是问题,对于一个熟练的静态语言开发人员来说。有一个趁手的IDE+一大堆自己平时开发的基础库的情况下。开发速度不会比动态语言降低多少。而且可靠性有保障。顺带性能也上去了引用来自“梅开源”的评论
每个人时间和脑力都有限,能否快速实践想法很重要。静态语言就好像上厕所前先排队等半天IDE打开,然后先声明我要嘘嘘了,我要拉屎了,然后尿要拉在小便池,屎要拉在大便坑,不小心就溢出到一地(崩出一排栈错误)要你收拾。还会严谨的定义屎分各种颜色,有set有vector有list有…… 拉的时候需要不同姿势哦亲。动态语言就是脱了裤子直接上去拉,让玩家真正享受到了拉屎的本质,拉屎的乐趣。引用来自“xia-yongsheng”的评论
静态语言是一坨一坑,而动态语言是根本没有坑的概念引用来自“BuN_Ny”的评论
话虽如此,虽然一坨一坑,也有拉到脚上的蠢货。主要还是看人,看团队、看管理、看资金、看项目特点。。。引用来自“黑传说”的评论
所以,最终结果还是要看 “综合素质”,拉得繁琐或者拉遍地都不是关键。引用来自“BuN_Ny”的评论
对了,如果宇宙就是一个大坑,天地广阔任我拉,就没这么多苦恼了。引用来自“alien_hjy”的评论
怎么全在讨论拉翔的艺术?引用来自“梅开源”的评论
每个人时间和脑力都有限,能否快速实践想法很重要。静态语言就好像上厕所前先排队等半天IDE打开,然后先声明我要嘘嘘了,我要拉屎了,然后尿要拉在小便池,屎要拉在大便坑,不小心就溢出到一地(崩出一排栈错误)要你收拾。还会严谨的定义屎分各种颜色,有set有vector有list有…… 拉的时候需要不同姿势哦亲。动态语言就是脱了裤子直接上去拉,让玩家真正享受到了拉屎的本质,拉屎的乐趣。引用来自“xia-yongsheng”的评论
静态语言是一坨一坑,而动态语言是根本没有坑的概念引用来自“BuN_Ny”的评论
话虽如此,虽然一坨一坑,也有拉到脚上的蠢货。主要还是看人,看团队、看管理、看资金、看项目特点。。。引用来自“黑传说”的评论
所以,最终结果还是要看 “综合素质”,拉得繁琐或者拉遍地都不是关键。引用来自“BuN_Ny”的评论
对了,如果宇宙就是一个大坑,天地广阔任我拉,就没这么多苦恼了。引用来自“梅开源”的评论
每个人时间和脑力都有限,能否快速实践想法很重要。静态语言就好像上厕所前先排队等半天IDE打开,然后先声明我要嘘嘘了,我要拉屎了,然后尿要拉在小便池,屎要拉在大便坑,不小心就溢出到一地(崩出一排栈错误)要你收拾。还会严谨的定义屎分各种颜色,有set有vector有list有…… 拉的时候需要不同姿势哦亲。动态语言就是脱了裤子直接上去拉,让玩家真正享受到了拉屎的本质,拉屎的乐趣。引用来自“梅开源”的评论
每个人时间和脑力都有限,能否快速实践想法很重要。静态语言就好像上厕所前先排队等半天IDE打开,然后先声明我要嘘嘘了,我要拉屎了,然后尿要拉在小便池,屎要拉在大便坑,不小心就溢出到一地(崩出一排栈错误)要你收拾。还会严谨的定义屎分各种颜色,有set有vector有list有…… 拉的时候需要不同姿势哦亲。动态语言就是脱了裤子直接上去拉,让玩家真正享受到了拉屎的本质,拉屎的乐趣。引用来自“xia-yongsheng”的评论
静态语言是一坨一坑,而动态语言是根本没有坑的概念引用来自“BuN_Ny”的评论
话虽如此,虽然一坨一坑,也有拉到脚上的蠢货。主要还是看人,看团队、看管理、看资金、看项目特点。。。引用来自“黑传说”的评论
所以,最终结果还是要看 “综合素质”,拉得繁琐或者拉遍地都不是关键。引用来自“梅开源”的评论
每个人时间和脑力都有限,能否快速实践想法很重要。静态语言就好像上厕所前先排队等半天IDE打开,然后先声明我要嘘嘘了,我要拉屎了,然后尿要拉在小便池,屎要拉在大便坑,不小心就溢出到一地(崩出一排栈错误)要你收拾。还会严谨的定义屎分各种颜色,有set有vector有list有…… 拉的时候需要不同姿势哦亲。动态语言就是脱了裤子直接上去拉,让玩家真正享受到了拉屎的本质,拉屎的乐趣。引用来自“xia-yongsheng”的评论
静态语言是一坨一坑,而动态语言是根本没有坑的概念引用来自“梅开源”的评论
每个人时间和脑力都有限,能否快速实践想法很重要。静态语言就好像上厕所前先排队等半天IDE打开,然后先声明我要嘘嘘了,我要拉屎了,然后尿要拉在小便池,屎要拉在大便坑,不小心就溢出到一地(崩出一排栈错误)要你收拾。还会严谨的定义屎分各种颜色,有set有vector有list有…… 拉的时候需要不同姿势哦亲。动态语言就是脱了裤子直接上去拉,让玩家真正享受到了拉屎的本质,拉屎的乐趣。引用来自“dingfg”的评论
然后拉的满地都是,别人都没法走路了引用来自“梅开源”的评论
每个人时间和脑力都有限,能否快速实践想法很重要。静态语言就好像上厕所前先排队等半天IDE打开,然后先声明我要嘘嘘了,我要拉屎了,然后尿要拉在小便池,屎要拉在大便坑,不小心就溢出到一地(崩出一排栈错误)要你收拾。还会严谨的定义屎分各种颜色,有set有vector有list有…… 拉的时候需要不同姿势哦亲。动态语言就是脱了裤子直接上去拉,让玩家真正享受到了拉屎的本质,拉屎的乐趣。引用来自“dingfg”的评论
然后拉的满地都是,别人都没法走路了引用来自“梅开源”的评论
每个人时间和脑力都有限,能否快速实践想法很重要。静态语言就好像上厕所前先排队等半天IDE打开,然后先声明我要嘘嘘了,我要拉屎了,然后尿要拉在小便池,屎要拉在大便坑,不小心就溢出到一地(崩出一排栈错误)要你收拾。还会严谨的定义屎分各种颜色,有set有vector有list有…… 拉的时候需要不同姿势哦亲。动态语言就是脱了裤子直接上去拉,让玩家真正享受到了拉屎的本质,拉屎的乐趣。引用来自“dingfg”的评论
然后拉的满地都是,别人都没法走路了引用来自“梅开源”的评论
每个人时间和脑力都有限,能否快速实践想法很重要。静态语言就好像上厕所前先排队等半天IDE打开,然后先声明我要嘘嘘了,我要拉屎了,然后尿要拉在小便池,屎要拉在大便坑,不小心就溢出到一地(崩出一排栈错误)要你收拾。还会严谨的定义屎分各种颜色,有set有vector有list有…… 拉的时候需要不同姿势哦亲。动态语言就是脱了裤子直接上去拉,让玩家真正享受到了拉屎的本质,拉屎的乐趣。引用来自“梅开源”的评论
每个人时间和脑力都有限,能否快速实践想法很重要。静态语言就好像上厕所前先排队等半天IDE打开,然后先声明我要嘘嘘了,我要拉屎了,然后尿要拉在小便池,屎要拉在大便坑,不小心就溢出到一地(崩出一排栈错误)要你收拾。还会严谨的定义屎分各种颜色,有set有vector有list有…… 拉的时候需要不同姿势哦亲。动态语言就是脱了裤子直接上去拉,让玩家真正享受到了拉屎的本质,拉屎的乐趣。引用来自“song314”的评论
精辟引用来自“倚天屠龙之金毛狮王”的评论
动态语言你用记事本怪谁 静态语言你用记事本也一样动态语言是方便灵活部署