官术网_书友最值得收藏!

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)問題,而且它也沒有能夠解決軟件工程中所有弊病的靈丹妙藥。

主站蜘蛛池模板: 垫江县| 洛宁县| 昭平县| 邢台市| 铁岭市| 运城市| 托克逊县| 湾仔区| 万源市| 庆安县| 抚宁县| 外汇| 贵港市| 平阴县| 西盟| 商城县| 中宁县| 铁力市| 荥经县| 磴口县| 辰溪县| 阿坝| 湘潭县| 文山县| 德惠市| 通海县| 孝义市| 交口县| 庆安县| 西和县| 临漳县| 四平市| 富锦市| 正阳县| 台南市| 威海市| 高尔夫| 西峡县| 梓潼县| 利川市| 额济纳旗|