書名: Rust實戰作者名: (新西蘭)蒂姆·麥克納馬拉本章字數: 946字更新時間: 2022-12-01 19:12:22
1.8 Rust的缺點
人們在談論這門語言時,很容易會給人一種“這是所有軟件工程的靈丹妙藥”的感覺。舉例來說:
● “高級語言的語法,低級語言的性能!”
● “并發而不會崩潰!”
● “具有完美安全性的C!”
這些宣傳口號(有些夸大其詞)真的很棒。但是,即便兼具所有的這些優點,Rust也確實有一些缺點。
1.8.1 循環數據結構
在Rust中,我們很難對循環數據(比如任意一個圖結構)進行建模。實現雙向鏈表是一個大學本科生就能解決的計算機科學問題,然而,Rust的安全性檢查確實妨礙了類似結構的代碼編寫。如果你正在學習Rust語言,在對它有足夠的了解之前,你應該盡量避免去實現這類數據結構。
1.8.2 編譯速度
Rust的代碼編譯速度比同等語言慢。Rust的編譯器工具鏈很復雜,其中有多種中間表示形式,并且會發送大量的代碼給低級虛擬機(Low Level Virtual Machine,LLVM)編譯器。Rust程序的“編譯單元”不是一個單獨的文件,而是一個完整的程序包(昵稱為crate)。Rust程序包有可能包含眾多模塊,因此可能會是非常大的編譯單元。雖然這樣可以針對整個程序包進行優化,但同樣地,也必須針對程序包的整體進行編譯。
1.8.3 嚴格
使用Rust編程時,是不可能——好吧,是很難偷懶的。在所有代碼都正確之前,程序不能通過編譯。編譯器很嚴格,但是也很有幫助。
隨著時間的推移,你可能會逐漸喜歡上這個特點。如果你使用過動態語言編程,那么肯定遇到過因為變量名錯誤而使程序崩潰的情況,并由此體會到挫敗感。Rust把出現這種挫敗感的時間給提前了,至少使用你的程序的用戶不必經歷有某些東西崩潰了的挫敗感。
1.8.4 語言的大小
Rust語言的規模很大!它有一個豐富的類型系統、幾十個關鍵字,并包含一些其他語言所沒有的特性。這些因素疊加起來,就形成了一個陡峭的學習曲線。為了讓學習的過程易于管理,我建議逐步地學習Rust。從語言的最小子集開始,當你需要進一步學習某些細節時,再給自己留出時間來學習。這就是本書所采取的方法。高級的概念將會被推遲到比較靠后的、合適的章節中再來講解。
1.8.5 炒作
對于發展得過快和被夸張的宣傳過度消費的情況,Rust社區秉持非常謹慎的態度。然而,有不少軟件項目都遇到過一個問題,在項目相關的郵件中會出現類似這樣的建議:“你考慮過用Rust來重寫這個程序嗎?”不幸的是,用Rust編寫的軟件仍然是軟件。Rust語言并不能避免所有的安全性(security)問題,而且它也沒有能夠解決軟件工程中所有弊病的靈丹妙藥。
- Dynamics 365 for Finance and Operations Development Cookbook(Fourth Edition)
- JavaScript前端開發模塊化教程
- Learning Selenium Testing Tools with Python
- PHP基礎案例教程
- PyTorch自然語言處理入門與實戰
- HTML5+CSS3基礎開發教程(第2版)
- Lua程序設計(第4版)
- Learning Vaadin 7(Second Edition)
- Mobile Device Exploitation Cookbook
- 計算機應用基礎教程(Windows 7+Office 2010)
- Shopify Application Development
- 程序員必會的40種算法
- C/C++代碼調試的藝術(第2版)
- Mastering XenApp?
- 零基礎學Java(第5版)