为什么JavaScript是浏览器中唯一实现的客户端脚本语言?

79
为什么浏览器不支持其他的脚本语言,比如Python作为Javascript的替代品呢?或者更通用的脚本语言呢?为什么Javascript是唯一跨浏览器实现的脚本语言?毕竟,脚本标签确实支持指定所使用的脚本语言。
(我知道IE支持VBScript,但它似乎已经过时了。)

这有点重复的问题,请参见:http://stackoverflow.com/questions/340019/what-are-the-best-client-side-scripting-languages-out-there - nycynik
2
@TomaszNurkiewicz 我看过Dart。但是问题是 - 为什么要发明一个全新的脚本语言,当浏览器甚至不支持现有的流行脚本语言呢? - Anand
3
IE仍然支持VBScript。我怀疑它现在已经很少被使用了,可能只有一些企业内部网站还在使用。 - gilly3
未来的注释: 现在不再允许或者说现在可以在家里邀请朋友了。https://developer.mozilla.org/en-US/docs/WebAssembly - Kaiido
13
这个应该重新开放,因为它符合社区定义的主题范围:“程序员常用的软件工具”,并且是“与软件开发相关的实际可回答的问题”。 - Jonathan Komar
3个回答

51

谷歌正在试图用Dart来挑战这一趋势。然而,社区并没有完全接受这个想法。

谷歌提议为Webkit添加多VM支持,但未得到好评。

有一个评论非常好地概括了为什么会有一些抵制的情况:

在这种情况下,这个功能是将更多编程语言带到web上,除了当前“最棒”的语言(不久前可能是Go,一年左右前可能是Ruby,在此之前是Python,我记得不久前Haskell也曾短暂流行过,Lua已经处于边缘很长时间了,在这种情况下是Dart -- 谁又能保证6个月后不会有完全不同的语言流行?),没有任何真正意义上的益处,只有粉丝们的喜爱。但作为一项成本,它会破碎Web并增加大量额外的维护负担--仅仅维护v8和jsc绑定就不是简单的任务,而它们是同一种语言。

这个问题不是“我们能否让多个虚拟机在webkit中运行”,而是“我们是否想要向Web中公开多种语言”。对于前者,我认为很明显,因为我们已经做到了;对于后者,我要说我们不想要。

除非我们想把webkit变成每个人都讨厌的引擎,因为它有许多独特的“功能”会破坏开放式网络,就像上世纪90年代晚期的某些浏览器一样。

CoffeeScript是另一个新兴的客户端脚本语言的例子。然而,它不像谷歌试图使用Dart支持浏览器中的另一个虚拟机一样,它编译成JavaScript。还有其他几种“将X编译为JavaScript”的编程语言。

因此,有很多其他的客户端语言;他们只是都使用JavaScript作为中间语言。我认为Dart也应该这样做,尽管他们在某些方面有改进的空间

emscripten是将LLVM编译为JavaScript的一个很好的例子。


28
支持更多语言被认为是违背“开放”的网络原则...真是具有讽刺意味! - Milind R
6
除了当前“最棒”的语言的粉丝之外,还有其他任何真正的受益者吗?(不久前可能是Go,一年左右前可能是Ruby,在此之前是Python,我记得Haskell曾经短暂地兴起过...)- 所以这些语言已经过时了,而JavaScript是最现代的语言!JavaScript现在、过去和将来都是最棒的语言,每个人在未来的10万年里都会愉快地使用它!太好了!我们喜欢JavaScript因为它得到了主要浏览器的支持! - skywalker
3
我认为更好的方向是将 JavaScript 引擎拆分成两个部分:每种语言(JavaScript、Python、Dart 等)都有一个编译器,将代码转换为 ASM.js(由语言创建者提供),以及由浏览器提供的 ASM.js 解释器。这样浏览器的负担就不会显著增加,客户端语言选择也会更多。 - Marcelo Lacerda
5
浏览器行业(因此包括Javascript)类似于石油工业!两者都试图通过出售虚假宣传来向人们隐藏更好、更安全的世界。我们都在不知不觉中成为了石油上瘾者,而其实几十年前就已经有了更环保的选择。同样地,在这里,一个设计不良的语言仍然是所有主要浏览器都可靠支持的唯一语言。这就是为什么人类进步缓慢的原因。我们害怕改变! - Nader Ghanbari
4
用类似于Java字节码或CIL的VM构建并将所有语言(包括JS)编译为其内部代码,而非直接运行JS,这样做难道不合理吗? - nimdil
显示剩余4条评论

7

Internet Explorer支持任何Windows Script Engine,因此您可以使其支持已实现为一种语言的任何语言,或编写自己的语言。


1
https://web.archive.org/web/20170529202850/https://learn.microsoft.com/en-us/scripting/winscript/windows-script-engines - Lime

1

因为JavaScript是其他所有浏览器都支持的语言,而浏览器供应商有两个主要优先事项:

  1. 确保现有的网页可以正常工作(这需要JavaScript)
  2. 让作者在他们的浏览器中进行用户可见的操作,这些操作在其他浏览器中无法完成(更改编程语言将完全隐藏在用户之外,除非它出现问题)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接