QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

《JavaScript 语言精粹》作者 Douglas 谈 Web 开发、jQuery 和 WebKit

  • 2013-02-17
  • 本文字数:2725 字

    阅读完需:约 9 分钟

JavaScript 在如今的 Web 领域正发挥着无与伦比的重要作用。但它又是一门饱受误解与非议的语言。这其中很大程度的误解来源于它奇怪的历史,和它的命名 —— 国内常有人戏称,Java 和 JavaScript 的区别,就像雷锋和雷峰塔的区别。而 Douglas Crockford,做为 JavaScript 语言的泰斗,同时也是 QCon 北京 2013 大会确认参会的国际嘉宾,在去年年底,接受了《German-language PHP Magazin》编辑Wießeckel 的采访,发表了他对 JavaScript、jQuery 、CoffeeScript、Dart 语言、Web 的历史,以及移动互联网等内容的真知灼见。

编者后注: 2 月 13 日,Opera 宣布将使用 WebKit 作为自己浏览器的新内核,在网络上掀起不小的波澜,而 Douglas 在这篇去年的访谈里就已经很有预见性的谈到了 WebKit 的胜利,同时还肯定了 jQuery 等框架的工作,实在令人折服。

关于 Opera 切换到 WebKit 引擎的决定,InfoQ 做了系列报道,请见:

下面是 Douglas 的采访内容:

作为《JavaScript 语言精粹》 (《JavaScript:The Good Parts》) 的作者,在谈及它的“bad parts”,甚至是“worst parts”时,Douglas 表示:

最坏的部分是 JavaScript 的依赖关系和全局变量。我们在浏览器中看到的各种安全问题全是这两个部分引起的。

对于 CoffeeScript,Douglas 这么看:

CoffeeScript 是一种可被编译成 JavaScript 的新语言,它把 JavaScript 当作一种可执行语言。CoffeeScript 的语法简洁优雅,非常可爱。我希望 JavaScript 可以像 CoffeeScript 一样。不过我并不推荐 CoffeeScript,因为它仍然处于实验阶段,而我不想在生产环境中冒险。但是对于自己感兴趣的小项目,用 CoffeeScript 是挺不错的选择。但是需要注意,CoffeeScript 的唯一优势只是语法,它的语意和 JavaScript 完全一样,没有什么你能用 CoffeeScript 能行而 JavaScript 不行的事。只是在很多时候 CoffeeScript 写法会更加方便。

谈到 jQuery 的时候,Douglas 表示了非常肯定的态度:

jQuery 非常棒。它运行在 DOM 的顶层,直接调用浏览器为 JavaScript 提供的 API。DOM 本身非常糟糕,是我见过的最烂的 API。而 JavaScript 是一门强大的语言 —— 只需要一个相对小体积的 JS 库就可以将 DOM 变得非常有用,jQuery 实现了这一点。Yahoo!的 YUI 从这方面看来并没有做的更好。我会建议所有人使用一种 JS 库来操纵 DOM,而不要使用原生 API,因为那的确非常痛苦。库的使用不但会让事情变得愉悦,也会提高工作效率。

对不同的 JavaScript 引擎,比如 V8、JaegerMonkey,Douglas 表示:

其实这都没什么关系。JavaScript 是一项有超强移植性的语言,在不同的 JavaScript 引擎表现的并没有太多差别,这些引擎其实都挺不错。Microsoft 的引擎(Trident)表现的也挺好。这是 JavaScript 的优点之一。值得一提的是,Microsoft 还花了不少功夫让 Web 工程师可以在 Windows8 的桌面端创建 WebApp,这看上去也还不错。

对 Google 发布的用于取代 JavaScript 的 Dart 语言,Douglas 肯定了尝试新语言的行为,但是对这门语言本身,他持保留的看法:

JavaScript 的确有很多问题,但 JavaScript 不会是最后一门编程语言。我鼓励大家在新编程语言上的实验。因为对于程序员来说,编程语言是最重要的创作工具。但其实我们很明显还没有把 JavaScript 了解透彻,而 JavaScript 自己也并没有表现的足够好。所以我们需要继续新编程语言的实验。我也很高兴看到这些新语言的尝试。但对于 Google Dart 来说,问题在于他们甚至还未完成语言的设计工作,就已经宣称胜利了。Dart 对我没有意义。Google 应当为尝试新语言的行为获得表扬,但是取代 JavaScript 看上去更像是一个阴谋,但看起来又不太可能。

对 JavaScript 过去多年的恶劣名声,以及最近一些年的迅速崛起,Douglas 回顾了整件事情的历史:

这都是因为 Ajax。在 2001 年的时候,Gartner 预测 Web 将像 WAIS 和 Gopher 那样死去,Web 将会被 Ex-Internet 取代,包括 Microsoft 在内的许多人相信这种说法。所以 Microsoft 扩张了 IE 团队,并开始着手研究下一代英特网。

在 2005 年,Jesse James Garrett 发表的关于 Ajax 的论文所有人大吃一惊。Microsoft 突然间又被 Web 打了个措手不及。可能因为浏览器在安全问题上表现的还不错,用户在面对 Web 应用的时候不至于总面对恐怖的,不知所以然的权限提示对话框,加之 Ajax 的能力,Web 开始发挥起它的威力。它比其他任何平台都更容易的将应用传递到客户端。由此,Web 开始腾飞。

Web 火热发展的另一个原因,是除 Web 以外的其他尝试都失败了。过去曾有很多试图取代 Web 的尝试。Adobe 尝试了很多次,Microsoft 也是。Google 如今仍在努力。但迄今为止他们都失败了。Java 曾被认为最可能去统治 Web,但 Java 失败了。之后 Java 又去尝试接管消费电子设备和其他场景,但是也都不怎么成功。在移动电话终端上,他们几乎试遍了所有的方法。他们试过专利,试过开源,但他们都没能成功。

现在人们正努力将 JavaScript 运行在移动平台,看起来好像挺不错。这并不是任何人希望或预言的,但事情就这么发生了。JavaScript 正在胜利,因为它凑效了。同时,JavsScript 的流行让其它只能勉强运行的方式显得又傻又非主流。

对于移动互联网的应用入口之争,和将 Web 构建为 OS 平台的 FirefoxOS,以及 WebKit 的话题,Douglas 认为:

Web 看起来正在占领移动互联网,但是一切并未尘埃落定。这是一场比赛:各种 App Store 正在试图取代 Web,他们在用垄断的方式控制所有应用的入口。但 Web 的哲学之一是“人人平等”。垄断的方式会胜利吗?我认为最终开放一定会赢得胜利,因为大家可以从每个人都自由交付应用的系统中获得更多好处。但是总有一股力量在试图封闭它,比如 DRM,所以让我们关注事情将会如何发展,并一起希望 Web 的开放性会保持下去。

FirefoxOS 并不会成为一个大事件,因为看上去移动平台上 Web 的胜者会是 WebKit。Mozilla 曾做过不错的东西,而 WebKit 做的更好。但我希望市场可以保持一种竞争环境,而不要有一个绝对的胜利者出现。所以我希望 Mozilla 可以更强大。

Web 的困境之一在于它从不属于任何一家单独的公司:它不源自 Adobe,也不源自 Microsoft,也不是 Sun 或者 Oracle。开发者必须处理 Web 平台上各种不同的因素,而这些不同的因素不但没有消减,还越来越多。同时,W3C 标准也还非常不充分。这让开发者们的日子很不好过。但我并不想为此走另一条路,说“好吧,有个统一平台就好了”这样的话。因为相比之下,平台的多样化是整个生态系统健康的表现,如果失去这样的多样性,那必然会是一件坏事。

2013-02-17 21:335187
用户头像

发布了 91 篇内容, 共 38.2 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

《迅雷链精品课》第六课:主流区块链数据存储分析(一)

迅雷链

区块链

【得物技术】浅谈分布式事务中间件Seata

得物技术

开源 分布式事务 中间件 解决方案 seata

AI技术在音乐类产品中的应用场景

曲多多(嗨翻屋)版权音乐

人工智能 AI 音乐 音乐制作

架构师训练营 1 期 - 第九周 - 性能优化 3

三板斧

入坑 docsify,一款神奇的文档生成利器!

沉默王二

docsify

区块链+供应链,双链融合开启新时代

CECBC

区块链 供应链物流

DataOps系列丨DataOps的组织架构与挑战

DataPipeline数见科技

大数据

结合实战和源码来聊聊Java中的SPI机制?

冰河

Java spi 服务发现

3年Java开发经验从阿里、美团、滴滴面试回来,想和Java程序员谈一谈感悟及面经

Java架构之路

Java 程序员 架构 面试 编程语言

石、火、水:从OriginOS透视移动系统进化论

脑极体

第九周学习性能优化 3 总结

三板斧

极客大学架构师训练营

架构师训练营 1 期 -- 第九周作业

曾彪彪

极客大学架构师训练营

实现2nm工艺突破,台积电为何能给“摩尔定律”续命?

脑极体

Appium常用操作之「Toast提示信息获取」

清菡软件测试

大专学历Java开发7年,从年初被裁到四面美团点评成功上岸,闭关七个月,入职那一天我哭了!

Java架构追梦

Java 阿里巴巴 面试 美团 java架构

一周信创舆情观察(11.9~11.15)

统小信uos

32核打赢AMD64核 英特尔Ice Lake为HPC提供强劲性能

E科讯

DataOps系列丨数据的「资产负债表」与「现状」

DataPipeline数见科技

大数据

MySQL 连接为什么挂死了?

华为云开发者联盟

微服务 数据 存储

互联网券商系统搭建建议书

软件开发大鱼V15988750073

国际配售 港股交易系统开发 证券交易系统 IPO系统开发 金融平台搭建

微服务手册:高速查询?除了Redis我们还有另外的选择

互联网应用架构

redis 微服务 springboot Caffeine 高速缓存

数字人民币究竟是什么

CECBC

数字货币

释放数字化活力 高质量建设数字中国

CECBC

数字经济

git使用与原理剖析及其私服搭建

Fox爱分享

git

阿里P8架构师吐血整理的《SpringBoot+Vue全栈开发实战》文档资料

Java架构之路

Java 程序员 架构 面试 编程语言

架构师训练营 W05 作业

Geek_f06ede

输入法B端市场转化:百度推动产业智能化的新路径

脑极体

Maven-技术专题-Setting文件结构解析

码界西柚

京东T8Java架构师总结整理的15w字的Java面试手册,2021年金三银四不愁涨不了薪!

Java架构之路

Java 程序员 架构 面试 编程语言

DataOps系列丨DataOps理念与设计原则

DataPipeline数见科技

大数据

JVM运行时数据区,你真得好好学一学

Simon郎

JVM Java 分布式

《JavaScript语言精粹》作者Douglas谈Web开发、jQuery和WebKit_JavaScript_彭超_InfoQ精选文章