【问题标题】:What prevented a WebAssembly-like system from being implemented and adopted on the web to begin with? [closed]是什么阻止了类似 WebAssembly 的系统一开始就在 Web 上实施和采用? [关闭]
【发布时间】:2020-06-13 01:16:51
【问题描述】:

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

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

在网络领域,脚本语言比编译语言有什么好处?

编译语言的支持者认为 JavaScript 是一种糟糕的语言,不应该被采用,所以我想知道,是让 JavaScript 脚本化成为一种任意选择,还是吸引那些无法处理像C这样的“真实”语言?还是其他原因?


是什么阻止了类似 WebAssebly 的系统一开始就在网络上实施和采用?

【问题讨论】:

  • 这仍然是一个好问题,我想知道 stackexchange 会不会是一个更好的地方来问这样的问题
  • 我已经改写了这个问题,以便用事实和引用来回答。可以重新打开吗?
  • 诚实问题在中间。它可能可以用事实来回答,但几乎没有明确的答案,这意味着答案仍将基于意见。我建议您将问题移至堆栈交换。例如,您可以在那里提出这样的问题:scifi.stackexchange.com/questions/233150/…

标签: javascript programming-languages webassembly scripting-language compiled-language


【解决方案1】:

JavaScript 被开发为

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

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

可以相当简单地排除其他选择:可能不考虑 Pascal 等高级语言,Java 太慢,C 太低级,Visual Basic for Applications (vba) 是 Microsoft Corporation 的专有产品。

TLDR;

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


更多

As covered on MDNWebAssembly 不是 JavaScript 的替代品,但在浏览器上下文中确实支持对 JavaScript 函数包装器的调用。

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

此时(一开始)既没有需求也没有适合 WebAssembly 的 Web 生态系统:XMLHttpRequest、DOM、CSSOM、WebGL、IndexedDB、Web Audio API 等的接口还需要几年或几十年的时间从开发、实施到标准化。 Netscape 最初是使用 Brendan Eich 在十天内编写的脚本引擎来创造对 Web 脚本的需求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多