w3ctech

【翻译】NCZ新文章:Web平台发展得过大了吗?

原文:https://www.nczonline.net/blog/2015/09/is-the-web-platform-getting-too-big/

Peter-Paul Koch最近写了一篇博客,叫“停止向前推动Web吧”(Stop pushing the web forward)。在这篇博客里,他提出暂停一年时间,这一年中不要向Web平台添加任何新功能。所谓新功能,他的意思是HTML、CSS和JavaScript的新API和新特性,他说:

我们越来越多地以模仿原生的方式来推动Web向前发展,可我们不能脱离原生再造一个原生。试图填补一切的工具大爆炸,让我们眩晕,压得我们喘不过气来。而这些说的正是大多数浏览器今天的功能。这不是我想要的Web的未来。

他提出,停一年能让我们有时间熟悉所有新增的功能。对于我们开发者来说,这非常重要,否则要跟上这些新功能非常困难。

遗憾的是,他这篇博客下面有很多留言都对他的观点不屑一顾,甚至出言不逊(人们常常叫他“怪老头儿”,意思是他的理解有错误),而我觉得这非常不好,因为我认为PPK点出一个我们必须面对的问题:创新乏力。

创新乏力

在跟一些比较资深的工程师交流时,他们最常问我这么一个问题:

你怎么做到与时俱进?技术变化这么快,我好像总会错过一些东西,然后就觉得很没劲,想着是不是该离开这个行业啦,因为好像其他所有人都站到了潮流的前头。

对这个问题,我通常会这么回应:

我做不到。想不错过所有新东西是不可能的。对新生事物,只要大面上了解一切就行了,等到你要用它,再去研究。经常浏览一下微博朋友圈里别人发的文章标题或链接,知道个大概其就够了,不要浪费时间企图掌握一切。用的时候再说。

说实话,我也不喜欢自己这个回答。我还记得当初自己曾觉得似乎通晓了有关浏览器一切(当时只有两个浏览器)。在写我的第一本书Professional JavaScript的时候,我想把开发人员应该知道的所有JavaScript和浏览器API相关的东西全包含在内。很大程度上,可以说我做到了。但到了第3版的时候,就不行了。我意识到,不可能在这一版里包含所有东西。这件事让我很郁闷。

我想PPK在他的博客里多少也流露出了类似的感受。众所周知,他投入了大量个人时间,用来测试和归结各种浏览器的特性和问题。他一定也像我当初一样苦闷,因为Web不再是某一个人可以完全知晓的了。事实上,他在后来的博客中正是这么说的:

……之所以反对这个观点,原因之一就是我清楚地记得过去的日子,当时我可以如数家珍地列举出三个浏览器的特性。(我是说过去。)

我承认当时知晓一切的感觉很好,但就算我们再天真,也应该知道这是不可持续的。任何职业都有从业人员必备的知识体系,需要的时候必须钻研。看看那些律师和会计师的办公室,你会发现装满各类参考书的大书架。技术圈也一样,找个Java程序员聊聊,听听他在面对同一个问题的无数种解决方案时的感受,你会发现Web开发者过去的日子有多幸福。

暂停一年

我宁可相信PPK并不指望自己写一篇博客就能真的让一切停下来,不过我们倒不妨借此机会回顾一下当初IE6统治世界并导致整个行业停滞的那段时间都发生了什么。IE6在打败Netscape之后,IE团队就被解散了。微软赢得了Web,不需要考虑再干什么了。那个时候,IE6就是Web的代名词,没有任何新特性。

从2001年到2006年,停滞了整整5年,结果表明是一件好事。正如Douglas Crockford在演讲中多次提到的,这次停滞给了开发者追赶和掌握既有技术的时间。浏览器大战期间,创新的速度很快,而IE与Netscapte之间不兼容的新特性越来越多。这就要求开发者不断学习做同样事情的两种不同方法。为兼容两个浏览器而做页面和应用开发很累很郁闷,因为什么情况下采用什么技术经常都查不到资料。而突然有一天不增加任何新特性了,我们终于可以喘口气了。

有人可能知道,Professional JavaScript第1版是2005年出版的,恰好是这一段停滞期的尾巴。这本书是我花了2003年和2004年大部分时间写的,我觉得它已经囊括了当时世界上JavaScript相关的所有重要信息。其实也不只是我,很多博客如雨后春笋般涌现,人们争先发表自己对JavaScript及其运作过程的理解和经验。

这段停滞期给了Mozilla时间让Firefox迎头赶上,也孕育了Ajax浪潮,而最终导致微软被夺走了Web之王的桂冠。

Web失败了吗

那要是我们现在开始暂停会如何?PPK观点的主要反对者相当悲观,此情此景我再熟悉不过了:如果我们停止创新,Web将一败涂地。这种调调我在近几年听到很多很多。“我们要保证Web胜出”或者“我们不能让Web失败”。我们在玩什么游戏?谁是Web的对手?我们在做什么他们没有做的事情?

多问几个类似的问题,有人就会说了:如果我们停止创新,原生开发会干掉Web开发。眼下,我拿不出数据来证明这个论断不对,但同样也没有数据表明它对。而且,我也并不认为这是一场原生与Web之间你死我活的争斗。可是,一旦你持有这个观点,我就能理解为什么你害怕停滞了。因为停滞意味着要落后,而对手还在继续创新。

我不知道是不是真的存在这么一场战争,还是说只是有人想象中有一个敌人或者一场战争,所以才会导致不断推出新特性。我个人认为,原生战胜Web理论上不存在可能性,特别是你没发现很多原生能力其实都是从Web平台上借鉴过去吗(比如React Native)?而且,也没有迹象表明混合移动应用短期内会消亡啊。

原生平台有没有非常酷的东西如果移植到Web上会非常赞的?当然有。可是我很难同意这种借鉴只是单向的。貌似原生平台正越来越多地在模拟Web开发体验,因为后者速度更快。况且很多人本身就熟悉HTML、CSS和JavaScript,还有很多非常给力的工具。

所以,我不认为Web会败给任何平台,也不认为原生和Web两者必须淘汰一个。我想起了乔布斯1997年回归苹果时说过的一句话:

如果我们想发展,想看到苹果东山再起,重振雄风,就必须摒弃所谓苹果必胜,微软必败的观念。

我觉得同理,Web和原生也一样。

(如果你研究过任何与此相关的内容,请在评论里加上链接。我还没有看到任何数字表明存在Web与原生之争,或者说哪一个平台胜利了。)

总而言之

我很钦佩PPK敢冒天下之大不韪,抛出这么一个有争议的话题,引发人们思考和讨论。在我心里,我非常看到停滞出现,但那很大程度上出于我自己企图抓住一切新生事物的私心。这是我只考虑自己,所以想让这个世界改变,好让我可以停下脚步。这个想法是不客观不现实的。然而,我也因此理解了PPK的出发点,那是许许多多开发者共有的感受。

Web平台的快速发展让人眼花缭乱,有时候甚至让人头晕目眩。想象一下,一个新入行的人,学什么都无法深入是什么感受?每过6个星期(浏览器的新版本发布),都有新的做事方法加入进来,简直就是无穷无尽的轮回,我相信所有人都希望跳脱这个困境。

与此同时,我们正经历的创新意味着复杂问题的解决方案正离我们越来越近,而不是越来越远了。我们不必等再待数年,才能找到一种方法克服浏览器的缺陷。很多时候,只要等几个月,就会出现解决方案。

最后,我想附议PPK在他第二篇文章的观点:我们真正需要的是Web平台持续发展的唯一真相来源。我曾经指望过webplatform.org能扮演这个角色,结果并没有。我们真正需要的是一个地方,这个地方兼容并包了所有Web平台特性的状态,包括标准工作、浏览器实现和进度。如果我们能搞出来这么一个社区,对下一代Web开发者将具有极大的帮助。这样,他们就不用再浏览Edge的更新、Chrome的更新,不用再搜索GitHub去了。我们想在一个地方了解一切。这才是我们值得在未来去努力的。

w3ctech微信

扫码关注w3ctech微信公众号

共收到8条回复

  • 然并无

    回复此楼
  • 前端工具开发的确实感觉太快了,学习成本大部份又特别高,走得慢的就要被车轮压成页面仔了。

    回复此楼
  • 技术更新实在太快了,赶不上啊

    回复此楼
  • 再怎么快,都是符合自然进化的。目前快是因为历史积压了太多一下子爆发出来了。

    回复此楼
  • 停滞是不太可能的

    回复此楼
  • 不能为了方便你写书,就让技术停止发展吧。。。

    回复此楼
  • 现在已经跑起来了,马上就要起飞了。谁停谁知道

    回复此楼
  • @bt404 哈哈,看来你没有认真看,他这个只是一个思考,而且他也不断在反对他自己一些想法。

    回复此楼