WebAssembly 入门快问快答

WebAssembly 旨在彻底提高应用程序的性能、安全性和开发人员的生产力。 它用托管容器和细颗粒度的安全模型替换本机代码。

在学习WebAseembly 的过程中,总会遇到一些问题。这里选取了关于 WebAssembly 比较典型的几个问题,一一解答。

2020年,我们为什么用本地代码编程?

在过去的几年中,CPU 的速度基本不再飞速提升。 同时,人工智能、大数据和区块链都对计算能力提出了巨大的要求。 到目前为止,解决方案是在我们的软件中使用越来越多的本地代码。 本机代码效率高,接近硬件,能够访问专门的硬件,如 GPU 和人工智能芯片。

然而,本机代码也存在平台依赖性和安全性等问题。 在过去的30年里,软件工程的大趋势已经从原生代码转变为运行在虚拟机器或容器中的托管代码。

WebAsssembly 比本机代码好在哪里?

WebAssembly 是下一代虚拟机,它将帮助我们将本机代码模块转换为 服务。

  • 可以用多种编程语言编写 WebAssembly 程序,而不仅仅是 c 和 c + + 。特别要指出,WebAssembly 能很好地支持Rust。
  • 可以从多个编程框架(如 JavaScript、 Python 和 PHP)访问或调用 WebAssembly 程序。
  • WebAssembly 是跨平台的。 它们可以在所有主要的操作系统和硬件平台上无需更改即可运行。
  • WebAssembly 程序相当安全,因为它们在虚拟机中执行。
  • 由于其轻量级的虚拟机设计,WebAssembly 程序具有效率高,速度快的特点。 它与本机代码性能相当。
  • WebAssembly 提供了一种访问新硬件的简单而安全的扩展机制

WebAssembly 安全、速度快且跨平台。 但是,WebAssembly 不是主要在浏览器内部使用吗?

WebAssembly 是由 Google,Mozilla,Apple 和 Microsoft 合作发起的。 它一开始的设计目标是一个在浏览器内部的高性能代码执行引擎。 在这个情况下,它的典型应用是对性能有高要求的的浏览器应用,比如动画游戏,很像早先的 java applet。

然而,和之前的 Java 和 JavaScript 一样,WebAssembly 在正在大举向服务器端迁移,并也取得了成功。 Webassembly 的安全性、性能、平台和语言兼容性,使其成为理想的服务器端运行环境。

想要使用WebAssembly必须学会Rust语言,是这样吗?

不用。WebAssembly 兼容多语言。 可以用各种不同的主机语言调用 WebAssembly 程序和函数,比如 Javascript、 Rust、 Go、 Python,甚至 PHP。

您可以用各种不同的编程语言编写 WebAssembly 程序。 然而,Rust 是目前最广泛用于创建 WebAssembly 程序和模块的语言。

Rust 连续4年被评为最受大家喜爱的编程语言。 它是目前最热门的编程语言。 它有许多令人激动的特性。比如,它像 c 一样强大而灵活,但是更加安全,而且没有 Java 的性能损耗。 它既支持面向对象编程,也支持函数式编程。 它是世界上成长最快的编程语言之一,现在从前端到后端到基础设施的整个软件堆栈中都使用它。

你对 WebAssembly 有什么疑问呢?欢迎在评论区留言。

阅读 299

推荐阅读
Wasm
用户专栏

随着WASM 在开发者社区中越来越流行,WASM 也正在从客户端迁移到服务端,成为服务端技术的新锐。

10 人关注
32 篇文章
专栏主页