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

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

主站蜘蛛池模板: 高清| 宜丰县| 米脂县| 克东县| 沂南县| 连山| 肃宁县| 高碑店市| 天峨县| 富川| 金乡县| 托里县| 永春县| 千阳县| 杂多县| 容城县| 棋牌| 藁城市| 舞阳县| 东光县| 宣汉县| 陕西省| 永宁县| 荃湾区| 资中县| 讷河市| 谢通门县| 江孜县| 宜丰县| 华阴市| 五河县| 图木舒克市| 邢台市| 清涧县| 华容县| 阿尔山市| 吉木萨尔县| 进贤县| 定南县| 临西县| 逊克县|