自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Gopher的Rust第一課:Rust的那些事兒

開發(fā) 前端
在這篇博文中,我們了解了Rust語言的誕生歷程、現狀發(fā)展,以及它獨特的設計哲學。通過與Go語言進行對比,我們可以看出兩者在出身、目標和設計理念上的一些差異。

要說這兩年后端編程語言誰最火,Rust[1]說自己第二,沒人敢說第一。Rust連續(xù)8年霸榜stackoverflow最受推崇的編程語言[2],甚至被推特之父Jack Dorsey稱為“完美的編程語言”:

圖片圖片

注:最火:僅代表人氣最旺,最受歡迎,但并不代表使用者最多。

如果你經常讀我的博客,你可能會問:“你不是Go語言布道師嗎?怎么也要轉Rust了?”其實不然,學習Rust不是要蹭熱度,而是實際開發(fā)的需要。這些年在汽車行業(yè)這個賽道上,云端和車端都要兼顧。目前車端基礎軟件的開發(fā)語言主要是C/C++,但內存安全、性能不輸C且高可靠的Rust日益受到車載軟件開發(fā)的青睞,AUTOSAR組織在2022年成立了Rust工作組就是一個重要的信號。并且據我所知,一些國內造車新勢力已經或正在將一些Rust開發(fā)的中間件或應用放到了量產車或即將量產的車上。

注:AUTOSAR (Automotive Open System Architecture)[3] 是一個面向汽車電子系統(tǒng)的開放式軟件架構標準,由汽車制造商、零部件供應商和電子供應商共同發(fā)起并持續(xù)維護的一個全球性標準化組織。

不過,Rust語言在某些領域的崛起確實引發(fā)了其他編程語言社區(qū)的一些不滿和爭議。特別是Rust社區(qū)的一些人提出“Rewrite Everything in Rust”的觀點,讓很多編程語言社區(qū),尤其是C++社區(qū)十分不安。Go社區(qū)則相對更加開放和友好的,主流觀點是Go與Rust是可以互補的,兩種語言在各自的優(yōu)勢領域發(fā)揮作用,通過合作而非對抗的方式,能為開發(fā)者提供更好的選擇。更多細節(jié),可以參考幾年前我曾翻譯過的前Go團隊產品經理、gohugo的作者Steve Francia聯(lián)合創(chuàng)作的一篇文章《Rust vs. Go:為什么強強聯(lián)合會更好[4]》。

也就是說Go依然是我的主力語言,但考慮工作上的需要,我要系統(tǒng)學學Rust了。為了避免“從入門到放棄”,我打算采用邊學習邊輸出的方式,一方面可以督促自己學習,另一方面也希望能和讀者及時互動,糾正學習中的錯誤理解。

我的Go語言第一課專欄[5]廣受歡迎,其知識結構想必也是大家認可的,這里我就仿照其形式,寫一下學習Rust的第一課這個入門系列。

正如我在Go語言第一課專欄[6]所說的那樣:我一直認為,當你開始接觸一門新語言的時候,你一定要去了解它的歷史和現狀。因為這樣,你才能建立起對這門語言的整體認知,了解它未來的走向。而且,也能建立起學習的“安全感”,即相信它能夠給你帶來足夠的價值和收益,更加堅定地學習下去。

在這篇文章中,我就先來了解一下Rust的誕生歷史和現狀發(fā)展,以及它獨特的設計哲學。并與Go語言做個簡單對比,希望能夠讓自己和讀者對Rust有一個初步的認識。

1.1 Rust的歷史與現狀

1.1.1 Rust的誕生與演進

Rust誕生于2006年,這比Google三巨頭“密謀”創(chuàng)建Go語言還要早上一年。不過和Go的三位創(chuàng)始人:圖靈獎獲得者、C語法聯(lián)合發(fā)明人、Unix之父肯·湯普森(Ken Thompson),Plan 9操作系統(tǒng)領導者、UTF-8編碼的最初設計者羅伯·派克(Rob Pike),以及Java的HotSpot虛擬機和Chrome瀏覽器的JavaScript V8引擎的設計者之一羅伯特·格瑞史莫(Robert Griesemer)相比,Rust之父格雷登·霍爾(Graydon Hoare)[7]的身份和江湖地位卻沒有那么“顯赫”。彼時的他只是Mozilla Research的一位加拿大籍的、不到30歲的開發(fā)人員:

圖片圖片

注:Graydon Hoare這個人非常低調,極少在公開場合露面,因此在網絡上很難找到他的肖像,上面圖中的肖像來自https://www.crunchbase.com/person/graydon-hoare,我這里甚至不能保證這個肖像就是Hoare本人的。

新生代編程語言的誕生都伴隨著一段軼事,比如Go語言的創(chuàng)始人們在Google內部經常遇到C++項目漫長的編譯時間問題,每當他們啟動一個C++項目的編譯,都要等很長時間,期間都能喝上幾杯咖啡。這讓他們深有感觸并意識到需要設計一門編譯速度更快的新語言,于是Go語言就這樣誕生了。和Go語言“喝咖啡,等C++項目編譯”類似,Rust的誕生也有一段軼事:

2006年,29歲的Hoare有一天回到溫哥華的家中,但他發(fā)現電梯壞了,電梯軟件崩潰了!他不得不爬樓梯回到位于21層的家中。當他爬上樓梯時,他感到很惱火。他想:“我們做計算機編程的人居然無法制造出一部可以正常工作而不崩潰的電梯!” Hoare知道,許多此類崩潰都是由于程序使用內存的問題造成的。電梯等設備內部的軟件通常是用C++或C語言編寫的,這些語言以允許程序員編寫運行速度非??烨蚁喈斁o湊的代碼而聞名。問題是這些語言也很容易意外引入內存錯誤,這些錯誤會導致崩潰。Hoare決定對此做點什么。于是他打開筆記本電腦,開始設計一種新的計算機語言,他希望這種語言能夠編寫小而快速的代碼,而不會出現內存錯誤,他將其命名為Rust

這段軼事顯然不可考證了。但可以確定的是從2006年開始的若干年里,Hoare創(chuàng)建的個人語言項目Rust并沒有真正的用于改善電梯系統(tǒng)的程序,而是在得到了Mozilla的贊助下,用在了持續(xù)開發(fā)Mozilla的瀏覽器引擎Servo上了,Mozilla在2010年官宣了該項目,Hoare在2010年的一次演講[8]中也第一次介紹了Rust語言:

圖片圖片

Rust開源的第一行代碼也是在2010年完成的:

圖片圖片

此外,最初的Rust編譯器是由OCaml實現的,2011年Rust團隊使用Rust基于LLVM重新實現了編譯器并實現了自舉。同年,Rust也有了自己的LOGO,其設計靈感來自于自行車齒盤[9]

圖片圖片

2012年,Graydon Hoare接受InfoQ專訪[10],談及他帶領Rust team在Mozilla開發(fā)的系統(tǒng)編程語言Rust,包括Rust的特性、Rust相對于C/C++/Java/Go的優(yōu)勢與不同以及Rust的1.0版本發(fā)布計劃。

但是,就在下一年,即2013年,Graydon Hoare就因為精力耗盡而辭去了Rust team的領導職務[11],離開了自己的Rust team,并從此遠離了Rust開發(fā)。Hoare的離開對Rust team和語言本身來說是一次重大的損失,但Rust社區(qū)和團隊采取了積極的措施來確保Rust的持續(xù)發(fā)展和演進。

2014年11月,Rust官宣了cargo和crates.io[12],前者是Rust項目構建管理器,后者則是Rust官方維護的Rust代碼的中央包存儲庫,通過cargo可以輕松構建和發(fā)布包到crates.io,或從crates.io上拉取Rust代碼的依賴。

2015年5月15日,Rust迎來了一個里程碑的時刻:Rust 1.0正式發(fā)布![13] ,這要比Go發(fā)布1.0版本[14]遲了3年。但正如官博所說:“1.0版本的發(fā)布標志著混亂的結束。此版本是我們對穩(wěn)定性承諾的正式開始,因此它為構建應用程序和庫提供了堅實的基礎。從現在開始,重大更改基本上超出了范圍(一些小的警告適用,例如編譯器錯誤)”。

Rust 1.0發(fā)布后,Rust的版本發(fā)布周期與節(jié)奏也得以確定下來,即每6周發(fā)布一個穩(wěn)定版本[15],按照這個節(jié)奏,與Rust 1.0同時發(fā)布的還有Rust 1.1 Beta版本。經過六周的測試后,Rust 1.1 Beta轉為Rust 1.1穩(wěn)定版本,同時發(fā)布Rust 1.2 Beta版本,依次類推。當然,Rust還有一個nightly build版本,這個版本包含了最新但不穩(wěn)定的特性。和Go社區(qū)和開發(fā)人員每年只能high兩次相比,Rust開發(fā)者和社區(qū)更加幸運,每六周就能high一次!

Rust的演進是基于RFC(Request For Comments)驅動的[16],并且這一措施是早于Rust 1.0發(fā)布前就基于RFC確定下來的[17]。這與Go的Proposal process[18]類似,但感覺比Go的流程更規(guī)范和嚴謹,當然這與兩種語言的治理結構的組成和規(guī)則有關。

然而,Rust 1.0的發(fā)布只是Rust語言發(fā)展的一個新起點,這件事并沒有像Go語言在2009年宣布開源[19]那樣獲得足夠的曝光度并贏得TIOBE年度最佳編程語言的稱號。

Rust之后的發(fā)展依舊是一波三折,這主要也是緣于Rust當時沒有一個“好爹[20]”:

圖片圖片

TIOBE Rust曲線(2012~2024.3)

2020年,Rust語言迎來了自己誕生以來的至暗時刻。因新冠疫情全球流行導致的業(yè)績下滑,2020年8月,Mozilla解雇了全球1000名員工中的250名,這其中就包含Servo引擎背后的團隊。該事件引起了人們對Rust未來的擔憂,因為團隊的一些成員是Rust的主要貢獻者。

但塞翁失馬焉知非福,2021年2月8日,由五家創(chuàng)始公司(AWS、華為、谷歌、微軟和Mozilla)共同贊助的獨立非營利組織Rust基金會宣布成立[21]!Rust團隊終于有了新家,并且這次除了親爹Mozilla外,還有四個財大氣粗、執(zhí)IT牛耳的干爹,Rust語言的未來一下變得光明了。

實際上Rust的發(fā)展也是如此,從2021年基金會成立至今(2024.4),Rust取得了長足的發(fā)展:語言特性不斷增強,編譯器性能持續(xù)優(yōu)化,生態(tài)系統(tǒng)日漸壯大和完善,增加和完善了對WebAssembly、嵌入式、大數據、區(qū)塊鏈、人工智能等領域的支持。下面我們就來說說Rust語言的現狀。

1.1.2 Rust的現狀發(fā)展

1.1.2.1 語言排名

雖然Rust熱度很高,但在語言排名方面與幾乎同期的Go還有一定差距,在2024.3月的TIOBE排名中,Go穩(wěn)居第8位,而Rust雖然刷新了自己的歷史最高排名,但也僅僅排在第17位:

圖片圖片

TIOBE Rust 2024.3排名

Redmonk 2024.1月排名[22]中,Rust位列19位,Go位列12位:

Redmonk Rust 2024.1排名Redmonk Rust 2024.1排名


不過,Rust的熱度和社區(qū)活躍度甚至要高于Go,究其根源,我認為還是與兩個開源語言的治理結構有關,下面是Go和Rust在Reddit論壇上的擁躉數量與在線人數對比(2024.4.6 21:39北京時間):

圖片圖片

如果能持續(xù)保持住這樣的熱度和發(fā)展勢頭,Rust可能在未來幾年迅速接近Go的位置,甚至超越也是有很大可能的。

和Go開發(fā)人員自稱Gopher類似,Rust開發(fā)人員自稱Rustacean,這是一個結合了“Rust”和“Crustacean”(甲殼類)兩個詞語的組合詞。此外,Rust社區(qū)還設計了Rust的非官方吉祥物(mascot):Ferris[23],一只可愛的紅色螃蟹,它是由設計師Karen Rustad T?lva在2010年創(chuàng)作的。Ferris象征著Rust語言的安全性、并發(fā)性和生產力,同時也代表著Rust社區(qū)的活躍和友好。

圖片圖片

crates.io上還有一個名為ferris-says[24]的crate,可以用來打印Ferris吉祥物相關的文字,可以輸出像下面這樣的ASCII字符拼接出的Ferris形象:

圖片圖片

1.1.2.2 語言采納

從上面TIOBE的Rust排名曲線來看,Rust在2018 edition和2021 edition前后到達過兩個“尖峰”。各大公司以及初創(chuàng)也基本都是在2018 edition之后開始逐漸采納Rust的。

注:關于Rust edition,感興趣的讀者可以先參考Rust官方文檔[25],在后續(xù)學習cargo和Rust項目編譯構建的時候,我們還會深入學習和理解edition。

接下來,我們列舉一下Rust基金會創(chuàng)始公司以及其他一些知名IT公司和組織對Rust的采納情況。

  • AWS

除了成為Rust基金會創(chuàng)始成員,讓大家真正知道了AWS對Rust投入的決心外,真正讓大家看到AWS內部大量使用Rust的文章是2022年2月AWS在官博發(fā)表的一篇名為Sustainability with Rust[26]的文章,這篇文章介紹了Rust在AWS內部基礎設施構建上發(fā)揮的關鍵作用,包括用Rust進行Firecracker、AWS Lambda、Amazon S3、 Bottlerocket等開發(fā)。這篇文章還引用了一篇2017年發(fā)表的論文Energy Efficiency across Programming Languages[27]中的結論,認為Rust在能耗方面的優(yōu)勢是其他語言如Go、Java不能匹敵的,這一定程度上引發(fā)了爭議,記得Russ Cox在Twitter上海批駁了這篇文章中引用的數據不準確。

  • 華為

作為國內以一己之力力抗美帝的通信、IT、手機、汽車等多賽道公司,同樣也是擁有處理器、OS、編譯器等全技術棧的研發(fā)型公司,華為對Rust這一的系統(tǒng)級編程語言尤為青睞。但從公開資料上能看到的東西不多,從華為可信編程實驗室[28]的主頁上,我們看到了Rust在華為應用的一些情況。

華為的目標是在全球最大的電信行業(yè)設計值得信賴的軟件系統(tǒng)。華為正在努力將部分代碼庫遷移到Rust,它比C/C++更安全且性能更高。為了幫助開發(fā)人員完成這個過程,華為利用開源C2Rust翻譯器[29]直接從C生成Rust代碼。

huawei還在內部用Rust開發(fā)了一組豐富的內部庫,這些庫圍繞基于actor的并發(fā)范式而構建,這樣利用Rust語言功能(例如async、await等)簡化了異步編程。

  • Google

Google已將Rust應用到Chromium、Android和FuchsiaOS中,其中Chromium對Rust的支持處于實驗階段。開發(fā)者可以使用Rust來開發(fā)適用于Android和FuchsiaOS的組件,并且Rust在Android和FuchsiaOS的內部代碼中使用的比例相當大,特別是FuchsiaOS,Rust代碼已經超過50%。由于內部Cpp代碼量較大,2022年10月,谷歌推出了基于開源RISC-V芯片的新型安全操作系統(tǒng)KataOS。Sparrow是KataOS的參考實現,運行在seL4上,幾乎完全用Rust編寫。該操作系統(tǒng)不是為臺式電腦或智能手機設計的,而是為物聯(lián)網設計的,可用于智能家居設備。目標是為嵌入式硬件或邊緣設備構建可驗證的安全操作系統(tǒng),例如捕獲圖像的網絡連接攝像頭,這些圖像在設備上或云中處理以進行機器學習。在2022年發(fā)布的Android 13版本中,谷歌還宣布Android版本13中大約21%的新原生代碼(C/C++/Rust)是Rust。AOSP擁有約150萬行Rust代碼,涵蓋了新功能和組件。此外,Android的Rust代碼中已發(fā)現零內存安全漏洞。為了實現提高Android內部安全性、穩(wěn)定性和質量的目標,Android團隊還表示,Rust應該用在代碼庫中需要原生代碼的任何地方。

  • 微軟

Microsoft擁有世界上最大的用C/C++編寫的代碼集合之一,其所有核心產品(例如Windows、Office和Azure云)均使用該代碼。2019年,微軟開始探索內存安全的編程語言,并試用了Rust。隨后,Rust for Windows Library[30]在GitHub上開源,使Rust開發(fā)人員能夠順利使用Windows API。

2022年,微軟Azure CTO Mark Russinovich表示,新項目不應再使用C和C++。他建議,Rust應該用于需要非GC語言的項目,以提高安全性和可靠性。

2023年7月,微軟宣布在Windows 11 Insider Preview Build 25905版本中發(fā)布了Rust參與編寫的Windows內核模塊[31]。其中包含了一個 GDI 引擎的實現。

  • Meta(前身為Facebook)

雖然不是創(chuàng)始成員,但財大氣粗的Meta目前已經是唯一非創(chuàng)始成員的鉑金贊助商了。Meta歷史上以C++為主,但從2021年開始,Rust便開始大量使用Rust了,并成為Meta支持的服務器端語言列表中的最新成員。

Meta在2021和2022年先后發(fā)表過A brief history of Rust at Facebook[32]Programming languages endorsed for server-side use at Meta[33]詳細說明了Rust在Meta內部的應用,感興趣的讀者可以去看看。

  • Linux基金會

炒得沸沸揚揚的在Linux Kernel中支持Rust語言終于塵埃落定,Linux Kernel 6.1版本對Rust提供了支持[34]。Rust同時進入Windows、Linux內核,這讓Rust的江湖地位得到進一步提升。相信未來,Rust在兩大操作系統(tǒng)內核中的代碼比例會逐步提升的。

  • 其他一些公司對Rust的應用

2024年初,cloudflare公司開源了其內部替代nginx的Rust庫pingora[35],作為業(yè)界一家提供互聯(lián)網基礎設施和網絡服務的公司,其采用Rust的示范效應也是非常明顯的。

influxdb的母公司influxdata在2023年發(fā)布了influxdb 3.0版本,該版本采用Rust全面重寫。不光是influxdb,諸多新興時序數據庫都采用了Rust技術棧(+Arrow[36]+Parquet[37]+DataFusion),比如greptimedb、cnosdb、CeresDB等。

字節(jié)跳動內部服務大量使用Go,但這幾年也有一些Rust愛好者在字節(jié)內部布道Rust,并開源了諸如Rust RPC框架volo[38]、基于io-uring的Rust async runtime monoio[39]等。

埃隆馬斯克的xAI在2024年發(fā)布的grok-1大模型[40]中,Rust開發(fā)的Qdrant向量數據庫[41]也發(fā)揮了重要作用,也是Rust在AI領域應用邁出的重要一步。

1.1.2.3 應用領域

在Rust官網,我們能看到官方列出的Rust應用的四大領域:

圖片圖片

在這四個領域中,Rust都有非?;钴S的發(fā)展和應用,每個領域都有大量的優(yōu)秀開源項目,這里無法窮盡,大家可以參考與awesome-go[42]類似的awesome-rust項目[43]查看自己關于領域的開源項目。

1.1.2.4 工作機會與薪酬

devjobsscanner統(tǒng)計的2023年的各個編程語言的工作需求[44]來看,Rust目前依舊比較小眾!

圖片圖片

stackoverflow 2023薪酬統(tǒng)計[45]來看,Rust薪資位于中游:

圖片圖片

另外4 day week的工作數量和薪酬分析[46]也印證了上面兩點:Rust小眾(工作數量相對較少),薪酬位于中游:

圖片圖片

國內Rust的工作數量與國際相同,都處于較少的位置,但國內Rust薪酬數據可能并不低,因為這些Rust崗位基本都在一線大廠,或是拿了較多融資的初創(chuàng),待遇可能都比較不錯。

了解了Rust的誕生和演化歷史以及Rust的不錯的現狀后,我們再來看看Rust的設計哲學。

1.2 Rust的設計哲學

設計哲學之于編程語言,就好比一個人的價值觀之于這個人的行為。因為如果你不認同一個人的價值觀,那你其實很難與之持續(xù)交往下去,即所謂道不同不相為謀。類似的,如果你不認同一門編程語言的設計哲學,那么大概率你在后續(xù)的語言學習中,就會遇到上面提到的這些問題,而且可能會讓你失去繼續(xù)學習的精神動力。因此,在真正開始學習Rust語法和編碼之前,我們還需要先來了解一下Rust的設計哲學,等了解完這些之后,你就能更深刻地認識到自己學習Rust的原因了。

1.2.1 Rust核心價值觀

2019年6月,Rust核心組成員Stephen Klabnik在QCon London發(fā)表了一次名為How Rust Views Tradeoffs[47]的演講,在這次演講中,他闡述了他個人理解的Rust的核心價值觀,這些價值觀是Rust team在做設計取舍時拒絕妥協(xié)的點,它們包括內存安全、執(zhí)行速度和生產力:

圖片圖片

按照Stephen Klabnik的說法,這三個核心價值觀也是有序的,首先是內存安全,這是Rust最為在乎的立身之本,其次是高性能,最后是生產力。當它們之間出現沖突時,按最高價值觀決策!

這其實與Rust官方對Rust的介紹也是一樣的:

圖片圖片

官方的Reliable對應的就是內存安全(memory safety),而efficient則有兩層含義,一是運行時的高效,另外一個方面則是構建時的生產力也要保持高水準。

這三個價值觀是Rust語言的設計目標,也是Rust語言的特色和優(yōu)勢所在。在失去了Graydon Hoare這個語言之父后,這些價值觀也成為了Rust核心團隊在判定語言演進方向的根本依據。

  1. 內存安全

內存安全是Rust最重要的價值觀,它意味著Rust程序在運行時不會出現內存泄漏(不使用unsafe代碼的前提下)、緩沖區(qū)溢出、野指針等內存相關的錯誤。這些錯誤不僅會導致程序崩潰,還可能導致安全漏洞的產生。Rust通過所有權(ownership)、生命周期(lifetime)和借用(borrowing)等特性,在編譯時最大程度地檢查出這些錯誤,從而保證程序的內存安全。

Rust的內存安全機制不僅能夠提高程序的穩(wěn)定性和可靠性,還能夠降低開發(fā)和維護的難度。由于Rust能夠在編譯時就檢查出內存錯誤,開發(fā)者就不必再花費大量時間和精力去尋找和修復這些錯誤了。

  1. 高性能

高性能是Rust的僅次于內存安全的一個核心價值觀,Rust語言的設計目標之一就是要成為一種高性能的系統(tǒng)編程語言。Rust通過零成本抽象、移動語義、泛型編程等特性,使得程序能夠在運行時達到與C、C++等傳統(tǒng)系統(tǒng)編程語言相當的性能。

Rust的高性能機制不僅能夠提高程序的運行速度,還能夠降低硬件成本。由于Rust能夠更好地利用硬件資源,因此在相同的硬件條件和資源開銷下,Rust程序的性能通常比其他語言的程序更高。

  1. 生產力

生產力是Rust的第三個核心價值觀,Rust語言的設計目標之一就是要成為一種能夠提高開發(fā)者生產力的語言。Rust通過包管理器Cargo、智能編輯器支持、豐富的庫生態(tài)、詳實系統(tǒng)的文檔等特性,使得開發(fā)者能夠更輕松地編寫、調試和維護Rust程序。

1.2.2 Rust的次要價值觀

Stephen Klabnik還總結了三條Rust的次要價值觀(secondary values):

圖片圖片

我們看到:Rust的次要價值觀包括ergonomics、compile times和correctness,這三個價值觀也是Rust語言的設計目標之一,但和上面的第一級核心價值觀相比,它們是可以被妥協(xié)掉的。

Ergonomics是指Rust語言的易用性,它是Rust語言的一個重要設計目標。Rust希望通過簡單易用的語法和豐富的庫生態(tài),使得開發(fā)者能夠更輕松地編寫Rust程序。

Compile Times是指Rust編譯器的編譯時間。Rust編譯器很慢,這是一個問題,Rust team也正在努力優(yōu)化,但Rust team更關心二進制文件的最終執(zhí)行速度,而不是讓編譯器變得更快,這就是Compile Time作為次要價值觀的原因。

Correctness是指Rust語言的正確性,Rust真的很在乎你的程序是否正確,Rust希望通過強大的類型系統(tǒng)和靜態(tài)檢查,來盡可能地保證Rust程序的正確性。但Rust不愿意使用完全依賴類型以及證明助手來證明你的代碼是正確的。

1.2.3 與Go的價值觀的對比

我們來對比一下Go官方的對Go的介紹,看一下其隱含的Go價值觀(設計哲學):

圖片圖片

在官方對Go的介紹中有三個關鍵詞:Simple、Secure和Scalable。

Simple是Go語言的首要設計原則,Go語言的設計者希望Go語言能夠簡單易用,使得開發(fā)者能夠更快地學習和使用Go語言,以快速形成生產能力。Go語言的語法簡單易懂,并且去掉了許多其他編程語言中復雜的特性,如類型層次與繼承等,使得Go語言更加簡潔易學、易讀、易用和易維護。

至于Secure,Go語言的設計者希望Go語言能夠更加安全可靠,避免許多其他編程語言中常見的安全漏洞。Go語言通過垃圾回收機制來自動管理內存,避免了許多其他編程語言中常見的內存泄漏和緩沖區(qū)溢出等問題。同時,Go語言提供了輕量級的goroutine和通道機制,使得開發(fā)者能夠更加方便地實現并發(fā)編程,并且通過數據競爭檢測工具,避免了并發(fā)編程中常見的數據競爭問題。同時Go語言提供了簡單易用的顯式錯誤處理機制,讓開發(fā)者不遺漏任一處錯誤處理。

Scalable則體現在Go面向工程、原生內置并發(fā)以及崇尚組合的設計哲學上了。 Go語言的設計者希望Go語言能夠更好地支持可擴展性,使得Go程序能夠更好地適應不同的組織規(guī)模、不同的工作負載和硬件環(huán)境。Go語言通過簡單的語法、基于module的可重現的構建管理、極高的編譯速度、高質量的標準庫、實用的工具鏈、強大的內置并發(fā)機制以及面向接口編程等特性,使得Go程序更加可擴展,生產力更為高效。

總的來說,Rust更注重安全、底層控制和極致性能,而Go則更加關注簡單、安全、擴展性與工程效率。兩者在定位和設計哲學上存在區(qū)別,但也有一些共同特點,比如都擁有現代的工具鏈、活躍的社區(qū)等。

1.3 本章小結

在這篇博文中,我們了解了Rust語言的誕生歷程、現狀發(fā)展,以及它獨特的設計哲學。通過與Go語言進行對比,我們可以看出兩者在出身、目標和設計理念上的一些差異。

隨著軟件系統(tǒng)的復雜度不斷提高,對安全性、性能和并發(fā)的需求也越來越高。作為一門專注于底層系統(tǒng)編程、性能極致化的新語言,Rust正在吸引越來越多開發(fā)者的關注。相信通過后面對Rust的全方面的系統(tǒng)學習,我和大家都能夠更深入地理解和掌握Rust。

如果你認為Rust的價值觀與你的十分匹配,你也認同Rust未來的發(fā)展。那就期待下一篇吧,在下一篇中,我們將開始動手學習Rust了!

1.4 參考資料

  • [Rust維基百科](https://en.wikipedia.org/wiki/Rust_(programming_language "Rust維基百科")) - https://en.wikipedia.org/wiki/Rust_(programming_language)
  • How Rust went from a side project to the world’s most-loved programming language[48] - https://www.technologyreview.com/2023/02/14/1067869/rust-worlds-fastest-growing-programming-language/
  • 2022 Review | The adoption of Rust in Business[49] - https://rustmagazine.org/issue-1/2022-review-the-adoption-of-rust-in-business/
  • How Rust Views Tradeoffs[50] - https://www.infoq.com/presentations/rust-tradeoffs/
  • 非官方Rust吉祥物Ferris[51] - https://rustacean.net
責任編輯:武曉燕 來源: TonyBai
相關推薦

2024-06-27 11:08:45

2024-06-17 09:00:08

2024-06-07 08:59:35

2022-10-26 09:57:52

VectorRustC++

2023-05-29 16:25:59

Rust函數

2024-11-08 09:19:28

2022-12-30 11:05:40

Rust代碼

2021-02-16 11:04:26

RustGo華為

2023-05-14 18:56:50

Rust數據類型

2023-05-23 18:11:12

Rust數組元組

2021-03-19 08:58:19

Rust共享愿景文檔開發(fā)者

2024-01-18 15:24:06

Rust開發(fā)鴻蒙OH4.0

2024-04-26 00:00:00

Rust檢查器代碼

2021-03-18 09:01:53

軟件開發(fā)軟件選型

2023-04-11 07:34:40

分布式系統(tǒng)算法

2023-04-10 18:03:18

Rust編程語言

2025-02-27 00:00:15

2025-01-03 09:12:11

2018-01-16 10:13:35

Rust程序員編程

2021-03-23 14:50:16

編程語言Rust漏洞
點贊
收藏

51CTO技術棧公眾號