第4章

机制

机制

书๰中的内容并不深奥,不仅仅是写给程序员和创业者的,更是写给普通读者的。作者最大的目的就是,通过这本书让普通读者理解我们所处的这个ฐ计算机时代。

书中的内容并不深奥,不仅仅是写给程序员和创业者的,更是写给普通读者的。作者最大的目的就是,通过这本书๰让普通读者理解我们所处的这个ฐ计算机时代。

对于互联网软件,没人规定只能使用某些语言开,因为所有的硬件都控制在你手里,你想要用什么เ语言,就能ม用什么语言。不同的语言适合不同的任务,你应该根据不同场合,挑选最合适的工具。尤其是在竞争者存在的情况下,“可以这样做”就变成了“必须这样做”详见后文,因为如果你不利用语言的优势,那就会听任对手过你。

我们的大多数竞争者使用c和cນ++,这使得他们的软件明显不如我们,因为不考虑其他原因他们无຀法解决cgi脚本不能识别用户状态的问题。如果用户想要修改表单的部分内容,你不得不把表单的所有内容都放在同一个页ษ面上,然后在最下面放一个“更新”按钮。正如我将在第12章中解释的,通过使用lisp这种许多人眼中的教学语言,我们使得via9ebຘ编辑器更接近桌面软件带给用户的体验。

软件的布๧

互联网软件带来的最大变化之一,就是软件布方式的改变。对于桌面软件来说,布新版本是一个很痛苦的过程,整个公司不得不使尽全力,满头大汗地挤出一大块巨型代码。从过程和结果上来看,无异于一次分娩。

互联网软件则ท完全不同,就像你写给自己用的程序一样,修改起来很方便。软件的布过裎可以分解为ฦ一系列的渐进式修改,而不是猛地推出一个大幅变动的版本。常见的桌面软件可能ม一年布一到两ä个新版本,而我们在via9eb经常是一天布三到เ五个版本。

一旦采用了这种新模式,你就会知道布方แ式对软件开的影响有多么重大。桌面软件开之中的许多棘手问题๤,都是源自于它的那种灾难性的布方式。

如果一年布一个新版本,你很可能会以打包方式处理bຘug,把它们留着,然后一次性全部解决。在布新版本前,你可能会修改和更换一半的代码,从而又引入无数新的bug。接着,质量监控人员qualityassurancນe开始测试新代码,逐一列ต出新现的bug,你再按照这张清单把它们一个个消除。通常没办法把清单全部做完,它随时都在增长,说实话,谁也不确定它到เ底会有多长。这就好像在足球场上捡小石块一样费劲,你永远不知道为ฦ什么软件内部会出这么多问题。最好的结果也不过是,你得到了一个ฐ统计学意义แ上“合格”的版本。

对于互联网软件来说,大部分的变化都是细微和渐进的,所以引入bug的机会比较小。而且,在布๧前测试的时候,你知道应该最仔细地测试哪个ฐ部分——显然就是你修改过的部分。这使得你对代码的掌握变得牢固得多。一般来说,这时候你确实是对软件内部的情况一清二楚。当然,这不是说你把所有代码都装在了脑子里,而是说你阅读代码的时候,非常自如流畅,不会像侦探破案那样苦思冥想,而是像飞行员那样,瞄一眼仪表板,就对飞行状况胸ถ有成竹。

桌面软件导致了bug的宿命论。你很清楚,布๧出去的软件肯定有bug,你甚至早就准备好了应对机制比如布补丁。既然如此,bug再多一点又何妨?没过多久,你要布下一个ฐ版本了,你明知其中某个操作完全不能使用,但还是照ั样布。苹果公司前几年就干过这种事。他们必须布新版操作系统了,压力越来越大,布日期已๐经推迟了四次,无法再推了,可是有些部分还一点儿没写比如cd和dvd操作的部分。怎么办?他们就把没写完的操作系统布出去了,用户必须日后自己动手安装缺失的部分。

互联网软件的布规则是:它运行不了,你就无法布;一且它能ม运行了,你就可以立刻布。

这个行业的老手可能会想:你说得好听!软件运行不了,就不布,但是如果你已经对外承诺了明确的布日期,到时却没有准备好,怎么เ办?这个问题听起来有道理,但是事实上,你不会对互联网软件做出这样的承诺,因为它根本没有“版本”这个概念。你的软件是连续性渐变的,某些更新也许比较重大,但是“版本”这个ฐ概念不适用于互联网软件。

如果你还没忘记viaທ9eb的旧事,你可能会觉得我这么说听上去很奇怪,因为那时我们总是宣布将有新า版本推出。这只是公关伎俩啦,我们知道媒体喜欢听到เ版本号。如果你布一个大的版本更新版本号的第一位数生变动,它们就会以大篇幅报道;如果你布一个小的版本更新า版本号小数点后生变化,它们最多只用一段话提一下。

我们的一些竞争对手的产品是桌面软件,确实有版本号。对我们来说,这种布๧方式只表明他们的落后,但是他们却因此把媒体的目光都吸引过去了。我们不想做局外人,所以也开始为自己้的软件加上版本号。什么时候需要媒体宣传了,就开出一张单子,上面总结了自从上次“布”以来,我们新增的所有功能