JavaScript大辩论:实施改进还是彻底放弃

译文
开发 前端 新闻
Web开发社区将会一如既往地支持JavaScript并努力将其打造成一流的开发平台,而直接无视掉随之而来的局限性;抑或是“做出一个艰难的决定”,以良禽择木而栖的态度直接投向Dart的怀抱?两种猜测似乎都有道理。

【2011年9月27日 51CTO外电头条】谷歌的Dart语言将矛头直接指向了JavaScript,英特尔的River Trail则进一步推波助澜;这场竞赛正因智能手机应用程序对开放JavaScript的需求而逐步升级。

无论大家如何看待JavaScript,都不会影响它当之无愧地成为现代计算中最重要编程语言队伍中的一员。这是惟一一款能够在不添加任何额外插件的前提下随意运行于全部现代见面浏览器上的语言,JavaScript可谓客户端页面领域的通用表达方式。

这种称号对于一种语言来说算是相当学生的负担了。当然,也并不是每个人都对其投来善意的目光。随着网页应用程序的普及率及重要度不断提升,JavaScript作为应对一切开发需求的解决方案,所面对的压力也在与日俱增。

不可否认,JavaScript在各方面的进步有目共睹。尤其是谷歌已经说服了各家浏览器供应商为JavaScript引擎的性能表现提供最大程度的支持,该趋势也在顶级供应商之间造成了一次小规模的军备竞赛。近年来,Mozilla在其火狐浏览器上已经针对JavaScript引擎做出了显著的改善,但也许微软才是整个事件中最大的受益者。微软得出的结论是JavaScript孱弱的性能表现对IE浏览器并无多大影响。如今微软甚至将JavaScript作为核心语言整合进了其赖以生存的Windows系统及Office办公软件当中。

但即使是改进如此巨大,似乎仍然无法让每个人满意。由于开发人员对JavaScript的要求持续激增,其局限性也就被人为地放大化了。眼下谷歌刚刚放出消息,这家向来倡导以浏览器应用程序代替桌面系统软件的企业长久以来一直在偷偷摸摸地着手开发一款名为Dart的全新语言。该语言预计在即将于丹麦举行的Goto大会上亮相,其设计目的是彻底替代JavaScript这款“存在根本性缺陷”的语言。

说到这里,我们需要思考一下了。Web开发社区将会一如既往地支持JavaScript并努力将其打造成一流的开发平台,而直接无视掉随之而来的局限性;抑或是“做出一个艰难的决定”,以良禽择木而栖的态度直接投向Dart的怀抱?两种猜测似乎都有道理。

谷歌投下赌注

目前关于Dart语言的进一步信息还很有限,估计这种情况会一直持续到Goto大会开幕。当下我们所了解到的大部分情况来自于一份意外泄露的备忘录,该文由谷歌开发人员Mark S.Miller于2010年11月份所写,原文题为“JavaScript的未来”。不过仅从备忘录本身来看,谷歌并非要打一场不是你死就是我亡的惨烈决战,而是希望二种方案在未来的客户端Web领域得以共存。

在备忘录中,Miller在Dart语言的推广方面透露了一套 “风险系数极高”的方案选项,即其成功必须依赖浏览器厂商对JavaScript的“弃”无返顾以及谷歌自身的忽悠能力。而另一种方案——Miller形容为“风险相对较低”——是对JavaScript进行改造以尽量解决其局限性。Miller在文中最有价值的观点在于,他呼吁谷歌不要从上述两种方案中选择其一,而应该将二者同时解决。

而这正是谷歌过去一直在推行的思路。根据来自谷歌、一直效力于Chrome浏览器框架小组的Alex Russell的说法,在沸沸扬扬的争论之中(除了谷歌本身正是Dojo工具包的创始者之外),“谷歌明确承诺将争取改进JavaScript的薄弱环节,我们每位研究人员也一直在为此尽心竭力…而且说句实话,这也确实需要一定的助力。”

Russell所主张的改变并不特别针对测试阶段的应用程序性能以及开发者生产力的提高。JavaScript的开发模式已经经历了多年的发展,而目前所暴露出的问题是相对于其它比较先进的用法,JavaScript在某些语法的处理上略显笨拙。举例来说,Russell希望将类关键字加入到该语言中,以使面向对象的代码更加明确且清晰。他还坦言,如果能有一款API模块用于打造标准化机制的话,JavaScript库的创建将会更加便捷。

JavaScript获得并行处理能力

对JavaScript的改良绝不是个通过纸上谈兵就能实现的简单计划,然而整个修正流程又需要在完全概念化的层面上进行讨论并模拟实施。Russell曾作为谷歌方长驻TC39的代表,参与了由ECMA(即欧洲计算机制造商协会)委员会负责的ECMAScript语言标准化工作,而这正是JavaScript的诞生基础。要对国际化标准进行改进实在不是易事,TC39的成员们在2008年该委员会彻底放弃ECMAScript 4计划时彻底理解了这一点。

不过这种合作的过程还是非常重要的,因为谷歌并非惟一一家希望在客户端Web开发领域抢占先机的企业。举例来说,英特尔希望能使网页应用程序更好地利用现代多核心处理器设计,而Dart语言在这方面的表现还无从知晓。

本周,英特尔将自己的想法通过演示软件的形式派发给开发者们。这家老牌芯片制造商将其“全新JavaScript引擎”命名为River Trail,并介绍称其为JavaScript带来了“并行处理的能力,”根据英特尔公司工程师Stephan Herbut的说法,这将使JavaScript成为一种高性能方案,“并足以应对像照片处理这样的大运算量应用程序。”除了并行处理能力,River Trail还允许JavaScript充分利用现代芯片中的向量处理指令。实验版本的该引擎现在已经能作为火狐浏览器的扩展项目在Github上下载获取了。

谷歌全面进军Web领域

讨论了这么多与JavaScript相关的话题,有一种现象值得思考,那就是谷歌为什么要在这趟浑水中抛出Dart语言?正如谷歌公司的Miller所言,“要想说服其它各家浏览器厂商团结起来支持同一款新语言简直比登天还难。”新语言总是层出不穷,但真正获得成功的却屈指可数。就拿谷歌最为得意的Go语言为例,自从于2009年推出以来除了在搜索巨头自家的办公室里插科打诨以外就没起过什么正经作用。

即便Dart语言将JavaScript挑于马下的机会微乎其微,但它至少为谷歌提供了一款工具,以展示经过“大扫除“之后的JavaScript到底看起来是个什么样子。这反过来又会使谷歌在TC39的讨论中赢得更多话语权,因为毕竟该公司开发出了一套工作原型,否则委员会恐怕要直接把这套方案扔进垃圾桶。

但Dart语言备忘录中最值得玩味的部分是Miller对结论内容的阐述。在他看来,竞争并不会爆发于Dart与JavaScript或是任何一种现存的语言之间;事实上最终的对抗只会发生在Web与“各类备选平台”之间,他评论道。所谓平台,是指类似苹果iOS这样的产品。

越来越多的消费者开始具备两种方式来访问互联网并应用基于Web的信息服务。其中传统的Web浏览器访问方式当然还占据着优势,但不可否认的是转向智能手机作为访问上述服务的主要手段的消费者群体也日趋庞大起来。请注意,他们通向网络的门径可不是什么手机浏览器,而是专用的智能手机应用程序。

问题何在?问题在于像iOS这样的智能手机应用程序平台往往是封闭的、垂直整合且功能专有化的——这恰恰与开放的、以标准化为基础的Web相反。如果这一经过层层分析得出的矛盾正是读者朋友所关心的内容,请务必时刻关注Dart、River Trail以及JavaScript的演变进程,因为这很可能成为未来业界走势的一大风向标。

原文链接:

http://www.infoworld.com/d/application-development/the-great-javascript-debate-improve-it-or-kill-it-173674?page=0,0

【编辑推荐】

  1. JavaScript的死与生
  2. JavaScript与生俱来的10个设计缺陷
  3. JavaScript诞生记:C语言和Self语言一夜情的产物
  4. 一位反JavaScript主义者的觉醒
  5. 向Brendan致敬-那段华丽的JavaScript历史
责任编辑:陈贻新 来源: 51CTO
相关推荐

2015-10-15 11:27:02

cookie安全总结

2013-06-09 16:49:56

布线系统TIA40Gb

2015-05-26 15:17:44

OpenStack

2012-04-17 09:17:35

HTML 5App应用

2009-12-02 09:52:46

闭包Java 7

2011-05-16 17:02:44

云计算

2012-12-05 10:05:11

2013-09-13 10:37:59

大数据

2017-12-13 16:19:33

Mac mini电脑笔记本

2023-09-20 14:30:36

K8s亚马逊谷歌

2022-10-27 10:12:25

linuxi486

2023-03-07 12:05:29

2022-07-04 09:32:44

TCPHTTP 3.0协议

2020-04-30 21:30:18

JavaScript前端技术

2013-03-29 15:19:05

2023-09-26 21:59:48

安全REST软件架构

2014-09-03 16:52:30

微软Windows

2022-04-25 09:03:16

JavaScript代码

2010-11-24 10:21:27

数据中心虚拟化

2017-12-25 11:15:06

JavaArray数组
点赞
收藏

51CTO技术栈公众号