CA週記 | 2022年的第一課Rust

微軟技術棧發表於2022-02-28

現代程式語言有很多,在我的程式設計學習裡面有小學階段的 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 通過 Crates 去管理相關的包, 和整個專案程式碼從專案建立,構建到測試,到執行部署的週期, 對比起在 C/C++ 開發時的雜亂無章,真的是太舒服了。

用什麼開發工具 Rust ?

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

001.png

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

002.png

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

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

請參考我的之前的文件 :

Windows 安裝

https://github.com/kinfey/Han...

Linux/macOS 安裝

https://github.com/kinfey/Han...

  1. 元件安裝

cargo install evcxr_jupyter
evcxr_jupyter --install

注意: 這裡有不同的系統配置要求,更多可以參考這裡 https://github.com/google/evc...

關於 Rust 應用在哪裡

Rust 的應用場景很寬,基於自身特點,常用於一些底層,後端服務,網路程式設計的工作。官方也列出了一些主要應用場景
003.png
在這次系列課程裡,我主要針對 Web 後端的工作做了相關介紹,當然也提及到 WebAssembly 。建議小夥伴可以回看我的 Rust 課程第二第三講。

Rust 的 Web 框架

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

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

005.png

課程的後續補充

三週的課程是非常短的, Rust 涉及的點還有很多。例如如何用 Dapr 和 Web Assbembly 的應用 也是我想講的,接下來我會通過 Work Shop 的方式和大家說說,敬請期待!

最後附上這三個系列課程

006.png

點選進入看 Rust 程式語言 - Rust 基礎學習
007.png
點選進入看Rust 程式語言 - Rust 網頁程式設計

008.png

點選進入看 Rust 程式語言 - Rust 網路程式設計&IoT程式設計

相關文章