C++開發究竟需不需要學點Rust?個人認為:需要!早就是優勢!多年以前,后端還是Java和C++的天下呢!那時好多人都說Go的生態不好,它作為后端主要語言還有很長一段距離。然而,看看現在,多數做后端開發的人都轉到Go去了。貌似現在的Rust和當年的Go有點類似的味道?
對于 Rust 這個新語言,很多人可能都聽過,但是沒用過。實際上,早從 16 年起,Rust 已經連續六年霸榜,被 Stack Overflow 評選為最受開發者喜愛的語言。
當然,它優點確實很多。不夸張地說,用過 Rust 的人都說各種好。
首先 Rust 沒有歷史包袱,采百家之長。從語言的內核看, Rust 重塑了對基本概念的理解。比如它清晰地定義了變量的生命周期,不僅摒棄GC這樣的內存和性能殺手,還不用關心手動內存管理,讓內存安全和高性能兼得。
其次,從語言的外觀來看,它用起來很像 Python/TypeScript 這樣的高級語言,表達能力一流,但性能絲毫不輸于 C/C++,表達力和高性能二者兼得。
所以,集表達力、高性能、內存安全于一身的 Rust ,在很多場景里都能大施拳腳。除了在傳統的系統開發領域,如操作系統、設備驅動、嵌入式等方向高歌猛進之外,Rust 還在服務端高性能、高并發場景遍地開花。
Rust 的應用面
國內外不少知名互聯網或科技公司,都在采用 Rust 重構技術棧,比如字節的飛書、Google 的 Fuchsia 等,清華大學也開始讓本科生學習 Rust 而不是 C/C++。在可預見的未來,Rust 或在大多數領域代替 C/C++,成為開發者的主力語言。
用起來就有多香,學起來就有多難。Rust 也是公認的難入門,學習曲線很陡峭。
除了普遍覺得不好學的所有權和生命周期以外,不同語言背景還會有不同的難點:
C 開發者,難點是類型系統和泛型編程; C++ 開發者,難點主要在類型系統; Python/Ruby/JavaScript 開發者,難點在并發處理、類型系統及泛型編程; Java 開發者,難點在異步處理和并發安全的理解上;

再說說作者「陳天」
用 C 和匯編打造過各種網絡協議,維護過在網絡安全領域非常知名的嵌入式操作系統 ScreenOS; 用 Python/Javascript 撰寫過曾經的創業項目途客圈; 用 Node.js/Elixir 打造過 TubiTV 高并發的后端核心; 用 Elixir 打造過區塊鏈框架 Forge; 也研究過 Haskell/F#、Clojure/Racket、Swift、Golang 和 C#等其他語言。
Rust 高效學習路徑
回顧軟件開發的基礎概念:堆、棧、函數、閉包、泛型、同步和異步等。這些是學好任意一門編程語言都要吃透的概念,因為編程語言不過是這些概念的具體表述和載體。
深入淺出地探討 Rust 變量的所有權和生命周期,對比幾種主流的內存管理方式,包括 C 的手工管理、Java 的 GC、Swift 的 ARC 和 Rust 的獨特方案。之后圍繞所有權和生命周期,來討論 Rust 的幾大語言特性:函數式編程特性、類型系統、泛型編程以及錯誤處理。
Pascal 之父,圖靈獎得主尼古拉斯·沃斯有一個著名的公式:算法 + 數據結構 = 程序,想隨心所欲地使用 Rust 構建數據結構,深度掌握類型系統必不可少。所以將重點介紹 Trait、Trait Object、泛型、Unsafe Rust、 FFI,用 Rust 為自己的主力語言在關鍵路徑上提供更高性能。
學會用最合適的工具解決最合適的問題很重要。這個模塊將帶你從底層的 atomics 一路向上,歷經 Mutex、Semaphore、Channel,直至 actor model,探索不同的并發手段。你會深度了解到,其他語言中被奉為圭臬的并發手段,在 Rust 里,只不過是一種并發工具。
單純掌握語言特性,能寫出解決一些小問題的代碼,就像在游泳池里練習沖浪,算是初窺門徑;想要真正把語言融會貫通,還要靠大風大浪中的磨煉。這個模塊會帶你學習如何把 Rust 應用在生產環境中,以及如何用 Rust 解決實際問題。