云平台:诸神之战

编者注:Michael Driscoll是Metamarkets的联合创始人兼CTO。他最近发表了一篇文章, 文章介绍了目前最有竞争力的几个云平台:Amazon Web Services、微软的Azure、Google App Engine以及EMC Virtual Private Cloud,并分析了各自的优势。作者认为云平台的实质就是计算、存储以及网络的虚拟化(抽象),谁赢下了云平台之争,就会像操作系统之争一样成为下一个 时代的新霸主。而一旦这个霸主确立,技术就会向着更高层面的抽象继续演进,那时候应用即服务型的初创企业将会百花齐放。

很多年以前情况就已经很显然——必须找到某种方式让程序员与硬件的复杂性无缘……这一层东西就是操作系统

—安德鲁·谭宁邦《操作系统(英文)》

云 就是企业新的操作系统,服务就是新的应用。云为下一代的服务提供庇护,从Pinterest到Instagram,从foursquare到AirBnB 都在腾云驾雾。这厢,为上一代的桌面应用提供接口的微软Windows和苹果MacOS X已如日落西山(注:这个结论也许下得太早,这些老牌操作系统本身也在蜕变),那厢,为上述服务提供必需的计算、存储和网络的Amazon之类供应商正冉 冉升起。

相对于上一辈,云这个操作系统更灵活,容错能力更高。云的这两个优势源自它的两个招牌特性:虚拟化和分 布式。因为虚拟化,失效的硬件可以升级或被换出,虚拟流程可移植到新机器,几乎不会对最终用户产生任何影响。因为分布式,云可以散布在成千上万个商品化的 设备中,服务的计算和带宽需求可通过灵活伸缩来满足,磁盘存储限制几乎已成时代逆流。

云在其他方面也带来了新挑 战,更确切地说又把我们带回了前PC时代的客户/服务器关系(注:又一次印证了螺旋式上升的哲学原理)。如果说云是更强大的主机的话,那么今天的客户端则 比昔日的哑终端更加智能。新的客户机是智能手机、平板电脑,以及更加现代的web浏览器,其本地缓存与计算能力乃富交互应用之精髓。不过,管理客户机与服 务器之间以及跨越不同类别客户机之间的状态会给开发人员带来复杂性。

这个计算新世纪打开了新的市场与机遇之门。这场决定战役的主题是:谁会成为云计算王国的标准平台?

这个赌注很大,不仅仅因为效用计算的开支增长迅速。跟以往操作系统之争一样,这也是一场生死攸关的战争,争夺的焦点是运行于云平台之上的应用之控制权。

Amazon Web服务:王座无可争议

Amazon的Web Services(AWS)初步取得领先。AWS在其核心的弹性计算云(Elastic Compute Cloud)之上提供了一组不断扩展的周边设备,如块存储、负载均衡以及内容交付网络。2011年,AWS的增长率为80%,收入估计将近10亿美元,云 服务的市场前景究竟有多大由此可略见一斑。在最近跟22位CEO的会面中我问他们有多少位在用AWS:每个人都举手。

Microsoft Azure:微软的双刃剑

伟大的桌面颠覆正在发生。桌面应用正一个接一个地被同等的云服务取代,办公、财会,甚至照片编辑均如此。这些服务吸收了诸如跨设备无缝同步(Evernote)、社交、实时协作(Zendesk、Google App)等云的服务器中心架构天生就支持的特性。

对 于桌面的传统霸主微软来说,云平台当然是个威胁。但机遇并存。从目前占统治地位的桌面过渡到新的云前沿,微软也拥有其战略杠杆。微软可帮助早已经熟悉其编 程API和运行环境的桌面开发者扩展其应用。与此类似,让微软的客户群平滑地演进到云服务当中相对也比较容易。所以说,微软携着Azure进入云平台领域虽然有些晚但它有居高临下的优势。微软的问题在于如何挥舞好这把双刃剑才能既可杀敌又能免于自残。

Google的App Engine:失速的平台

在为消费者开发应用即服务方面,Google是早期的领导者,Google的App套件最为人所熟知的。但是Google在为开发者开发自己的云平台App Engine方面的成就则略微逊色。跟操作系统一样,如果能够为应用开发者提供合适的工具,云平台就可以成功。

与微软的Azure和Amazon的Web Service相比,App Engine的开发者工具更高级,更面向Google,约束更多。只支持选定的编程语言,后端存储也存在限制。结果是App Engine在严肃的开发者那里的被接受程度相对较低。

尽管Google在创建自己的云服务方面的能力很强,借助着Android,它在客户端生态系统的存在也不断增强,但如果Google希望在云平台方面与别人一决高下的话,它需要换挡才行。

EMC的优势:数据信任的力量

EMC 是最后一个有竞争力的大玩家。跟Amazon、微软和Google不一样的是,EMC跟消费端IT的距离很遥远,主要面对的是企业。EMC的根本优势是数 据。它的服务器已经为一些全球最大型的企业的宝贵数据提供托管。这是一项很强大的战略优势,因为数据既是云价值的核心,也是其漏洞的来源。

云从本质上来讲属于数据操作系统(如Tim O’Reilly对互联网的评价一样)。云服务的价值在于连接—通过电子邮件、社交媒体、业务仪表盘等与整个星球颤动的数字脉搏相连。

不过数据不断增加的连接性也带来了漏洞风险;消费者隐私被侵犯的事件一定会越来越多。对于企业来说,很难评估数据安全性方面的敏感性。数据的价值独一无二,是不可替代的企业资产,其损失不可以金钱来进行衡量。

EMC已经赢得了要求严苛的企业的信任感,让他们放心将自己的数据交给EMC。EMC可以凭借这种信任发挥优势。相对于Amazon的公有云,EMC提供虚拟私有云(VPC),EMC很聪明,它意识到“公有云”这个词对于企业高管来说跟“公共厕所”和“公共泳池”差不多。

风云变幻,定局待时

云平台的王者之争至关重要,因为这跟其他的平台之争一样,这场决斗的结果也是胜者为王,赢家通吃。一旦某一初创企业将自己的数据放在了Amazon的S3存储服务上,那么它再将自己的Hadoop集群部署在Amazon上也将是一个划算的选择(带宽成本更低),同样,跟其他已经在Amazon上面的服务提供商的协作也会更好。

被锁定在一个平台之中的风险促发了某些云计算方面开源标准的发展,最值得注意的是OpenStack,这个标准已经得到了IBM、Rackspace以及HP的支持。

谁能够成为市场霸主取决于其发展势头、迁移成本、安全以及对开发者的友好程度(API设计、标准、文档)的综合较量。胜出者将会成为下一代原生云应用及服务基础性的操作系统,并将获得丰厚无比的物质回报。

无论谁将胜出,有远见的公司都能够继续享用云操作系统所赋予的存储、计算及网络虚拟化的好处,同时能够将自己的创造力集中在这个技术栈之上的地方。其结果将是应用即服务型初创企业的百花齐放,会对已有的技术公司和整个经济产生颠覆性的影响,好戏才刚刚开始。

完成比完美更重要?请三思而后行

“发 布或死亡”、“完成比完美更重要”、“只需发布”,最近我们发现类似的话成为越来越多团队的箴言。他们赞美达成带来的荣耀,却忽略了完成的目标是为创造价 值,而不是构建一个创业公司。这种“发布(ship)”心态可能带来危险的效果,并让许多创业者做着一些平庸、多余或不重要的工作。

发布至上的优势

为 什么这种达成至上的心态会变得如此普遍?其原因并不是他人的鼓动,而是这样做后带来的体验使然。当自己做的产品已经部署并且确实也有用户在使用时,给团队 带来一种正整体向上发展的感觉。有时候这也只是自己的遐想。当你想快速测试一个想法或小特性时,”达成”的想法或许会有用。不过有时也会得到错误的反馈。

发布至上的风险

这也是问题所在。当你正享受达成的快感时,实际你正面临这样两个风险。

→ 发布错误的东西

如果自己都不认可即将发布的产品或新特性,那就是一个错误的“发布”,结果只能是南辕北辙。就算你因此获得一些反馈,并通过及时纠正让自己学会变得更快,但这些反馈也可能让你误入歧途。

→ 发布一个平庸的产品

“发布至上”最大的问题是:很多时候品质得不到保障。因为发布的产品本身就考虑欠周全,所以即使便获得反馈,也不能反映出自己真实想法中存在的不足。

回归品质

再回归品质来看,实际经验表明,高品质的内容会带来惊人的回报。

从上面这个图形我们可以得知,投入的时间与精力对产品价值的影响。当你投入更多的时间和努力到工作中后,可能获得高达10倍的效益。额外工作回报率非常简单,竞争对手可能很早就已放弃。或许他们解决问题很容易,但使用的都是最基础的方法。

此前,乔布斯曾对品质有如下表述:

首次着手解决某个问题时,第一个解决方案通常是很繁复的,而大多数人也止步于此。但如果你继续尝试,通常会获得一些非常优雅、简单的方案。大多数人只是不愿意在这方面花费时间和精力。我们相信客户是聪明的,他们想要一个考虑周全的产品。

品质不等于行动迟缓

有人认为精力集中于品质,将导致的最大问题就是行动迟缓。实际的经验告诉我们,事实并非如此。很多时候快速发布产品后,一旦出现问题,将花费更多的时间进行弥补。这样实际上花费的时间,比一次做好所花时间更多。也就是我们常说的欲速则不达。

找到平衡点

Facebook提出的“完成比完美更重要”确实是一个不错的箴言。但如果将其作为创业者的普遍行动指导,恐怕不合适。事实上更深层次的东西,我们无法通过一句话获悉。

这就是为什么Dropbox用了18个月时间才最后发布。Evernote花了大约两倍的时间构建出原生客户端应用程序,以取代简单的移动网页版本。另外还有Square的品质困扰;Quora花三个月去找出的唯一有问题的那个页面等等,这些都不是偶然。

更好的产品需要经过深思熟虑,才能最终获得胜利。特别是在生态系统不存在转换成本,并能通过排行榜赢得市场的情况下,更是如此。

Android 4.0:该来的总会来的

业界消息称,华硕、三星、索尼等大量厂商都已经纷纷完成了Android 4.0操作系统的测试和认证工作,很快就会为旗下设备提供全面升级服务。Android 4.0其实早在2011年11月就已发布,但大多数厂商的旧设备均未获得升级,不过随着各家陆续公布升级计划,Android 5.0又很可能在5-6月份就露面,局促的更新换代进程让厂商们忙得颇为焦头烂额。

而且厂商们最优先考虑的肯定是开发新设备,然后才会为旧设备提供升级,所以大多数厂商都无法按照预定计划完成Android 4.0的升级。

华硕第一代Eee Pad Transformer已经享受到了Android 4.0.3,三星则在率先更新了Galaxy S II i9100之后又会陆续升级Galaxy Tab 8.9、Galaxy Tab 10.1、Galaxy Note。

索尼的Tablet P/S系列平板将在四月底获得Android 4.0,带来增强的用户界面和新功能。

除了Android,各家厂商也都在忙于Windows 8系统的相关设备开发,毕竟它会同时支持x86、ARM。

Android 4.0:该来的总会来的

开源者的信仰正在崩塌

GPL 协议的自由软件分享规定对于一些个人和企业是一种约束,这让许多开发者或者公司开始转向使用 Apache 许可协议,Apache 许可协议允许人们使用、修改开源代码,但没有要求使用者必须公开分享自己的源代码。这让许多开源运动支持者开始质疑,开源者的信仰是不是已经改变?

Sleepycat 软件公司 CEO Mike Olson 作为开源运动的先驱,却不是一个开源软件狂热分子。他对开源运动有自己的理解,并作出了与众不同的举动。

早在 90 年代 Linux 还未盛行时,Olson 在建立开源软件 Berkeley DB 资料库过程中作出了不小的贡献。而作为 Sleepycat 软件公司的 CEO,他利用一个类似于 GPL 的协议——对于 Linux 发展非常重要的自由软件协议,将这个资料库成功转入商业化。GPL 协议规定:如果你完善了某个自由软件并将它的代码应用在一个大型软件产品中,那么你需要将你的这个产品再共享给自由软件用户。

在 2009 年,Olson 建立了 Cloudera——第一个利用 Hadoop 牟利的组织,基于谷歌软件基础结构的开源数据运算平台——他用 Apache 许可协议替代了 GPL。Apache 许可证不要求使用者必须将软件再次共享给大众。你可能会觉得这样的许可协议一定会阻碍开源世界的发展,但 Olson 认为存在这样的不一样的声音是很有必要的。

Olson 绝不仅仅是唯一一个支持 Apache 许可协议的。据一组统计数据显示,当今世界上许多开源项目都在从有约束性的许可协议(比如 GPL 协议)阵营中转投宽松的许可协议(如 Apache 许可协议)阵营。并且,许多开源运动关注者——包括长期关注的专家 Matt Asay 和一名来自 RedMonk 对开发有兴趣的研究员 Steven O’Grady,都认为这样的改变将会给开源世界带来更好的发展,会有更多的人加入开源阵营。

“商业化的开源项目都开始向 Apache 许可协议模式转变,而 Olson 只是走在了这些人的前面,”多年来一直轻视 Apache 许可协议重要性的 Asay 指出,“他就是在幕后一直嘲笑我们这些 GPL 支持者的家伙。”

这场运动最大的力量来自于互联网巨头,包括 Facebook 和 Twitter,他们相对于传统的软件公司对开源有着非常不一样的态度。但随着这些巨头以及他们的项目源源不断加入到支持宽松许可协议的阵营中来,产生了 一大批利用开源获利的公司,如 Cloudera,他们避开了 GPL 以及其他的约束性许可协议,很可能吸引商业公司的注意。

相对于 Apache 许可协议,许多公司都担心 GPL 协议,担心 GPL 协议会让他们公布自己的私有代码。但是在 Apache 许可协议内,这种担心就没有必要。对于 Olson 以及其他人来说,这不仅仅是鼓励他们使用开源工具,也是非常有利于 Cloudera 这样的公司从自由软件中赚钱的。

Apache 许可协议受到青睐

Black Duck Software 一直在跟踪调查自由软件许可协议,根据其统计,约束性许可协议例如 GPL 仍然被广泛的使用。但现在,自由软件运动逐渐成熟,而且互联网改变了这场运动的经济状况,Black Duck 的统计表明,GPL 的影响力相对于许多如 Apache 这样的宽松类许可协议来说正在逐渐下降。

有数据显示,GPL 协议的项目使用率正在由 2008 年的 70% 下降到现在的 57%,而 Apache 以及 MIT(另一个宽松型的许可协议)的使用率则分别由5% 上升至 11%。

Free Software Foundation,由 GPL 产生的非营利性公司,它的一名许可协议服从工程师 Brett Smith 认为像 Black Duck 公司的统计数据具有误导性。“他们所得到的数据不是完全公开的,所以通过那些数据计算出来的数字无法表明什么”,他说,“以后 GPL 或者其他许可协议如何发展很难预料的。”但其他人,如 Redmonk 的 Steven O’Grady 和 OuterCurve Foundation 的执行董事 Paula Hunter, 一名微软后端开发开源的提倡者,他们认为他们看的东西发展趋势是和 Black Duck 公司看到的一样。(Black Duck declined to be interviewed for this story).

很明显的,最近几年很多开源项目都姿态鲜明地选择了 Apache 许可协议,包括云计算平台如 Hadoop、OpenStack、Cassandra 以及 CloudFoundry。另外,Node.js 遵循的是 MIT 许可协议。甚至一些著名的移动平台也加入了这一阵营,比如安卓手机操作系统就支持 Apache 许可协议,惠普之前则公布了开源的 Palm’s webOS 平台加入 Apache 许可协议阵营的时间表。

巧合的是,许多项目都是来自大的互联网公司。“相对于我们以前所看到的,他们对待开源有截然不同的态度” Steven O’Grady 说,“他们不再像以前那样重视代码了。这些公司在五六年前将代码视作私有——他们认为这些代码是与众不同的——但现在却公开了。”

包括 Facebook 以及 Yahoo 在内的通过 Hadoop 引导的公司,他们不以出售软件为主要业务。但那只是部分的情况。他们通过利用别人的开源软件建立业务运营,所以他们也愿意把这些再分享给别人而不索取回 报。但同时,他们知道其他人也是这么想的,所以他们知道,无论怎样,回报最终还是会到来的。

O’Grady 认为 Twitter 是另一个很好的例子,他们的项目是开源数据库 FlockDB 以及开发者工具包 Bootstrap。还有 Rackspace,他们的 OpenStack 是一个提供虚拟计算资源的亚马逊互联网服务平台。

这样的趋势不会停止,在开源项目周边,有无数企业如雨后春笋般出现,它们希望帮助世界各地采用该软件,然后从中牟利。Facebook 的数据库 Cassandra 催生了 Texas-based DataStax、Hadoop 催生的不仅仅有 Cloudera 还有雅虎的子公司 Hortonworks、Rackspace 围绕 OpenStack 建立了自己的服务部门,还有 Node.js 的管理员 Joyent,利用开源开发平台售卖软件以及为一些公司做服务。所以说,Mike Olson 并不是个例。

GPL 协议是否是毒药?

在 Olson 还在 Sleepycat 的时候,Berkeley DB 基于 GPL 协议获得了一个“强有力的非营利性版权”。你可以免费使用 Berkeley DB,但是如果你用了,你可能不得不用你自己的代码来付出代价。对于很多公司来说,这是令他们非常不安的一个规定。虽然他们想要用 Berkeley DB,但是他们不想放弃自己多年开发的软件。但 Sleepycat 提供了一个空子让他们来钻,如果你支付给 Olson 和他的公司一些费用,他们就能给你提供不同的许可协议来允许你持有你自己的代码不公开。它被称之为双重许可协议的技巧。

“GPL 协议是一种毒药,而我们能够卖给你解药。如果你不希望你的源代码受到 GPL 协议的影响,你可以购买一份不同的许可协议。”Olson 说,“这对我们来说,相当成功,但是我们永远没法成为一个年收入上亿的公司。我们的商业交易建立在我们的顾客被威胁的基础上:‘除非你给我钱,否则将危及 你的知识产权’,那不是开始商业行为的好方式。”

而在 Apache 许可协议下,Cloudera 完全改变了状态。本质上,你可以以你喜欢的任何形式使用自由代码——不需要贡献任何你自己的代码给其他共享者。而 Cloudera 则利用出售支持以及增加串联 Hadoop 的私有软件进行赚钱。这起到了在自由软件与非自由软件间搭建桥梁的作用!

“开源是我们所做的工作中很重要的一部分。我们有一半的工程师都工作在(Hadoop)开源项目上。”Olson 指出,“但更重要的是,我们需要将自己和其他市场区分开来,这样可以让用户有充分的理由认为我们是特别的。”

有些人称 Cloudera 是一个“开放核心(open core)”公司。项目的核心是开源的,而 Cloudera 所提供的周边的付费软件则不是开源的。但这个名字并不是一开始就有的,“开放核心(open core)”在公众的嘴里是一个否定的词语,因为它在暗指 Cloudera 是伪开源的。

Mike Olson 不关心别人怎么称呼 Cloudera,只要能带来利益,人们怎么称呼它都无所谓。

开源的实用主义

神秘的 Cloudera 很少谈到他们的收入,但他们的客户名单上却不一般,他们拥有包括 Groupon、Rackspace 以及 Samsung 这样的大客户。对于 Olson 来说,Cloudera 的发展已经超出科技领域冲进华尔街和生物医学领域了。这个公司成功最重要的部分,Olson 说,就是 Apache 许可协议。他理解人们为什么喜欢 Free Software Foundation 创始人 Richard Matthew Stallman 创建 GPL 协议,并且,在很多年前,GPL 对 Olson 来说也是好东西,但现在,这是新的时代了。

自由软件运动的精神领袖理查德·马修·斯托曼(Richard Matthew Stallman)

“我不相信政治或者宗教信仰会是稳妥的商业基础,”Olson 讲到,“如果你和早期的一些自由软件者聊天,所有的内容都是关于权利和责任的——我明白为什么 Richard 对那东西感兴趣——但如果你作为一名商人,你必须抓住用户、市场以及商业机会。GPL 确实能够给你赚钱的机会,但是还有其它的合作的许可协议能够让你赚的更多。”

Apache 的优点是很少会带给潜在客户威胁。“如果你希望软件被使用,你需要一个 Apache 许可协议,”国际法律公司 DLA Piper 的合作伙伴 Mark Radcliffe,一个专攻开源软件的家伙如是说,“在与之打交道的过程中,很少会遇到复杂的法律问题。”并且,一旦你有了用户,例如 Olson,那将会有大把的机会赚钱。

当开源他们的源代码时,很少遭遇复杂法律问题是许多互联网公司选择 Apache 许可协议的另一个原因。“将开源发展融入他们基本开源项目战略的原因有很多,发展趋势只重要的一方面,但你们不要担心这种情况会发生在 GPL 那里。”Radcliffe 讲到。换句话说,他们不用担心要开放自己不想开放的那些代码。

最重要的宗旨是基于 Apache 许可证下,开源代码与私有代码自由混合是被允许的。Olson 认为这是未来的发展趋势,而像 Oracle 以及 IBM 这样的巨头已经围绕开源软件项目建立了成功的商业模式。“我想,开源商业化的成功将会更像 IBM 或 Oracle 多一些,像 Red Hat、MySQL 或者 Sleepycat 少一些。”

他认为,即使没有类似 GPL 这样的协议存在,这些公司也将会继续促进开源项目的发展,因为他们现在开始意识到这些项目能带来的利益是可观的。“随着行业的逐渐成熟,我想人们已经认识到相互协作的价值,”他说,“你们不需要去吓唬或者逼迫他们。”

只是,这样的“开源”还是不是开源者最初所信仰的“开源”?(翻译/魏兵)

为什么设计师创造的编程语言更受欢迎?

在编程的世界里,语言纷繁多样,而大部分真正广泛流行的语言并不是那些学术界的产物,而是在通过自由发挥设计出来的。

和那些在最后期限重压下产生的语言版本比较起来,从一定程度上来看,从学术界产生出来的编程语言是失败的。当然,并不是全部。事实早已证明。本文作者Cristina Videira Lopes是一位来自加州大学欧文分校的权威计算机科学家,下面是她的关于编程语言的研究:

开发者喜欢用的语言:

  • PHP – 1994年由Rasmus Lerdorf 设计。“最初设计PHP的目的只是用在他的网络简历上来追踪访问者的,他将它命名为‘个人主页工具’,通常简称为‘PHP工具’。”根据langpop.com的非正式调查,它是排名第四流行的编程语言。
  • JavaScript – 1995年Brendan Eich开始使用。“JS(JavaScript)看起来有点儿像Java,更确切地说,像Java傻傻的弟弟一样。在10天里我只能这样做,否则就会出现比JS更糟糕的东西。”归功于网络编程,JS可能已经成为目前最流行的编程语言。
  • Python – 大约在1990年由Guido van Rossum设计。“我当时只是想找一个感兴趣的编程项目来打发下圣诞节假期的无聊。”(第六流行的编程语言)
  • Ruby  –  大约在1994年由Yukihiro “Matz” Matsumoto设计。“我只是想有一种语言可以比Perl更强大,比Python更好地面向对象,就是这促使我去设计我自己的语言。”

相对的,由那些热衷于内部一致性和正确性的学术派设计的语言却包括了一堆濒死的语言(mostly dead tongues):Fortran, Cobol, Lisp, C 以及Smalltalk。唯一的例外是.NET平台的编程语言和Java,这两项分别由微软和Sun公司花费相当大的投资才出来的项目。

回顾这一历史,以及自己的学术生涯,Lopes觉得象牙塔里创造不出适合人们使用的语言是因为其把编程当成一种科学,而实际上,它更是一种设计。

——我非常想把设计带入到我的日常生活中,我喜欢让我的学生投入到诸如程序语言和程序环境这样的设计中去——在这领域,我有很多想法。我相信对于设计的评估标准是不同于科学和数学的验证的。

Lopes说,实际上,网络迅速地发展也是因为给予了学术界的程序员自由发挥的空间。

——在与科学相违背的一个较好的设计案例就是Tim Berners-Lee向CERN提出的用HTML构建网络的建议。这个建议没有经过任何科学验证。那只是个有趣的关于“信息互联系统”的很好的建议。我甚至可以想象出TB-L的经理当时的想法:“啊,好吧,这个很有趣。他是个聪明人,他需要多少资源,我们就让他做做看,看他能做出什么来。即使最后什么都没有,也没什么大不了的。”TB-L并没有为了这个系统而先写出一份“科学设计的评估报告”,然后“在第二阶段,我们要把它装在很多的机器上”,否则今天这个世界可能会变得大不一样,因为他也许为了那些不需要的证明而陷入黑洞里了。

在程序语言里,这些很多时候可归因为人性:如果他们不好用,他们便不会被广泛采用。正因如此,有的程序语言和完整的系统(如UNIX)在某些人眼中已经被当作计算机病毒看待了。如果可以衡量,这类问题反而会变得困难。正因为是主观的,所以可以通过设计而不是科学来解决。事实上,那些计算机“科学家”仅仅是字面上的“设计者”。毕竟,代码如诗。