《全端Web开发》这本书翻得我如痴如醉:一是作者高屋建瓴,涉及到了Web开发的方方面面,我还没读过一本这样的书,没见过一个这样知识面广的作者;二是思想深刻,很多观点振聋发聩。我这大半夜翻完一章,有种夜读聊斋的感觉,忍不住贴上来与大家共享。

生命就是一个分布式系统。人与人之间通过一个分布式、超媒体系统交流,人类的智能、声音和手势、视觉和听觉、还有想象,都是其中的组件。
—Roy T. Fielding

从一个大概的计划开始写一本书,然后现在回头再看看最终的结果,这是一段令人着迷的经历。虽然和我的最初预想略有出入,但本书还是忠于早先介绍的主题——变化。在第1章我们指出,由于技术的革新,世界发生了巨大的变化,这在很多领域是显而易见的。而且变化的速度在最近几年变得越来越快。一个大型项目,在其上线之日起就变成了一个遗留系统,这种事已经司空见惯了。

去迎合所有的创新,或者选择完全忽略它们,这两种极端反应是短视和徒劳无用的。更好的面对方式是找出那些真正改变游戏规则的因素。本书突出了一些Java开发者会碰到的问题,需要他们仔细研究。如何响应持续改变的Web开发方式?我们应该从更广大的开发社区和前人的经验上学习。

14.1 社区

其他语言社区有着完全不同的观点,因此可以启发Java开发社区产生不同的创新。总体上来说,Java开发者基础牢固,但有时候有点固步自封。他们能从围绕JavaScript、Ruby和Python等其他社区身上学到很多(同时也能贡献很多)。很多伟大的想法一经实现,便可应用于其他更为广泛的领域。一个环境下的新奇想法,可能在另一种环境下就成了革命性的概念。

14.2 历史

第二个来源是对过去的了解。当代文化对新事物不加思索的接受,更好的做法是对创新保持开放的心态,从一个更广阔的视野上评估其价值。计算机科学和软件开发历史虽短,但内容却很丰富。奠定了“面向对象”这一术语、并且发明了Smalltalk语言的计算机科学家Alan Key曾经指出,现代计算机科学和软件开发的很多方面表现出和流行文化相近的趋势,不关心,也不了解过去。很多重要的、持久的想法其来有自,几年前甚至几十年前就已经存在了。如有可能,最好站在巨人的肩膀上,从过去所犯的错误中学习:

在过去的大概25年里,我们有点朝着流行文化的方向发展,就像电视发明之初,一些发明电视的人认为这是一种向大众普及莎士比亚的新方式。但是他们忘记了那些看电视的人首先要学养丰富,能看得懂莎士比亚。电视所能做的只是让人们看,能看出什么来就是他们的事了。

因此我认为现在缺乏真正的计算机科学和软件工程,部分要归咎于这种流行文化。
{--:}— Alan Kay

14.3 结尾

我希望读者或多或少从本书中学到点什么。能在这样一个时代从事软件开发是一件让人兴奋的事,时代的变化带来了前所未有的机遇。新技术层出不穷,永远有解决不完的问题。阅读本书,练习其中的项目能成为其中一步,希望这是你们中某些人的第一步,让您从中获益,并且创造出新的系统,让这个世界变得更加美好。我将引用伟大的数学家和老师乔治·波利亚的话给读者们留作思考,乔治·波利亚聪明过人,但他认识到人性和个人因素在解决问题中的作用,这对于软件开发同样适用:

认为解决问题是一种纯粹的“智力活动”是错误的,决心和情感在其中起了重要的作用。不温不火、懒洋洋地费些功夫也许足以去解决一些课堂上遇到的常规问题,但是对于严肃的科学问题,唯有意志力才能引领你经受住长年累月的艰辛和挫折…教授如何解决问题,就是在教你如何培养自己的意志力。
{--:} — 乔治·波利亚