Rust 相當於科技界的新來的孩子,他擅長運動、取得高分,甚至會彈吉他。它安全、快速,並且有望消除您的程式碼庫中困擾您噩夢的臭名昭著的記憶體錯誤。但這是否意味著您應該用 Rust 重寫所有項目?不完全是。 ?
用 Rust 重寫對於某些場景非常有用,但它並不是解決所有軟體開發問題的萬用藥。讓我們透過一些程式碼片段、類比來深入探討原因,並希望一路上能帶來一些笑聲。 ?
在我們批評 Rust 之前,讓我們先給予它應有的讚揚:?
記憶體安全:Rust 的借用檢查器消除了整類錯誤,例如空指標取消引用和資料競爭。驚人的! ✅
效能:Rust 的運行速度幾乎與 C 或 C 一樣快,但崩潰次數要少得多。如果您正在建立高效能係統,Rust 是您的朋友。 ?
現代工具:使用 Cargo(Rust 的套件管理器和建置工具),與其他一些語言(看看你,JavaScript)相比,依賴管理變得輕而易舉。 ?
Rust 的座右銘是安全、速度和穩定。 誰不想要這樣呢?現在,讓我們探討為什麼這並不意味著您應該拿起大錘並拆除當前的程式碼庫。 ?️
想像一下您擁有一艘稍微漏水的船。您決定從頭開始建立一個全新的系統,而不是修補它。當然,新船可能會更堅固,但這個過程需要幾個月的時間,花費不菲,而且有可能根本無法漂浮。 ⛵
重寫程式碼類似。 Joel Spolsky 的經典部落格文章「你永遠不應該做的事情」警告不要丟棄工作代碼。為什麼?因為重寫會引入錯誤,丟掉多年的調試知識,並減慢進度。用 Rust 重寫會放大這些風險,因為 Rust 的學習曲線很陡。
假設你有這個 Python 函數:
# Python: Calculate factorial def factorial(n): if n == 0: return 1 return n * factorial(n - 1)
簡單吧?但您想要 Rust 的速度和安全性。它可能如下圖所示:
// Rust: Calculate factorial fn factorial(n: u64) -> u64 { match n { 0 => 1, _ => n * factorial(n - 1), } }
很酷,但是重寫值得嗎?對於像這樣的小片段來說,可能不是。 Python 程式碼運作良好,更易於新開發人員閱讀和維護。如果效能成為問題,您可以使用 PyO3 等工具透過 Rust 庫優化此特定函數,而不是重寫所有內容。
Rust 的語法對於習慣較傳統語言的開發人員來說可能會感覺很陌生。借用、生命週期和所有權等概念很強大,但也令人生畏。如果您的團隊還不熟悉 Rust,預計會出現延遲和混亂。
考慮這個簡單的任務:修改 Rust 中的向量。
# Python: Calculate factorial def factorial(n): if n == 0: return 1 return n * factorial(n - 1)
看起來不錯,但如果你忘記使用 &mut 或用 * 取消引用,借用檢查器會責罵你。來自 JavaScript 或 Python 等語言的開發人員可能會覺得自己被欺負了。
同時,這是 Python 中的等效內容:
// Rust: Calculate factorial fn factorial(n: u64) -> u64 { match n { 0 => 1, _ => n * factorial(n - 1), } }
簡單多了,對吧? Rust 會讓你預先更努力地工作以確保安全,這對於系統程式設計來說非常棒,但對於較小、不易出錯的專案來說就太過分了。
用 Rust 重寫你的個人待辦事項清單應用程序,因為「Rust 很酷」就像用工業級鋼樑建造一個鳥舍。過度設計對任何人都沒有幫助。
假設您正在編寫一個腳本來重新命名一些檔案:
fn main() { let mut numbers = vec![1, 2, 3]; for num in &mut numbers { *num += 1; } println!("{:?}", numbers); }
numbers = [1, 2, 3] for i in range(len(numbers)): numbers[i] += 1 print(numbers)
Rust 的解決方案更加健壯,但是如果您的腳本只運行一次,那麼額外的複雜性值得嗎?對於快速、一次性的任務,Python 等高階腳本語言通常是更好的選擇。 ?
Rust 讓你寫更多的程式碼來達到與其他語言相同的結果。對於安全關鍵型系統來說,這種權衡是值得的,但在開發速度比運行時效能更重要的環境中,這種權衡會降低您的速度。
如果您正在建立 MVP 或原型設計,請使用可讓您快速迭代的語言。一旦你驗證了你的想法並需要擴展,你就可以考慮用 Rust 重寫效能關鍵部分。 ?
沒有一種語言是完美的。鐵鏽閃耀的原因:
但它不太理想:
Rust 是一種具有開創性功能的非凡語言。它值得大肆宣傳,但也需要大量的時間和精力來採用。用 Rust 重寫你的專案可能不是你正在尋找的奇蹟解決方案。
相反,請在有意義的地方考慮 Rust:關鍵效能瓶頸、記憶體安全 API 或穩定性至關重要的長期專案。對於其他一切,堅持有效的做法。請記住,最好的工具是能夠完成工作的工具,即使它是一艘用膠帶修補的漏水船。
所以,暫時不要將你的 Python、JavaScript 或 Go 程式碼庫丟進垃圾桶。 Rust 可能是您需要的英雄,但並非適合每場戰鬥。
以上是為什麼用 Rust 重寫一切並不能解決你所有的問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!