iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 2
0
自我挑戰組

WebAssembly + Rust 的前端應用系列 第 2

[Day 2] Webassembly 介紹

什麼是 WebAssembly?

讓我們先看一段官方的說明

“WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable target for compilation of high-level languages like C/C++/Rust, enabling deployment on the web for client and server applications.”

Wasm 是一種二進制的指令格式基於 stack-based virtual machine。Wasm 被設計成為可移動設備上的高階語言的編譯方式例如 C/C++/Rust,可以部署在網頁客戶端以及應用伺服器端上。

Assembly 其實就是組合語言的意思,每種高階語言最終都會被編譯成機器碼 (0或1) 執行,而每種不同的語言都需要一個組合語言來把它編譯成機械碼。
但是 WebAssembly 並不是組合語言而是一種已經被編譯過的二進制 binary 檔案,當瀏覽器下載 WebAssembly 的程式之後可以更快的被轉換成組合語言藉此可以大幅改善動態語言 Javascript 會遇到的效能問題。

為什麼需要 webassembly?

編譯式語言的特性就是大幅改善了效能還有記憶體的使用,Webassembly 的目的在於可以用更高的效能去處理以往 Javascript 做不到的事情。根據官網的 use cases 主要皆是在處理影像以及聲音的問題,像是遊戲、3D、影片剪輯、VR等。
所以 WebAssembly 的出現就是為了做到以往瀏覽器不能做到的事情,他不是要來取代 javascript 的而是彼此相輔相乘讓網頁的未來有更多的可能。

另外一個 webassembly 的設計目的是他跨平台的特性可以在不同架構的硬體跟作業系統上運行。我認為也是為了未來萬物皆連網的 IOT 世界在做準備。

https://ithelp.ithome.com.tw/upload/images/20190919/20119807GlbiONWcUn.png

趨勢

首先來看一下官網首頁的文字

Developer reference documentation for Wasm can be found on MDN's WebAssembly pages. The open standards for WebAssembly are developed in a W3C Community Group (that includes representatives from all major browsers) as well as a W3C Working Group.

也就是說 WebAssembly 是有通過 w3c 開發的標準因此未來可以說是勢在必行,不管你願不願意未來他都可能讓你加班到不要不要的!(所以不學不行啊

總結

  1. WebAssembly 是可以被網頁執行的二進制 binary 檔案,可以由 C/C++/Rust 編譯而成。
  2. WebAssembly 的效能比動態語言 javascript 快上很多也小很多。
  3. WebAssembly 的出現不是要取代 javascript 而是補足他所不足的地方。
  4. WebAssembly 並沒有只侷限在網頁的使用上面未來有很多其他發展可能。
  5. WebAssembly 已經通過 w3c 標準

有問題歡迎發問

/images/emoticon/emoticon07.gif

參考連結

WebAssembly wiki

stack-based virtual machine

WebAssembly: How and why


上一篇
[Day 1] 鐵人賽前言
下一篇
[Day 3] Webassembly Hello World!
系列文
WebAssembly + Rust 的前端應用30

尚未有邦友留言

立即登入留言