WebAssembly不是软件!它是计算机中的计算机

这篇具有很好参考价值的文章主要介绍了WebAssembly不是软件!它是计算机中的计算机。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

整体上看,WebAssembly 不仅通过沙盒执行提高了安全性,还通过使开发人员能够使用几乎所有流行语言创建高性能 Web 应用程序。随着WebAssembly的不断发展和生态系统的扩展,其“游戏规则改变者”的角色在开源开发的格局中可能会愈发突出。

不要把Wasm当成软件,它是计算机中的计算机。

WebAssembly的诞生源起于几大Web浏览器供应商(Apple,Google,Microsoft,Mozilla)之间的合作。设计者最初将其设想为一个安全可靠的执行环境,用于以近乎本机的性能在Web上运行不受信任的代码。

然而时至今日,这门新兴技术早已扩展到Web浏览器之外,甚至有一部分人认为,Wasm将取代容器技术和无处不在的JavaScript。

这些当然远远不足以说明Wasm的惊艳之处,游戏规则的改变者可没有那么简单。

1、比Java还狠:“一次部署、随处部署”

如今,WebAssembly的计算潜力已经得到了很大的认可。这不得不归因于它的设计初衷。

众所周知,人们使用各种不同种类的语言来编写软件,让这些语言相互交互是很困难的。而WebAssembly恰恰提供了一个框架,让开发人员可以用他们想要的语言进行编写,然后,它会生成通用的模拟计算机格式,这种格式允许用各种语言编写的组件相互通信。

正如边缘云平台Fastly的工程师Luke Wagner提到的:“Wasm的设计是编程语言的可移植编译目标。我认为这里的关键词是'编译目标',这意味着我们可以采用我们的各种源语言。”

“除了能够将它们编译成所有不同的本机指令集外,我们还可以将它们编译成WebAssembly。然后,我们可以将这个WASM发送给浏览器或某种类型的WASM引擎,该引擎将在内部将其编译为运行它的实际指令集。这给我们带来的是可移植性、确定性(如果需要的话)、控制流完整性和子进程沙箱。”

由此看来,WebAssembly要实现的是“一次部署,随处部署”。更准确的说,理想情况下,你可以编写一次代码,几乎不需要任何配置,就可以将其部署到任何CPU或设备上。尽管有人可能会觉得有失偏颇,但在某些方面,的确可以把它看作是一个高效的编译器。

2、不止浏览器,简直无处不在

发布于2018年的WebAssembly,最初是作为Web开发领域的技术,引起了关注。而在2019年,WASI(WebAssembly系统接口)的出现使情况发生了变化,它为Wasm提供了一个模块化的界面,将WebAssembly带到了浏览器之外。

WebAssembly的这种转变甚至促使Docker联合创始人Solomon Hykes在2019年发推文说:“如果WASM+WASI在2008年就存在,我们就不需要创建Docker了。这就是它的重要性。服务器上的WebAssembly是计算的未来。”

短短四五年光景,我们看到WebAssembly在浏览器之外的应用也渐入佳境。

根据今年9月发布的《WebAssembly 2023现状报告》,SlashData与CNCF(云原生计算基金会)合作对255名WebAssembly用户进行调查,发现WebAssembly的使用已经远远超出了其最初的 Web 应用程序目标。

该报告发现,虽然Wasm仍然主要用于开发Web应用程序(58%),但它的使用正在从原始用例扩展到数据可视化(35%),物联网(32%),人工智能(30%),后端服务(不包括无服务器)(27%)和边缘计算(25%)等新领域。

“在浏览器之外,在现有系统中嵌入Wasm以使访客代码更接近系统是一种流行的做法。举个例子,一个浏览器有很多不是用JavaScript编写的代码。此外,人们正在使用Wasm来探索分布式计算的替代模型,如无服务器、分布式行动者、记录和回放,边缘计算等等。”Fastly工程师Wagner如是说。

当前,尽管可以从广泛的软件项目中看到WebAssembly的身影,但挑战依然存在,比如WebAssembly模块目前仍然无法支持所有编程语言;即使在它支持的少数编程语言中,如Rust、C++、Python,要将其部署到各种设备中依然有各自的问题;组件结构仍然不够标准化……这些挑战的解决或许只要一两年,或许还需要相当长的时间,届时WebAssembly的跨平台部署才能展现其真正的功能。

WebAssembly不是软件!它是计算机中的计算机,量子技术 / 元宇宙 / 人工智能 / 其他,汽车 / 芯片 / 医疗 / 信息技术 / 头条要事,wasm

WebAssembly应用程序使用的语言排行,JavaScript是Wasm应用程序最流行的语言

3、Wasm不是软件,是一种新型“计算机”

虽然WebAssembly还处于发展早期,但在某些圈内人士来看,它已经表现出将技术车轮推向未来的潜力。

NGINX产品管理高级总监Liam Crilly在最近的一次谈话中,将WebAssembly比作一台概念意义上的计算机。他是这样解释的:虽然WebAssembly不能直接在物理设备上运行,但它有可能通过使用WebAssembly模块在用于数据交换和部署的设备网络上运行。

“WebAssembly允许我们重新思考我们需要的抽象。它使我们能够迈出下一步,而不是持续地锚定在我们用来描述存储和计算的初始元素上。这就是为什么我在Kubernetes的背景中提到它,因为它仍然带有一些包袱。”

实际上,WebAssembly可以被认为是一种新型的计算机。它拥有一个指令集,类似于CPU,“汇编(Assembly)”部分就是从它派生出来的。

当你检查示例代码时,它与此非常相似,前提条件是它是人类可读的。这台简单的“计算机”能做传统计算机可以执行的任何事情。重要的是,这个新的指令集成为所有编程语言的编译目标。从本质上讲,任何高级编程语言不仅可以编译为特定硬件的CPU指令集,还可以编译为WebAssembly指令集。

此外,WebAssembly可以被视为一个强大的编译器目标,正如Crilly所解释的:“WebAssembly的迷人之处在于它提供了编译器的优势,使你能够使用高级语言并生成优化良好的指令集代码。”

然而,由于WebAssembly的功能是一个抽象的计算机,它需要一个虚拟机或运行时来接受这个指令集并在硬件上执行它。虽然这最初看起来像是一个额外的抽象层,但实际上它非常巧妙。

Crilly说,使用WebAssembly,就可以为任何硬件构建一个运行时,开发人员和运营人员就不再需要关注具体的硬件细节。

“如果我有一个编译到这个指令集的 WebAssembly 模块,我就会获得编译器优化的好处,其中包括运行时的即时 (JIT) 优化,因为我将这个指令集的字节码转换为 CPU 指令。这个额外的优化层类似于 JIT 编译器和浏览器运行时,可提供接近本机的计算性能。因此,这个抽象层的缺点很小。”

4、Wasm:计算机中的计算机

“将WebAssembly视为计算机”的概念并非猎奇。

企业管理协会(EMA)分析师Torsten Volk对此更进了一步,将Wasm描述为“计算机中的计算机”。

“它不是提供对CPU,RAM,存储和网络硬件的直接访问,而是为应用程序提供对这些资源的简化通用版本的访问权限。通过将来自为Wasm编译的应用程序字节码的指令转换为直接与CPU、RAM和磁盘指令集通信的字节码来实现这一点。一旦此转换层普遍适用于大多数类型的应用程序,你实际上可以将 Wasm运行时描述为一种新型计算机。"

在操作系统与硬件的关系上,人们的探索从未停止。而WebAssembly的出现无疑为此提供了另一种答案。

Fermyon Technologies的联合创始人兼首席执行官Matt Butcher谈到:“虚拟机打破了将操作系统视为与硬件具有一对一关系的思维。我们可以在单个硬件上运行许多操作系统,而容器通过允许我们安全地(并以多租户方式)运行许多共享一个内核的离散文件系统来进一步推动这一故事。“

“Wasm可以被视为第三次浪潮:应用程序不直接依赖于主机操作系统。它只是声明它需要什么,主机运行时可以专门满足这些需求。最后,开发人员不需要了解目标环境的操作系统或架构。”

5、写在最后

整体上看,WebAssembly 不仅通过沙盒执行提高了安全性,还通过使开发人员能够使用几乎所有流行语言创建高性能 Web 应用程序。随着WebAssembly的不断发展和生态系统的扩展,其“游戏规则改变者”的角色在开源开发的格局中可能会愈发突出。

不过在WebAssembly能发挥其全部潜力之前,还有很长的路要走。在许多方面,Wasm的格局类似于几年前Kubernetes蓬勃发展的早期开发和采用。

值得一提的是,根据《WebAssembly 2023现状报告》,大多数软件开发人员对未来在Web和非Web环境中采用Wasm持乐观态度。报告提到,将现有应用程序迁移到 Wasm 时,30%的受访者体验到超过 50%的性能优势。此外,“更快的加载时间,探索新用例和技术的能力,在项目之间共享代码的能力”均是WebAssembly吸引开发人员的主因。

另外,报告中约有22%的参与者对Wasm在Web或非Web环境中的采用表示悲观。关于Wasm面临的挑战,受访者则提到了调试和故障排除困难,运行时之间的性能不同,运行时之间缺乏一致的开发人员体验,缺乏学习材料以及与某些浏览器的兼容性问题。文章来源地址https://www.toymoban.com/news/detail-719404.html

到了这里,关于WebAssembly不是软件!它是计算机中的计算机的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第八次CCF计算机软件能力认证

    第一题:最大波动 小明正在利用股票的波动程度来研究股票。 小明拿到了一只股票每天收盘时的价格,他想知道,这只股票连续几天的最大波动值是多少,即在这几天中某天收盘价格与前一天收盘价格之差的绝对值最大是多少。 输入格式 输入的第一行包含了一个整数 n,表

    2024年02月15日
    浏览(40)
  • 第三次CCF计算机软件能力认证

    第一题:门禁系统 涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。 每位读者有一个编号,每条记录用读者的编号来表示。 给出读者的来访记录,请问每一条记录中的读者是第几次出现。 输入格式 输入的第一行包含一个整数 n,表示涛涛的记录条数。

    2024年02月15日
    浏览(43)
  • 第二次CCF计算机软件能力认证

    给定 n 个 不同的 整数,问这些数中有多少对整数,它们的值正好相差 1。 输出格式 输入的第一行包含一个整数 n,表示给定整数的个数。 第二行包含所给定的 n 个整数。 输出格式 输出一个整数,表示值正好相差 1 的数对的个数。 数据范围 1≤n≤1000, 给定的整数为不超

    2024年02月13日
    浏览(42)
  • 软件设计师笔记--计算机系统知识

    备战2023年5月27号的软件设计师考试,在此做一个学习笔记的分享,侵删。 推荐UP主:zst_2001 推荐UP主分享的学习路线:zst的软件设计师学习路线 推荐刷题软件:软考通 个人感悟:适合非科班小白学习,讲完某个知识点系统的刷题,然后自己在软考通上面系统的刷章节题,最

    2024年02月01日
    浏览(55)
  • 【软件工程】金管局计算机岗位——软件测试的分类(⭐⭐⭐⭐)

    考点导读: 软件测试是软件工程中最核心的内容,也是银保监专业课常考内容之一。主要考查学生对软件测试方法、工作原理的掌握。这个考点近几年连续考到,且 题量较大 。 1.白盒测试 白盒测试又称为 结构测试或逻辑驱动测试 ,是一种按照程序内部逻辑结构和编码结构

    2024年02月05日
    浏览(70)
  • 第22次CCF计算机软件能力认证

    第一题:灰度直方图 解题思路: 哈希表即可 第二题:邻域均值  解题思路: 二维前缀和 第三题:DHCP服务器 解题思路: 认真读题,题目描述的非常清楚更具题目进行求解即可, 第四题:校门外的树 解题思路: dp问题 设 f[i] 为用了前 i 个障碍点的所有方案 f[i]=(f[0]∗cnt1+

    2024年02月12日
    浏览(33)
  • 第十四次CCF计算机软件能力认证

    第一题:买菜 在一条街上有 n 个卖菜的商店,按 1 至 n 的顺序排成一排,这些商店都卖一种蔬菜。 第一天,每个商店都自己定了一个价格。 店主们希望自己的菜价和其他商店的一致,第二天,每一家商店都会根据他自己和相邻商店的价格调整自己的价格。 具体的,每家

    2024年02月13日
    浏览(40)
  • 第31次CCF计算机软件能力认证

    100+100+100+100+60=460 给定 (n) 个操作,每个操作将坐标 ((x,y)) 变为 ((x + dx, y + dy)) 。 给定 (m) 个点,问这 (m) 个点经过这 (n) 次操作变换后的坐标。 注意到操作是可合并的,因此可以先将这 (n) 个操作合并成一个操作,然后对每个点都经过这个操作变换即可,时间复杂度

    2024年02月08日
    浏览(34)
  • 第30次CCF计算机软件能力认证

    100+100+100+80+100=480 依次给定 (n) 个国际象棋局面,依次回答每个局面是第几次出现。 拿 map 记录下每个局面,统计计数即可。 神奇的代码 给定 (n times d) 的矩阵 (q, k, v) ,一个 (n) 维向量 (w) ,计算 ((w cdot (q times k^{T})) times v) 的结果。 (n leq 10^4, d leq 20) (q times k

    2024年02月06日
    浏览(34)
  • 计算机视觉的实际应用:计算机视觉在实际应用中的成功案例

    计算机视觉(Computer Vision)是一种利用计算机解析、理解并从图像中抽取信息的技术。它是一种跨学科的研究领域,涉及到计算机科学、数学、物理、生物学、心理学等多个领域的知识和技术。计算机视觉的应用范围广泛,包括图像处理、图像识别、机器人视觉、自动驾驶等

    2024年01月23日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包