iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 4
0
自我挑戰組

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

[Day 4] Rust 介紹 重頭戲登場!

上一篇介紹了 WebAssembly 既然都要學編譯式語言不如就來學 Rust 吧!

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

Rust 的緣起

首先來一段 Mozilla 官方的說明

Rust 是個由 Mozilla 及社區志願者所建立的開源系統程式語言,旨在幫助開發者建立快速安全,並充分使用當代多核心處理器強大功能的程式。它會阻止記憶體區段錯誤(segmentation fault)並確保執行緒(thread)安全、並使用簡單明瞭的語法。

因為摩爾定律讓硬體核心數越來越多的情況下為了最好的利用硬體的效能 Rust 於焉誕生了,他當初設計的目的就在於適應當代多核心的 CPU 架構,由於早期的處理器都是單核心所以像是 C/C++ 也是用單核心的思維下去做設計的,而多核心會遇到的問題在 Rust 上都替你想好也處理好了。

Rust 的優點

https://ithelp.ithome.com.tw/upload/images/20190920/20119807nadhxSfoxy.png

  • memory safe
  • 效能媲美 C/C++
  • 沒有垃圾回收機制
  • 強大的編譯語法檢查
  • 無成本的抽象
  • 和其他語言的介接性很高
  • 相對於 C/C++ 他比較好學且生態系豐富

官網自己對於 Rust 的特色說明

Rust 提供了 zero-cost abstractions, move semantics, guaranteed memory safety, threads with no data races, trait-based generics, pattern matching, type inference, and efficient C bindings, with a minimum runtime size.

而我自己寫了一些簡單的程式之後發現他做了很多良好設計的來防止工程師容易犯的錯誤像是 data race 以及防止 memory leaks 等問題可以讓工程師非常舒服的開發產品。

而其缺點我想大概就是學習曲線一開始比較陡峭一點,尤其如果程式底子不夠深的話(像我)就必須查很多資料才能明白其設計原理跟背後的原因。

Rust 應用範圍

https://ithelp.ithome.com.tw/upload/images/20190920/20119807Kk4axWndar.png

Rust 很棒的地方在於它不只可以用在較底層的程式也可以用在架構 web service 上面,簡單來說他打破了傳統要效能就只能用像是 C/C++ ,而要開發 web service 就只能用 PHP、C#、Javascript 等語言。也因此 Rust 可以應用的範圍非常廣泛從 OS、Database、 web service、IOT 等等幾乎涵蓋了所有編譯式語言的範疇。

Rust 社群

Rust 的官方文檔非常的詳細從簡單到困難全部都涵蓋在內因此讀起來完全沒有障礙,另外就是因為他是開放原始碼所以你可以去看 Rust 這個語言到底是怎麼做的,甚至是美國多所學校的作業系統課程都是指定使用 Rust 教學。
而且台灣也有非常蓬勃發展的 Rust 社群所以基本上你完全不用擔心找不到人問或是找不到學習資源,相信各位在學習這門語言都時候會有非常多的樂趣。

Rust 和 Webassembly 的未來

因為 Webassembly 的未來非常看好所以 Rust 有一個團隊是專門在處理整合 webassembly 的開發工具所以基本上用 Rust 開發 webassembly 的體驗是非常流暢的,而這也是我踏入 Rust 世界的原因。

這裡有部影片我覺得介紹的非常好有機會我再把內容整理出來,裡面介紹了 webassembly 的演進史、Rust 的介紹、未來 webassembly 跟 browser 可能的發展還有把 webassembly 當成 docker container 都是非常棒的概念,有興趣的花點時間聽完會很有收穫。

總結

簡單來說 Rust 就是新一代的 C/C++ 但是擁有更好的介面跟非常易學好上手並且幫你處理掉很多麻煩的事情,不只讓你可以寫底層的程式也可以拿來開發高階的應用。而其狹帶著很多優良的設計還有他健全的生態系都讓很多工程師非常看好跟期待他未來的發展。

接下來下一篇會來講 Rust 的安裝與環境設定。

最後一樣有問題歡迎發問

/images/emoticon/emoticon07.gif

參考連結

rust official

summary-of-rust-vs-go

rust-overview


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

尚未有邦友留言

立即登入留言