写点什么

《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:335542
用户头像

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

关注

评论

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

阿里大佬的「算法界Offer收割机」火爆Github,一夜获上万star

Java 编程 程序员 架构师 计算机

从零开始学习3D可视化之演示项目

ThingJS数字孪生引擎

大前端 可视化 3D 3D可视化

大专的我,闭关56天,含泪拿下阿里offer,五轮面试,六个小时灵魂拷问

关于程序猿的28个经典段子

花费近一年时间整理的Android核心知识清单,面试篇

欢喜学安卓

android 程序员 面试 移动开发

Linux文件查找常用命令-详细笔记

学神来啦

云计算 Linux 运维

架构之:REST和HATEOAS

程序那些事

架构 系统架构 Rest 软件架构

DataPipeline正式成为信创工委会会员单位!致力于为世界级用户提供更优质产品和服务

DataPipeline数见科技

大数据 数据融合 数据管理

语言特性实战(一)

南冥

融云技术分享:全面揭秘亿级IM消息的可靠投递机制

JackJiang

即时通讯 IM 可靠消息最终一致 融云

Optional 的使用会导致性能下降吗

小技术君

性能优化 Optional

Rancher × Apache APISIX:极速部署更好用的开源网关和 Ingress Controller

API7.ai 技术团队

Kubernetes 网关 rancher APISIX

程序员是如何看待程序员的,程序员是做什么的?

云原生时代,服务网格能给企业带来哪些价值?

行云创新

云原生 解决方案 服务网格

HarmonyOS走进西安电子科技大学国际双创周

科技汇

最壕58人逆天改命:四面阿里拿offer后,才发现师哥给的面试笔记有多强大

Java架构师迁哥

DEMO CHINA带着1000+投资人,500+好项目首登重庆

创业邦

创业 投资

海归硕士程序员吐槽:回国一个月都没找到工作,我书都白读了?

应聘高级Android工程师历程感言,你不懂还不学?

欢喜学安卓

android 程序员 面试 移动开发

「腾讯面试题」兔子试毒

程序员没两把刷子,就别送外卖了!!!

技术解码丨实时音视频与PSTN融合的解决方案

腾讯云音视频

腾讯云 音视频 PSTN

SpringBoot中时间格式化的5种方法!

王磊

spring springboot

一萌妹子的面试经历,美团四面三小时,成功拿到Java岗offer

白亦杨

Java 编程 程序员 架构师 计算机

程序员工资高,到底程序员的工资有多高?你不了解的程序员!

异常是怎么被处理的?这题的答案不在源码里面。

why技术

面试 JVM 字节码

Linux安装与常用命令

IT视界

Linux linux命令 Linux安装

直接裂开!京东二面被问SpringBoot整合MongoDB,我不会啊

Java架构没有996

Java mongodb 程序员 后端 JAVA开发

iOS底层面试题(上篇)

程序员 面试

毕业总结

菲尼克斯

架构实战营

聊聊数据仓库建设

水滴

数据仓库 数仓 数仓架构 主数据管理 标签体系

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