当今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的程度吧,也支持调试。

image

第二个期待的理由是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的优势,没有理由不期待一下。

posted on 2012-05-29 13:46  小城故事  阅读(30546)  评论(10编辑  收藏  举报