JavaScript是Web的汇编语言(二):疯狂,亦或只是精神错乱?

标签: Web开发 编程技术 翻译 | 发表时间:2011-07-21 08:40 | 作者:为之漫笔 MessyCS
出处:http://www.cn-cuckoo.com

原文地址:JavaScript is Assembly Language for the Web: Part 2 – Madness or just Insanity?

有些人认为“JavaScript是Web的汇编语言”完全是精神病说的话。为此,我询问了几位JavaScript权威,比如Brendan Eich(JavaScript之父)、Douglas Crockford(JSON之父),还有Mike Shaver(Mozilla技术副总裁)。以下都是从个人邮件里摘过来的,得到了以上几位的许可。

Mike Shaver

以前我就听说过这种比较,我认为很大程度上确实如此。但是,这种说法忽视了JS开发人员与机器之间的人机工程学方面的大量努力,因为汇编语法设计得没有那么人性化(特别是现代的汇编语言)。

Brendan Eich

几年前,我曾说过“JS是Web的x86”(好像是在一次JSConf上),不过我不敢说我是第一个这么说的。(Nick Thompson今年也在Hacker News中这么说过。)

关键在于,JS确实在按照我们想的,越来越往低级方向发展了。但它也具备高级的特性。

Shaver说得没错,汇编缺少可靠的宏处理器,因此不适合程序员,也不够安全。但JS可不是这样。所以,这个比喻需要加点限制条件,不然就要闹出笑话来了。

无论从高级函数式编程还是内存安全角这个角度看,还是从低级特性,像类型化数组以及即将成为现实的ES中类型化数组的扩展、二进制数据,等等来说,JS都是一个比汇编更加强大的编程语言。当然了,内存安全是首要的区别。

Douglas Crockford

就这个问题来说,我觉得说JavaScript是Web的虚拟机更接近一些。过去我们一直都把Java的JVM看成是Web的虚拟机,但结果呢,JavaScript才是。

从提供代码安全的角度说,JavaScript的解析器比JVM的字节码验证器更有效。就兑现“编写一次,到处运行”这个诺言来看,JavaScript更出色;这或许正是因为它是在较高层次上运行,才得以避免触及一些底层的棘手问题。因为它把剩下的事儿都交给图灵去解决了。

当然啦,也有不少人始终不肯承认JavaScript能把一切都处理好,我过去就是这样一个人。而现在我则不断地被眼前这种百花齐放的景象震撼着。

Brendan Eich,补充:

Doug说源代码强过字节码,说得太好了。很早以前,我的朋友,加州大学欧文分校的Michael Franz教授就指出了Java验证器O(n^4)级别的复杂性(计算机时钟周期失控,拒绝服务)。精简之后的JS呢,确实传输更便捷,而且词法/语法分析也相当快。

(JS)源代码作为“字节码”同样也避免了Java字节码的一个很傻的问题:冻结设计不良的Java低级形式,导致高级形式的源代码也无法解决这个问题。换句话说,Java唯恐破坏其字节码的兼容性。而这严重影响了Java内部类及其泛型的设计。——不管怎么说,Sun最后还是破坏了字节码的兼容性。

以下是前一段时间Nick Thompson在YCombinator说过的话:

这只是我个人的看法:我花了自己两年时间,想尽可能让JVM能够与JavaScript互通。当时的Netscape有不少人认为字节码作为移动代码的基础比较好。但Sun从头搭建了自己大而全的软件体系,把问题搞得很复杂。他们没有想让Java与其他语言沟通,更别提让Java能嵌入其他软件中了。他们的字符串处理代码都是用一种解释型语言来写,而不肯用C来玷污自己!有什么我就说什么,Netscape,这个当时Java唯一的一个大客户,在Sun眼里无非就是一个用来实现他们取代Windows梦想的工具而已。所有想用Java的人都是自己给自己找罪受。

在此期间,Brendan一个人干了10个工程师,外加3个客户服务人员的活儿,同时还要关注Web作者在乎的一些事,比如把JS代码混合到HTML中、即时加载、与浏览器其他模块的集成等等,此外还要协调其他浏览器厂商,以便让JS成为一个开放标准。

因此,今天的JS作为Web的x86汇编程序,并没有像它本该的那样完美,但你通过它真能把事情稿定(GWT就是一个最明显的例子)。这可以说是一个经典的“更差就是更好”的例子,只不过Java也就是从下往上那么看起来更好罢了。而JS则在此期间取得了相当不错的成就。要想取代它的地位可没那么容易。

当然,这个比喻不一定准确。JavaScript代码无论从外观到行为,肯定不像ASM。但作为一个比喻,至少可以说明:

  • JavaScript无所不在;
  • 它速度快而且越来越快;
  • JavaScript酷似低级的Web编程语言;
  • 它可以通过手工编写,也可以从另一种语言编译而来。

诸如此类的话题也经常在Hacker News中出现:

“现在的JavaScript其实就是客户端的汇编语言。想改它太难了,所以得想办法开发一些工具来解决这个问题。”——
jonnycat

好啦,能听到如此有见地、有深度,而又详尽的讨论,该满足了吧。亲爱的读者,你们太棒了。

相关 [javascript web 汇编语言] 推荐:

JavaScript是Web的汇编语言(一):语义Web已死!

- iVane - 为之漫笔
原文地址:JavaScript is Assembly Language for the Web: Sematic Markup is Dead. (更新)有些人认为“JavaScript是Web的汇编语言”完全是精神病说的话. 为此,我询问了几位JavaScript权威,比如Brendan Eich(JavaScript之父)、Douglas Crockford(JSON之父),还有Mike Shaver(Mozilla技术副总裁).

JavaScript是Web的汇编语言(二):疯狂,亦或只是精神错乱?

- MessyCS - 为之漫笔
原文地址:JavaScript is Assembly Language for the Web: Part 2 – Madness or just Insanity?. 有些人认为“JavaScript是Web的汇编语言”完全是精神病说的话. 为此,我询问了几位JavaScript权威,比如Brendan Eich(JavaScript之父)、Douglas Crockford(JSON之父),还有Mike Shaver(Mozilla技术副总裁).

JavaScript之web通信

- - Web前端 - ITeye博客
浏览器作为 Web 应用的前台,自身的处理功能比较有限. 浏览器的发展需要客户端升级软件,同时由于客户端浏览器软件的多样性,在某种意义上,也影响了浏览器新技术的推广. 在 Web 应用中,浏览器的主要工作是发送请求、解析服务器返回的信息以不同的风格显示. AJAX 是浏览器技术发展的成果,通过在浏览器端发送异步请求,提高了单用户操作的响应性.

全 Javascript 的 Web 开发架构:MEAN

- - 开源中国社区最新新闻
最近在Angular社区的原型开发者间,一种全Javascript的开发架构MEAN正突然流行起来. 其首字母分别代表的是:(M)ongoDB——NoSQL的文档数据库,使用JSON风格来存储数据,甚至也是使用JS来进行sql查询;(E)xpress——基于Node的Web开发框架;(A)agular——JS的前端开发框架,提供了声明式的双向数据绑定;(N)ode——基于V8的运行时环境(JS语言开发),可以构建快速响应、可扩展的网络应用.

提高 web 应用性能之 JavaScript 性能调优

- 去北方-Jack - IBM developerWorks 中国 : 文档库
JavaScript 是一个比较完善的前端开发语言,在现今的 web 开发中应用非常广泛,尤其是对 Web 2.0 的应用. 随着 Web 2.0 越来越流行的今天,我们会发现:在我们的 web 应用项目中,会有大量的 JavaScript 代码,并且以后会越来越多. JavaScript 作为一个解释执行的语言,以及它的单线程机制,决定了性能问题是 JavaScript 的软肋,也是 web 软件工程师们在写 JavaScript 需要高度重视的一个问题,尤其是针对 Web 2.0 的应用.

10个顶级Web移动开发JavaScript框架

- Amo - HTML5研究小组
这些轻量级框架使用HTML5和CSS3标准来帮助您快速开发跨平台的Web移动应用和网站. jQuery Mobile这个框架能够帮助你快速开发出支持多种移动设备的Mobile应用用户界面. jQuery Mobile不仅会给主流移动平台带来jQuery核心库,而且会发布一个完整统一的jQuery移动UI框架.

现代浏览器的web音频javascript类库 - Howler.js

- - CSDN博客Web前端推荐文章
日期:2013-2-6  来源: GBin1.com. 浏览器这个玩意儿并不是个新鲜事,但是随着HTML5的发展激起了浏览器技术的巨大发展. 但是浏览器上对于音频控制技术来说仍旧非常的落伍. 庆幸的是 Google积极的开发和创建了web audio API,这使得基于浏览器的音频控制更加的简单并且直观.

超越Web,Javascript在物联网的应用

- - JavaScript - Web前端 - ITeye博客
Patrick Catanzariti 是一名Web开发工程师,最近他在. sitepoint 发表了《 JavaScript Beyond the Web in 2014》,介绍了JavaScript在物联网中的应用,非常有意思. 做为JavaScript的爱好者和从业者,我在这里把它翻译了,以飨读者.

统治Web的JavaScript准备要接管桌面了

- - 36氪
编者按:曾几何时,通信网络曾经活跃过许多协议,那些协议在不同的场景下都有各自的优势. 但是后来 TCP/IP 随着互联网的崛起而异军突起,最终形成一统天下的格局. 而原本被视为不入流的 Web 前端玩具 JavaScript 现在似乎也在复制着类似的路径,先是渗透到 web 后端开发,然后甚至开始 入侵到桌面了.

简化web开发者复杂任务的25个有用的javascript库

- - 博客园_首页
这是非常有用的,因为他们使网站对于用户更加友好. 今天,我列出了一些最有用的轻巧和独特的 JavaScript库. 此列表的JavaScript库将有很大的帮助对于Web开发人员和设计师. 你可以用来创建用户友好的,执行特定功能的代码. 在线浏览PDF文件的实用jquery插件推荐. 精心收藏的14个开发人员方便的jQuery代码片段.