您好,登錄后才能下訂單哦!
本篇內容主要講解“ 為什么選擇Rust”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“ 為什么選擇Rust”吧!
這個世界上的編程語言不計其數,僅在 TIOBE(開發語言排行榜)上被納入統計范圍的就有273種之多,下圖是當下最流行的前20種編程語言。
這些優秀的編程語言往往都有自己的絕活,例如C性能非常高,Java便于抽象擅長組織大型程序,Python適合小巧的腳本,等等。但同樣,它們也并非完美,性能高的C容易產生段錯誤(segfault,由訪問不屬于本程序擁有的內存所造成的崩潰,例如空指針解引用等),擅長抽象的Java需要垃圾回收(GC),上手快的Python解釋執行速度較慢。所以,編程語言的設計和發展仍有進步的空間,而Rust就是近年來涌現的新一代的綜合各大編程語言優點的集大成者。
Rust的設計者是這樣定位這門語言的:
Rust is a system's programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety.
Rust的突出優勢可以總結為以下三點(無須看懂,知道Rust很厲害就完事了):
內存安全:Rust最重要的特點就是可以提供內存安全保證,而且沒有額外的性能損失。保證內存安全即不會出現內存訪問錯誤,為此,Rust建立了嚴格的內存安全管理模型:
所有權系統:每個被分配的內存都有一個獨占其所有權的指針,只有當該指針被銷毀時,其對應的內存才能隨之被釋放。所有權系統借鑒了C++的RAII機制,這是Rust無GC但是可以安全管理內存的基石。
借用和生命周期:每個變量都有其生命周期,一旦超出生命周期,變量就會被自動釋放。如果是借用,則可以通過標記生命周期參數供編譯器檢查的方式,防止出現懸垂指針,也就是釋放后使用的情況。
零成本抽象:抽象表達能力是使用編程語言高效開發的必要條件,有些語言的抽象表達能力是靠犧牲性能換來的,而Rust的抽象表達能力不會存在運行時性能開銷。Rust零成本抽象的基石是泛型和trait。
并發:內存安全的bug和并發安全的bug產生都是由內存的不正當訪問造成的,所以,利用裝載了所有權的強大類型系統,Rust能夠在編譯期檢查出多線程并發代碼中的數據競爭問題。
Rust以其獨特的魅力已經連續多年榮膺StackOverflow網站罪受程序員歡迎的編程語言,雖然目前其在TIOBE榜單上還未入前列,但未來互聯網必定更加注重安全和高性能,所以應運而生的Rust必將大有可為。
在學習Rust的語法之前,我們先一起來了解一下Rust的周邊知識。
官方網站:點擊這里。在這里你可以找到官方教材TRPL等許多重要內容,所以探索一下此網站大有裨益。
編譯器是開源的:點擊這里。對Rust語言來說,開源社區也是語言的一部分,這是和其他商用語言的區別所在。
語言設計和相關討論:點擊這里。Rust每增加一個重要語言特性,都會經過標準的RFC流程,RFC文檔是涵蓋了語言特性的設計意圖、詳細設計、優缺點的完整技術方案。這對于我們學習者來說,可以通過閱讀RFC來深入了解某個語言特性的來龍去脈,這將是一個極其寶貴的學習資源,有助于了解某個特性背后的原理。
官方開源倉庫:點擊這里。該網站儲存了Rust社區熱門的開源庫。
Rust編譯器的版本號采用了“語義化版本號”(Semantic Versioning)的方案,版本格式為:主版本號.次版本號.修訂號,其遞增規則如下:
主版本號:當做了不兼容的API修改
次版本號:當做了向下兼容的功能性新增
修訂號:當做了向下兼容的問題修正
Rust團隊維護三個發行分支:
開發版(nightly):最新的功能將首先發布在此分支,供用戶試用。
測試版(beta):將nightly版本中驗證過的功能開放給用戶使用,可以看作是stable版本的預發布版本。
穩定版(stable):每隔6個星期發布的穩定可靠的版本。
Rust語言每個相對復雜一點的新功能,都要經歷如下步驟才算真正穩定可用:
RFC -> Nightly -> Beta -> Stable
有時一些新功能確實需要一定程度上破壞兼容性,為了最大程度上減少這些變動給用戶帶來的影響,Rust設計組又提出一個所謂的edition方案,目前有 2015 和 2018兩種edition,我們可以設置"edition=2018"來告訴編譯器我們使用的版本。
根據官網的推薦,可以使用一個叫rustup的工具安裝Rust相關的一整套工具鏈。命令如下:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
我們可以使用rustup工具管理工具鏈:
// 更新rustup本身 rustup self update // 更新工具鏈 rustup update
也可以用它在stable/beta/nightly三種版本中輕松切換:
// 安裝nightly版本的工具鏈 rustup install nightly // 設置默認工具鏈是nightly版本 rustup default nightly
若執行下列命令能夠正確輸出版本號則說明Rust安裝成功:
rustc --version
若安裝不成功,請嘗試將~/.cargo/bin
加入PATH環境變量中去。
在~/.cargo/bin
目錄下可以找到Rust的一些常用工具,如下圖所示:
cargo:Rust的包管理器,類似于Python的pip、Node.js的npm。但cargo不僅局限于包管理,它還為Rust生態系統提供了標準的工作流,能夠管理整個工作流程,從創建項目、運行單元測試和基準測試,到構建發布鏈接庫,再到運行可執行文件,等等。
rustc:Rust的編譯器,負責將Rust源代碼編譯為可執行文件或其他庫文件。rustc是Rust開發的,其輸出的錯誤信息非常友好和詳盡,遠超你見過的任何一款編譯器。
rustdoc:文檔生成器。
rls和racer:為編輯器準備的代碼提示工具。
cargo-fmt和rustfmt:源代碼格式化工具,有了這個,再也不用爭論大括號是寫在行尾還是另起一行了。
rust-gdb和rust-lldb:調試器。
對于IDE,Rust尚沒有專屬的IDE,我推薦Clion+Rust插件,已經非常好用了。
配置好了開發環境,如何能不寫一個充滿儀式感的Hello World程序呢?來,新建一個文件,命名為hello_world.rs
,內容如下:
// hello_world.rs fn main() { let s = "hello world!"; println!("{}", s); }
然后使用rustc編譯它,可看到當前文件夾下生成了一個名為hello_world
的可執行程序:
到此,相信大家對“ 為什么選擇Rust”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。