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