是什么阻止了类似WebAssembly的系统在Web上实现和采用?



JavaScript是专门为浏览器设计的。它没有从架子上拉下来。那么,使其成为脚本语言而不是编译语言的原因是什么?

随着WebAssembly的引入,它证明了Web编译语言是可能的。但是为什么一开始就不是这样设计的呢?

在 Web 领域,脚本语言与编译语言相比有什么好处?

编译语言的支持者认为JavaScript是一种可怕的语言,不应该被采用,所以我想知道,选择JavaScript脚本是一个任意的选择,还是为了吸引那些无法处理像C这样的"真正"语言的开发人员?还是其他原因?


是什么阻止了类似WebAssebly的系统在Web上被实施和采用?

JavaScript 被开发为

  • 重量 轻。Windows 95 PC 可能有 0.002 GB 内存 (2MB(,并且运行 0.06 GHz (60Mhz( 的快速奔腾处理器。这样的设置没有资源来加载和执行Microsoft C++同时执行其他任何事情。内存分页加班加点。
  • 比Java更快。在早期的Netscape浏览器中启动Java引擎需要很长时间,因此访问使用Java的网站需要等待很长时间才能在第一次遇到Java小程序时加载插件。仅出于这个原因,Java客户端的使用从未真正站稳脚跟。
  • 易于学习和使用。这可能有点过火了,但是
    • 支持未声明的变量(不是最好的主意(,
    • 所有变量都类似于基本变量 - 无需声明或管理变量类型。
    • 没有指针。嗯,有,它们被称为"对象"变量,但不需要处理内存地址、结构或联合数据类型或类。
    • 使用了熟悉 C 系列语言的程序员熟悉的语法。
    • 定义并引入了一个包含对象的环境,并内置了对全局对象的访问,以便在网页中进行编程。
    • 有一些错误,例如为null的数据类型返回"object",并声称对象是类,但没关系。

可以说JavaScript是一种高级语言,特别是与C相比。 被许多人称为"高级汇编语言"。

最后,学习和使用一些最小的JavaScript来影响网页具有成本效益 - 当引入时,这就是它的全部目的。

其他选择可以相当简单地排除:像Pascal这样的高级语言可能没有被考虑,Java太慢,C太低级,Visual Basic for Applications(vba(是Microsoft公司的专有产品。

TLDR;

它的设计看起来像开发人员已经知道的东西,并且不会花费太多精力来检查。Netscape希望开发人员使用网页"编程"来鼓励使用他们的浏览器。人们讲述了其他事实,包括使用"Java"作为语言名称的一部分。


更多

正如MDN WebAssembly所介绍的那样,它不是JavaScript的替代品,但在浏览器上下文中确实支持对JavaScript函数包装器的调用。

JavaScript的初步版本在1995年的Netscape navigator的2.02测试版中以"Livescript"的名义引入。它引入了<script>标签,并将Netsape浏览器内部的部分暴露给页面脚本 - 主要是为了支持将HTML注入页面源代码并处理由表单控件和页面导航生成的鼠标和键盘事件。

在这个时候(开始(,WebAssembly既没有需求也没有Web生态系统:XMLHttpRequest的接口,DOM,CSSOM,WebGL,IndexedDB,Web Audio API等距离开发,实现和标准化还有几年或几十年的时间。Netscape首先创造了对Web脚本的需求,使用由Brendan Eich在十天内编写的脚本引擎[最初]。

最新更新