动态语言要取代静态语言吗?
2010年06月17日 原创
罗伯特·C·马丁
2003年4月26日
原文地址:http://www.artima.com/weblogs/viewpost.jsp?thread=4639
显示摘要
隐藏摘要
我曾经是一个静态类型的偏执狂,而且偏执了很多年。我在使用C的过程中饱经磨难,得到很多教训。愚蠢的类型错误曾经导致了不计其数次的系统崩溃。因此,在C++问世的时候,我马上就成为强类型的积极拥护者和推动者。听到Smalltalk程序员抱怨缺少灵活性,我还嘲笑过他们。毕竟,安全性与灵活性相比,前者要重要得多——况且,只要遵循良好的依赖关系管理原则,就能够保证软件具有灵活性,同时还是基于静态类型的。
4年前,我接触到了XP(eXtreme Programming,极限编程)。我很认同其中关于软件开发的实用性观点,也很认同其中关于测试的观点。于是,我又迷上了测试,以至于不使用测试驱动的开发,我都不觉得自己是在写软件。我不敢想象如果没有一套完整的单元测试套件来支持开发,后果将会怎样。
大约在两年前,我发现了一些问题。我越来越少地依赖类型系统所提供的安全性,因为单元测试可以帮我避免类型错误。对单元测试的依赖越多,对Java或C++(这是我选择的语言)类型安全的依赖就越少。
我觉得应该做一个实验。我先后尝试用Python和Ruby(都是以动态类型著称的语言)编写了一些程序,在发现并没有出现什么类型问题时也没觉得特别不可思议。因为单元测试确保了我目标清晰、范围明确,过去那么多年一直对静态类型检查的依赖也被我抛到了九霄云外。
而且,我认识到动态类型语言的灵活性也让编写代码变得异常轻松。模块容易编写,也容易修改。根本就不存在构建时间的问题。动态类型世界的生活让我感到无比轻松自释。
现在,由于项目需要我又改回了使用Java编写代码。但动态类型语言给我的轻松感觉每时每刻都在诱惑着我。我真希望自己是在使用Ruby、Python,甚至是使用Smalltalk在编程序。
还有谁有我这种感觉吗?随着越来越多的人接受测试驱动的开发(我觉得这是一个大趋势),他们一定能体会到我所说的这种感觉。到了2010年,是不是我们都应该换成使用动态类型的语言来编程了?
为之漫笔(李松峰),本博客专注于Web前后端技术、移动平台开发技术、交互设计和技术翻译。声明一下,因为时常需要外出审稿,而且基本不带笔记本,所以有时可能会迟一点回复大家的留言。
沙发。、。
同感。。。 不过由于某种原因,又要回到java,和你一样,同悲剧。另外,TDD有这么大的魔力吗?
真有这么大的魔力!?
I was really happy that I located this site. I wanted to thank you for this terrific knowledge! I surely enjoyed just about every bit of it and I have added your blog to find out more about the new material you publish in the future.
I’ve certainly learned something new here! Thanks for the post.