写点什么

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

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

关注

评论

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

HTTPS详解

Bruce Duan

https 对称加密 非对称加密

一个好用的工作生活平衡方式

霍太稳@极客邦科技

7个获取访问者真实IP的方法,速学!!!

华为云开发者联盟

nginx 大前端 网站 IP 服务器

干货分享丨玩转物联网IoTDA服务系列四-智能网关

华为云开发者联盟

物联网 智能设备 应用场景 华为云 mqtt

Linux服务器存在某进程CPU过高如何追溯其问题根源?

Nick

Java Linux centos

Nginx 限流配置

Bruce Duan

nginx

上海首批金融科技“监管沙盒”应用名单出炉 区块链技术备受青睐

CECBC

金融科技 金融监管 创新与安全 智能多元化

华为云FusionInsight MRS融合大数据平台进阶之路

数据湖洞见

大数据 新特性 FusionInsight 华为云 智能数据湖

LeetCode 1052. Grumpy Bookstore Owner

liu_liu

算法 LeetCode

IO系列——UNIX五种IO模型

Java联盟

io 多路复用 异步IO

API接口限流

Bruce Duan

分布式限流 单体限流 限流算法

Kafka两个高性价比的参数调优

我是个bug

Java 大数据 kafka

Redis系列(七):缓存只是读写回种这么简单吗?如果是,那么请你一定看看这篇文章!

z小赵

redis 分布式 高并发系统设计

节约60%成本!虎牙直播云端大数据是怎么做到的?

腾讯云大数据

ARTS 第 5 周

乌拉里

推荐一款技术人必备的接口测试神器:Apifox

狂师

测试 测试驱动开发实战营 接口测试 测试框架

一文了解JDK12 13 14 GC调优秘籍-附PDF下载

程序那些事

GC JDK14 秘籍 JDK12 JDK13

一文带你了解Zookeeper所有核心概念

小隐乐乐

zookeeper 分布式 分布式架构

Go: 通过代码学习 Map 的设计 — Part II

陈思敏捷

map Go 语言

Java架构-Java代码规范那些事

我是苞谷

Java

week8 作业

Shawn

正则表达式基础详解

懒猫

Java 正则表达式 大前端 正则

主宰操作系统的经典算法

苹果看辽宁体育

后端 操作系统

架构师那些不能碰的禁忌

曲水流觞TechRill

架构师

[POJ 1002] 487-3279 C++解题报告

一直AC一直爽

POJ ACM

架构师训练营第八周作业

张明森

Spring Boot + Vue前后端分离项目,Maven自动打包整合

xcbeyond

maven 前后端分离 springboot 部署

如何消灭飞机的“黑色十分钟”,AI来帮忙

华为云开发者联盟

华为 AI 智能时代 模型 华为云

国产开源流媒体SRS4.0对视频监控GB28181的支持

潇湘落木

音视频 云直播 短视频 流媒体

职场求生攻略答疑篇之 1 —— 加班沉思录

臧萌

程序员 加班

实战案例丨ModelArts在数据标注、数据过滤上的应用技巧:自动分组

华为云开发者联盟

人工智能 数据 图像识别 图片 分类

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