罗伯特·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年,是不是我们都应该换成使用动态类型的语言来编程了?



朋友们的留言

  1. 看不透 | 06月 17th, 2010 at 15:35

    沙发。、。

    Reply to this comment
  2. newer | 06月 23rd, 2010 at 23:52

    同感。。。 不过由于某种原因,又要回到java,和你一样,同悲剧。另外,TDD有这么大的魔力吗?

    Reply to this comment
  3. ugg boots | 12月 16th, 2010 at 09:35

    真有这么大的魔力!?

    Reply to this comment
  4. Earlean Luescher | 09月 16th, 2011 at 02:16

    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.

    Reply to this comment
  5. UGG Sheepskin Boots Australia | 09月 19th, 2011 at 09:27

    I’ve certainly learned something new here! Thanks for the post.

    Reply to this comment

我来说两句儿

可以在留言中使用以下标签 :<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Spam Protection by WP-SpamFree