Asm.js和Blink

在沈阳不想睡,用手机看RSS,看到John Resig刚出炉的博客。记得前些天还在群里跟大家聊说觉得现在浏览器不该出各种新语言,每种都编译成Javascript,而是应该出一个字节码标准,各平台实现自己的优化解释器。出一个标准不容易,更实际的做法是选择Javascript的一个子集作为“字节码”(编译目标),这正是Asm.js干的。其实很多事不是想不到,而是想到了没有做——跟没想到一样。目前Firefox针对Asm.js做专门优化,速度只比C++慢两倍,应该慢慢可以与Java不相上下。将来各JS引擎跟进,Web平台的运行能力将大大加强,必将催生出更多可能性。

最近看各个项目,发现成功的软件在于雕琢。软件架构、性能、接口不一定要完美,但是一定要完善才有真正的用户,否则只是玩票。所以人们虽然热爱开源,仍旧会选择有商业支持的平台和软件包,因为真正做事的时候,需要完善的文档和稳定的系统,也没有时间和精力去修复Bug。如果没有商业软件,开源软件也很难精益求精。

第二天回家就看到Google宣布开发WebKit分支Blink。自从Google宣布要关闭Reader之后,就很难估计它会做什么,不会做什么。Chromium会fork掉webkit应该说不让人意外。WebKit对于各平台的支持方式有点古怪,每个平台都维护一个相当大的Port,功能各异;主流Port都在主干里;构建方式很多种;WebKit1不是multi-process架构,WebKit2没用Chromium的架构,Chromium也不会用WebKit2;一方面要增加自己的功能,一方面还要照顾情绪,不改变WebKit的Shape,于是抱怨说“This has slowed down the collective pace of innovation”,其实就是觉得WebKit拖后腿了。Chrome也一直认为多个产品解决相同问题可以促进竞争和创新。不过近来有点怀疑“公司意志”或“集体意志”这类东西,文化固然存在,但非终端用户产品的关键决策仍然是几个人的头脑风暴,跟这几个人当时的处境和心态密切相关,存在很多偶然性和非文化相关的必然性(比如WebKit和Chromium,Google和Apple)。