CA週記 2022年的第一課 - Rust

MicrosoftReactor發表於2022-03-15

現代程式語言有很多,在我的程式設計學習裡面有小學階段的 LOGO , 中學階段的 Pascal ,也有大學階段的 C/C++、Java、.NET,再到工作的 Objective-C 、Swift、Go、Kotlin,以及 Rust 。2021年,4個月的人工智慧課程結束後,我在想有什麼技能可以帶給各位 Reactor 的小夥伴。我有想過是我司三朵雲上很 Cool 的產品,還是一些解決方案的實踐。在權衡後,我決定給大家帶來 Rust,作為2022年新的開始。

為什麼選擇 Rust?

不知從什麼時候開始,每個語言誕生都在說自己的高效能、可靠性和生產力。而當你真正入坑後,總會有各種抱怨。我瞭解 Rust 是3年前衣明志老師介紹的。他是怎麼安利的我忘記了,不過我就踏入了這個坑。

Rust 的語法和 C++ 很像, 具有高速和記憶體安全性。Rust 是系統級別的程式語言。
我們來看看 Rust 和 C/C++ 的一些關於記憶體安全的對比:

int checkStr()
 {
char *str = strdup("Hello Reactor!"); 
return 0;                            
 }

在 C/C++ 中,上述語法忘記了釋放指標,導致了記憶體洩露,這是一個非常基礎的問題。但在 Rust 中,我們可以通過作用域去避免同樣的問題。

fn checkStr(){
     let str = String::from("Hello Reactor!");
}  

單從記憶體安全性上,Rust 就足夠好用。另外,Rust 還可以通過 Crates 去管理相關的包。整個專案程式碼從專案建立、構建到測試,再到執行部署的週期,對比在 C/C++ 開發時的雜亂無章,真的是太舒服了。

用什麼工具開發 Rust?

一個好的工具,可以提升開發的效率。開發 Rust 我還是強烈推薦 Visua Studio Code。裡面有非常完善的 Rust 支援。只需將 rust-analyzer、CodeLLDB以及crates 這三大外掛安裝好,你就可以非常高效地完成 Rust 的開發。

我的課堂上還使用了另外一種方式——Jupyter Notebook。通過 Notebook,你可以完成一些相關的語法學習,以及做一些資料分析。

課後也有一些小夥伴問我如何安裝。在這裡我附上安裝步驟。

Python 環境安裝和基本的 Jupyter Lab 安裝

請參考我之前的文件

Windows 安裝

Linux/macOS 安裝

元件安裝

cargo install evcxr_jupyter
evcxr_jupyter –install

注意:這裡有不同的系統配置要求,更多內容請參考: https://github.com/google/evcxr/blob/main/evcxr_jupyter/README.md

Rust 的應用

Rust 的應用場景很廣泛。基於自身特點,常用於一些底層、後端服務,以及網路程式設計的工作。官方也列出了一些主要的應用場景:

在這次系列課程中,我主要針對 Web 後端的工作做了相關介紹,當然也提及到了WebAssembly 。建議大家可以回看我的 Rust 課程第二、第三講。

Rust 的 Web 框架

Actix 和 Rocket 都是非常成熟的 Rust 頁面服務框架,兩者不相伯仲。我的課程以 Actix 框架為主 ,當然你也可以嘗試一下 Rocket 這個框架。
以下是兩個框架的介紹,可以根據實際情況進行框架的選擇。

我個人比較注重架構,好的架構是一個好的專案的開始。做後端服務離不開 MVC 這個熟悉的模式,結合 Rust 的包的知識,我們可以用 Actix 的後端解決方案架構出一個非常好的專案。建議大家在架構 Rust 後端服務時,可以參考我的 Rust 課程第三講。

課程的遺漏

三週的課程是非常短的,而 Rust 涉及的點還有很多。例如如何用 Dapr,以及 Web Assbembly 的應用等也是我想講的內容。
接下來我會通過 Workshop 的方式繼續同大家分享,敬請期待!

最後附上這個系列課程的三講內容:
Rust 程式語言 - Rust 基礎學習
Rust 程式語言 - Rust 網頁程式設計
Rust 程式語言 - Rust 網路程式設計&IoT程式設計

相關文章