如果我们想继续往前走更远,我们必须修正标准。这是一项必须非常小心的事情。标准的修订是一种暴力行为,如同外科手术一样。只有在标准带来的好处远远高于它本身的耗费及缺点时,标准才能真正被使用。互联网并没有预先的软件升级管理,这使得它成为了一个非常复杂的环境,就比如IE5,一个非常非常古老的浏览器,其用户份额却比Safari和Opera加起来还要更多。正因为如此,标准的改变将使开发者陷入一个非常困难的环境,很多对于某些浏览器的优点却可能变成其他浏览器潜在的错误。开发者必须管理并减小这些差别,但这却是不容易的。同时,开发者未能更好的适应使用新标准也增加了他们工作的难度。
我觉得,把基于标准的系统和并不十分标准的系统放在一起比较并产生革新是非常有益的。JavaScript是一个非常有希望的语言,但它的自身也非常不成熟,它被过快的不负责任地扔入了浏览器市场,又被不负责任地扔入了标准的圈子里。为了避免潜在的版权纠纷,这项标准被称为ECMAScript。它最后更新的时间是1999年。
非常显而易见的,这门语言需要更新升级了。但是TC39在如何更新的问题上,却不能达到一致。所以他们分成了两个小组,分别实现各自的目标。这样的健康的竞争是非常有帮助的,我也相信竞争会改善两组各自的目标。 但是,这也是个不好的事情,因为没有一个标准组织会接受一项标准拥有两个不同的提议。如果不能达成一致,这两个提议都将会失败。
其中一项提议被称为ES4。这个名称的使用很不幸运,因为它强烈的暗示了它一定会是ECMAScript的第四版,然而它并不一定会是。该项目对于新思想新特征非常的开放,并采纳了许多看法,尽管这些思想并没有基于这门语言系统进行充分的分析。结果,许多复杂的特征被采用,并最终提升了整个语言的复杂性。
ES4非常的庞大,也引入了许多新思想,这不禁令人们担心它会不会被成功的接受和使用。更令人不安的是,对于语言的本身,并没有任何使用经验。那些极富吸引力的新特性会不会如ES1和ES3一样产生许多潜在的问题?ES4的制定安排要求这项标准必须被浏览器开发者接受并植入浏览器后才能回答刚才的问题。这会是一个很大的问题,当一个小bug错误的加入了标准,到时候想要去除掉它就会非常的困难了。单独考虑ES4所有的新特性,都是非常有吸引力的。但是全部放到一起,语言非常的混乱。
另一项提议被称为ES3.1。它的名字暗示它相比于现在的ES3只有较少的变革。这个项目的目标是修复语言中存在的诸多错误。新的句法只有在至少三至四个主流浏览器植入并测试过之后才会被考虑加入。他们更多的选择必须的特性,而不是可拥有的特性。
ES3.1更容易接受。新特性的吸引力会较小,但是也更容易实现。ES3.1也可能完成它的文档,从而成为ES真正第四版的候选。
ES4的制定起步很早(估计至少7年之前),然而我们看不到它到底什么时候能结束。最终,由于核心成员的离去,这项工程被搁浅。
现在,由ES4引入的一些合理的新特性,重新成为了一项新项目,被称为Harmony。这个项目的成功与否取决于TC39权衡创新与稳定二者的能力,以及对复杂度的管理上。在某种程度上,简约应受到足够的重视,而不应被矫饰。所以,一些冗余必须被剔除。
现在看来标准的主体并不是一个创新的好地方。这也正是实验室存在的目的。标准必须经过一致的协商,也必须有充分的辩论。如果一个特性很难达成一致,那么它应 该从标准草案中去除。标准的主体不能在有商业目的的情况下设计。它们必须坚持谨慎的设计,这同时是一个相当困难的工作。
我也在HTML5里面看见了很类似的情况。WHATWG的早期对于文档化HTML中没有文档的特性的工作是非常棒的。然而当人们开始只关注创造新东西时,它们开始偏离轨道。在HTML5中存在太多的争议。事情可能会比现在存在的更糟糕。也许,有良好意愿的聪明人是必要的,但是并不足以铸就良好的标准。

RSS订阅