当今IT业界,三足鼎立。三巨头中,Google还如同赤壁后的刘备,正处于全面出击时期,生态系统还未成型。Apple有OC,Microsoft有.NET,Google只能用最普通的C++和JavaScript,还有个Java,整天被人讨着要专利费。这种借荆州的日子怎么能忍,Google先推出了Go语言,欲取代C++和Java;去年底又推出了Dart语言,目的想取代JavaScript,不仅是自己用,而且想彻底打破Web开发僵局。
互联网时代开启以来,互联网这么多年来总体是以超高速发展。然而根据辩证法还是什么法则,事物发展往往是螺旋上升的。互联网这么多年来也经历了两次低潮,一次是2000年泡沫破裂,另一次就是现在这次,这一次不像2000年那么大起大落,却是Web高速发展多年后瓶颈矛盾的交织,加上金融危机后余波未散的影响,恐怕互联网未来数年内将处于一个整合期。如今各种势力明争暗斗,业界形势错综复杂,如雾里看花。
Dart(飞镖)就是Google逐鹿互联网天下的利器。现在还处于待而未发的状态,至于会不像小李飞刀,例无虚发,我认为可以期待Go。
期待的第一个理由是Google很重视Dart,虽然是半成品,至少不是像Go语言那样的试验品。Go语言,连个IDE也没有,官方网站简洁到土,土到掉渣,好像连CSS都没用似的,一看官网,学的欲望就下去了一大半。Dart的官网看上去就又简洁又详尽,从API到FAQ,该有的都有了。
要体验Dart很简单,如果装了Java SDK,只要下载个集成环境(只有145M),解压缩,运行DartEditor即可。作为初代IDE,界面很不错了,我觉得相当于VS2003的程度吧,也支持调试。
第二个期待的理由是Dart的语言特性,官网上文章介绍说Java程序员可以一小时熟悉Dart语法,那C#程序员半小时就够了。看那句 list.sort((a, b) => a.compareTo(b)),是不是倍感亲切?当然Dart刚刚起步,语言特性没有C#那么丰富,比如没有特性、反射之类的支持,不过能看出其该有的总归会有的。
第三个理由,Dart从一开始就是开源项目,我们都可以参与其中,如果有一个Dart也成为像C一样不朽的语言,我们还可以名留青史呢。
第四个理由,是Google推广Dart的资本,不只是出钱出人,而是靠对互联网的话语权。Chrome浏览器份额稳步攀升(Chrome超越IE的意义),Dart 1.0正式发布后,Chrome就将支持。
第五个理由,Google把Dart的定位摆得很正。Dart目标是取代JavaScript,而Google的目标却是让Web变得更好。虽然其他势力,如微软不出所料地不待见它(谷歌Dart语言遭微软泼冷水)。为推广Dart而排斥Javascript,那样的极端路线会碰得头破血流,Google决不会干。多一种选择有什么不好呢?正如FAQ回答的第二个问题,这门语言是Web开发需要解决的问题的方案吗 (Is the language really what needs to be fixed in web development?)
我翻译水平不高,回答大体意思是:
我们想解决所有这些问题。于是有了Dart语言,又有了整个Dart项目。Dart项目押注在语言(JS)需要一些改变,但我们也想改进DOM和其他的库,并改进我们用的工具。
与此同时,Google也对JavaScript能进化以适应需要下注,并作出贡献。Google想让Web开发更棒,如果JavaScript能够做到,我们也很高兴。
Dart如果取代JS,也将是十分平稳流畅。Dart与JavaScript编译器密不可分,Dart测试环境Dartium(和Chrome差不多), 就是将Dart编译成JS执行。DartEditor中也可以直接把Dart代码编译成JS文件,即使现在就用来做Html5开发,效率也比写JS要高,相当于另一门haXe般的“上帝玩偶”。
下面这个是我用Dart编写,用来演练Canvas画图。
Show
就我个人而言,还有更高的期待,希望有一种语言,能为Web开发和桌面开发带来统一的体验。Win8里有这种趋势,桌面应用也可以用Html5创建,可惜不是用C#,而还是不给力的JS。
而Dart是往这个方向走的,不过还有很长很长的路要走。我做了个排序测试,目前速度仅达C#的十分之一。首先要实现Chrome上编译为bytecode,解决性能问题。然后就是漫长的推广了。Google最好能自己dog food,先把IDE用Dart实现吧,再让Gmail,Youtube这些把Dart用起来。随着Chrome使用广泛和越来越多人了解Dart的优势,没有理由不期待一下。
更多评论
2011年曝光的Dart语言曾经引起了很大关注,毕竟它系出名门Google,而且背后是V8引擎和Java Hotspot两大虚拟机的缔造者Lars Bak,团队里还有Gilad Bracha(Java语言和JVM的核心之一),最近的文章表明,C#、LINQ和Rx的英雄Erik Meijer离开微软后也参与了Dart的开发。他们这三人可都是荷兰计算机科学圈真正的精英。Dart的雄心不言而喻:首先满足Google内部团队提升开发效率的需要,然后图谋替代因为各方利益不一、发展缓慢的JavaScript,而且不仅在浏览器端,通过Dart VM,像NodeJS那样统一前后端也是可能的(Node爆火与V8的给力有直接关系)。
但是今天Lars Bak与Kasper Lund的博客“Dart for the Entire Web”却表明,Dart语言的宏大梦想已经破灭。文中表示:Dart VM内置到Chrome的计划已经放弃,团队将把精力集中到Dart到JavaScript的编译工作上。
这意味着Dart将不太可能成为一门广泛应用的独立Web语言,取代JavaScript已不可能。
Lars Bak本身是做虚拟机出身的,Dart VM项目并没有停止,另一名团队成员表示,VM团队在全速前进,而且因为没有了Chrome的负担,项目反而更加轻快了。此外,Dart2js也在不断改进当中
#2