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

Javascript 是什么阻止了类似WebAssembly的系统在web上的实现和采用?,javascript,programming-languages,webassembly,scripting-language,compiled-language,Javascript,Programming Languages,Webassembly,Scripting Language,Compiled Language,JavaScript是专门为浏览器设计的。它不是从架子上取下来的。那么,让它成为脚本语言而不是编译语言的原因是什么呢 随着WebAssembly的引入,它证明了web编译语言是可能的。但为什么它一开始就不是这样设计的呢 在web领域,脚本语言比编译语言有什么好处 编译语言的支持者认为JavaScript是一种可怕的语言,永远不应该被采用,所以我想知道,让JavaScript编写脚本的选择是一种任意的选择,还是一种吸引那些不能处理像C这样的“真正”语言的开发人员的选择?还是其他原因 是什么阻止了

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

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

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

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



是什么阻止了类似WebAssebly的系统从一开始就在web上实现和采用?

JavaScript被开发出来

  • 重量轻。一台Windows95电脑可能有0.002Gig的内存(2MB),并且运行的是速度为0.06GHz(60Mhz)的快速奔腾处理器。这样的设置没有资源来加载和执行微软C++,同时做其他任何事情。内存分页超时工作
  • 比Java更快。在早期的Netscape浏览器中启动Java引擎需要很长时间,因此使用Java访问网站需要很长时间才能在第一次遇到Java小程序时加载插件。正是由于这个原因,Java客户端的使用从未真正站稳脚跟。
  • 易于学习和使用。这可能有点过火了,但是
    • 支持未声明的变量(不是最好的想法)
    • 所有变量都类似于一个基本变量-无需声明或管理变量类型
    • 没有指针。有,它们被称为“对象”变量,但不需要处理内存地址、结构或联合数据类型或类
    • 使用熟悉C语言家族的程序员所熟悉的语法
    • 定义并引入了一个具有对象的环境,并内置了对全局对象的访问,以便在网页中进行编程
    • 有一些错误,比如为null的数据类型返回“object”,声称对象是类,但没关系
可以说JavaScript是一种高级语言,特别是与C。。。被许多人称为“高级汇编语言” 最后,学习和使用一些最小的JavaScript来影响一个网页是有成本效益的——当引入JavaScript时,这就是它的全部目的

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

TLDR

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


更多

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

1995年,在Netscape navigator的2.02 beta版中,以“Livescript”的名义引入了JavaScript的初步版本。它引入了
标记,并将Netsape浏览器内部的部分暴露到页面脚本中——主要用于支持将HTML注入页面源代码,以及处理表单控件和页面导航生成的鼠标和键盘事件


此时(一开始),WebAssembly既没有需求,也没有适合的web生态系统:XMLHttpRequest、DOM、CSSOM、WebGL、IndexedDB、web音频API等的接口离开发、实现和标准化还有几年或几十年的时间。Netscape最初使用Brendan Eich(最初)在十天内编写的脚本引擎,创造了对web脚本的需求。

这仍然是一个好问题,我想知道stackexchange是否是询问suchI的更好地方。我已经将这个问题重新表述为可以用事实和引用来回答。它能重新打开吗?诚实,问题在中间。它也许可以用事实来回答,但几乎没有一个明确的答案,这意味着答案仍然是基于观点的。我建议您将问题转移到堆栈交换。例如,你可以在那里问这样的问题: