写点什么

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

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

关注

评论

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

大数据开发hadoop之yarn基础架构详解

@零度

大数据 hadoop YARN

Sentinel-Go 源码系列(三)滑动时间窗口算法的工程实现

捉虫大师

Go sentinel-go

【紧急】Log4j又发新版2.17.0,只有彻底搞懂漏洞原因,才能以不变应万变,小白也能看懂

Tom弹架构

Java log4j 安全漏洞

Linux之nl命令

入门小站

Linux

在线JSON转ClickHouse数据表工具

入门小站

工具

实现更高性能,一起探索Amazon Redshift高级查询加速器

亚马逊云科技 (Amazon Web Services)

Data

你可能不信,52小时能做出7款超酷产品!

LigaAI

程序员 技术 技术人生 技术分享 hackathon

Linux之nl命令

入门小站

Linux

Linux一学就会--Shell教程 || Shell的基础用法(详细)

学神来啦

Linux centos 运维 Shell linux云计算

公安合成作战指挥系统开发,情指勤舆一体化平台建设

电微13828808271

【征集令】寻找2022年鸿蒙智联“出行新爆款产品”

HarmonyOS开发者

HarmonyOS

先进开发团队,先用 Apifox,做“API 文档先行”理念的先行者!

狐哥说技术

Apifox API swagger API文档

linux学习全套资料:结构化命令case-for-while

侠盗安全

Linux 运维 运维工程师 云计算架构师

Java 基础之详解 Java IO

编程江湖

JAVA开发

南瓜电影CTO早晨6点接到紧急电话,被告知“系统压力大”,看其如何化解危机

大咖说

Serverless 技术 数智化

Amazon Aurora 并行查询——加速分析处理的利器

亚马逊云科技 (Amazon Web Services)

Data

企业如何正确使用CRM系统?

低代码小观

低代码 企业管理 CRM CRM系统 企业管理软件

智慧公安重点人员管控系统开发建设方案

a13823115807

智慧公安

比特币挖矿与源码解析

恒生LIGHT云社区

比特币 区块链 挖矿

Java中List排序的3种方法!

王磊

Java

【云堡垒机】市面上部分云堡垒机厂商大汇总

行云管家

云计算 网络安全 堡垒机 IT运维 IT资产

2022年一站式服务器管理软件就用行云管家!

行云管家

云计算 服务器 IT运维 服务器管理

手把手教你使用 Timestream 实现物联网时序数据存储和分析!

亚马逊云科技 (Amazon Web Services)

Data

智慧警务系统建设方案,公安重点人员动态管控系统开发

电微13828808271

超细!细说Zookeeper选举的一个案例(下)

恒生LIGHT云社区

Go golang zookeeper Go 语言

spring 通过xml文件进行依赖注入

田镇珲

TDinsight——基于Grafana的TDengine零依赖监控解决方案

TDengine

数据库 tdengine 时序数据库 后端技术

架构训练营 -- 模块三

LJK

架构训练营

即构科技 RTC 实践与深度解析 | 内容合集

ZEGO即构

音视频 RTC 内容合集 技术实践 技术专题合集

质量基础设施一站式服务线上平台助力高质量发展

电微13828808271

中科柏诚布局信创产业,护航信创产品安全

联营汇聚

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