- 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)問題,而且它也沒有能夠解決軟件工程中所有弊病的靈丹妙藥。
- C++面向對象程序設計(第三版)
- Getting Started with Gulp(Second Edition)
- Mastering AWS Lambda
- Learning Flask Framework
- PhoneGap Mobile Application Development Cookbook
- Python數據可視化之Matplotlib與Pyecharts實戰
- HTML5秘籍(第2版)
- App Inventor創意趣味編程進階
- PHP編程基礎與實踐教程
- Python機器學習之金融風險管理
- Java Web開發教程:基于Struts2+Hibernate+Spring
- C語言程序設計教程
- 你好!Java
- Visual Basic 開發從入門到精通
- Hands-On Data Visualization with Bokeh