昨天天早上上完课后,我到图书馆游荡,无意在编程专区发现了一本叫《梦断代码》(Dream in Code)的书,随手翻了一下,大概看完了第0章,发现自己的神经马上就被作者调动起来了,书里字里行间里面散发着那些只有对代码和计算机有浓厚兴趣的人才会心领神会的微妙感觉。于是我马上把这本书搬到了寝室,从中午到下午,再到晚上,我一口气读完了这本书。

书中所讲述的,就是20个程序员花了3年,No,甚至更多时间来打造一款具有巨大灵活性的个人信息管理软件(PIM)的故事。虽然我不是什么程序员,也只写过一些最初级的代码,以及一些小型应用,但是还是对“软件开发”这个辛苦而复杂的过程略知一二。作者作为一个第三者,详实描绘了这个软件的开发流程,从种种科学的,工程的,历史的,精神的层面来展示了来自硅谷的程序员们是如何进行产品开发的,读这本书,就好像你站在了这些程序员巨人的旁边,看到了他们对于计算机的理解,看到了他们对于管理的认识……文中还普及了很多软件开发以及计算机领域的专业知识,比如源代码版本控制系统(CVS,现在被更流行功能更好的SVN所替代),AJAX(asynchronous Javascript and XML,正是Gmail这样的Web应用程序所倡导的),变量命名法,面向对象……等等,此外还有软件工程领域的各种奇怪悖论与定理,比如“乐高积木”,“布鲁克斯法则”,“质量三角”....描述这个软件开发过程的同时,我们还能从书上得到从1960s开始到现在计算机,程序和软件行业瞬息万变的新潮理论与变化趋势,例如计算机是如何从简单的机器码演化到汇编-一些助记符;再从高级语言演化到面向对象,再到UML模型、“代码生成器”,只为了实现“乐高积木”般搭建程序的美好愿望;还描述了软件开发开源与封闭的争论、软件开发流程如何从蜗牛般的速度变得高效;还见证了在2004年,当OSAF的成员还来不及修复Bugzilla中的无数缺陷和发布新版本的Chandler时,来自Google的、基于浏览器的应用程序Gmail以及一大堆Web应用程序已然在世界上越来越流行的尴尬境地。

阅读完了本书,给我的最大感慨是,软件——这个本来由人类掌控一切的东西,到头来却变成了最让人难以控制的产物。和物理、化学等学科不同,“软件”这个东西,自始自终便没有来自自然界的启迪与指导,软件产业发展了那么多年,给开发人员带来的总是伴随着是痛苦和沮丧。也许真正的“软件科学”还未能诞生,程序语言,软件这个行业真的在过去几十年来根本没有取得任何实质性进展。否则,为什么软件本身到现在还是那么令人难以捉摸呢?