Rust是完美的編程語(yǔ)言嗎?
Rust在Stack Overflow 2021年開(kāi)發(fā)者調(diào)查中再次被評(píng)為 "最受喜愛(ài)的 "編程語(yǔ)言。完成了它在該特定排行榜上的第六個(gè)年頭。
然而,作為C++的替代品而開(kāi)發(fā)的編程語(yǔ)言在 "最常用的編程語(yǔ)言 "的總榜單上仍然只排在第16位,那么為什么Rust如此受到普遍的喜愛(ài),為什么這種喜愛(ài)沒(méi)有轉(zhuǎn)化為在主要榜單上更突出的位置?
加入我們吧,我們來(lái)看看Rust的歷史,它的演變,并回答人們經(jīng)常問(wèn)的(和夸張的)問(wèn)題 "Rust是完美的編程語(yǔ)言嗎?".
Rust的歷史
Rust是由Mozilla員工Graydon Hoare開(kāi)發(fā)的,他描述說(shuō)他自稱(chēng)是 "中年......白人,喜歡打瞌睡、讀歷史書(shū)、和朋友出去玩、反復(fù)看十幾部80年代的爛電影"。
到目前為止,還有什么不喜歡的呢?
Hoare于2006年開(kāi)始研究Rust,該項(xiàng)目從2009年起由Mozilla贊助,直到2014年1月首次穩(wěn)定發(fā)布(Rust 1.0),當(dāng)時(shí)的技術(shù)雜志 Dr Dobb’s對(duì)Rust的評(píng)價(jià)是:"人們普遍認(rèn)為它是一種非常優(yōu)雅的編程語(yǔ)言"。
其他人也同意......并且該語(yǔ)言繼續(xù)流行,直到去年(2021年),當(dāng) Rust Foundation基金會(huì)成立的目的是 "支持語(yǔ)言的維護(hù)和發(fā)展,同時(shí)培養(yǎng)Rust項(xiàng)目團(tuán)隊(duì)和用戶(hù)社區(qū)",鞏固其在 "優(yōu)雅語(yǔ)言 "萬(wàn)神殿的地位的是五個(gè)創(chuàng)始企業(yè)成員......Mozilla、微軟、谷歌、亞馬遜網(wǎng)絡(luò)服務(wù)和華為。
因此,Rust不僅是最受喜愛(ài)的(根據(jù)Stack Overflow的數(shù)據(jù)),它還在聚集世界上一些最大的技術(shù)公司的支持。但是,Rust有什么特別之處呢?
Rust有什么特別之處?
Rust最初是為了解決C/C++中普遍存在的問(wèn)題而開(kāi)發(fā)的。
它的創(chuàng)建(和發(fā)展)主要是為了解決性能和安全問(wèn)題。
它的語(yǔ)法與C++相似(在最基本的意義上--例如,它不使用空格縮進(jìn)),然而作為一種語(yǔ)言,它有很大的不同,因?yàn)樗静皇敲嫦驅(qū)ο蟮摹?/p>
它的主要好處被認(rèn)為是在解決圍繞內(nèi)存錯(cuò)誤的問(wèn)題(在安全和管理方面)和并發(fā)編程。
在Rust中,有兩種編寫(xiě)代碼的模式。安全Rust和不安全Rust。安全Rust對(duì)程序員施加了額外的限制,以確保代碼的正常運(yùn)行,而不安全Rust則給了程序員更多的自主權(quán)和靈活性。
在安全的Rust中,編譯器可以做更多的工作來(lái)確保你所寫(xiě)的代碼以它所期望的方式處理內(nèi)存。然而,如果你寫(xiě)的代碼需要與C或C++互操作,Rust提供了一個(gè)不安全的逃生艙口。
編寫(xiě)不安全的代碼意味著要由開(kāi)發(fā)者來(lái)驗(yàn)證它的正確性,因?yàn)榫幾g器不能獨(dú)立驗(yàn)證它。
Rust的雙模式模型是其相對(duì)于C++的最大優(yōu)勢(shì)之一,因?yàn)楫?dāng)用C++編程時(shí),你永遠(yuǎn)不知道你寫(xiě)了不安全的代碼,直到你的軟件崩潰或被發(fā)現(xiàn)有安全漏洞。
Rust區(qū)別于其他編程語(yǔ)言的關(guān)鍵因素之一是,它跟蹤所有的狀態(tài)所有權(quán),如果有不正確的地方,會(huì)在編譯時(shí)告訴你。當(dāng)你聽(tīng)到開(kāi)發(fā)者抱怨 "檢查器 "的時(shí)候,這可能就是他們所指的東西。
許多開(kāi)發(fā)者對(duì)Rust的評(píng)價(jià)是 "既快又靈活",但究竟是什么讓它如此?
- 它是靜態(tài)類(lèi)型的,并被編譯為
- 它提供特性的靜態(tài)調(diào)度
- 它提供了零成本的抽象性
- 它跟蹤變量的所有權(quán)
- 它提供代數(shù)數(shù)據(jù)類(lèi)型
- 它存儲(chǔ)的數(shù)據(jù)沒(méi)有任何開(kāi)銷(xiāo)
這一切聽(tīng)起來(lái)都很好,但采用是任何編程語(yǔ)言的障礙,所以誰(shuí)在使用這種快速和靈活的語(yǔ)言?
現(xiàn)在和將來(lái)誰(shuí)會(huì)使用Rust?
在近6萬(wàn)名專(zhuān)業(yè)開(kāi)發(fā)人員中,Stack Overflow的調(diào)查表明,只有6.4%的受訪(fǎng)者在積極使用該語(yǔ)言,17%使用C語(yǔ)言,20%使用C++語(yǔ)言。
那么,為什么Rust還沒(méi)有超越C++,將來(lái)會(huì)不會(huì)?
雖然專(zhuān)業(yè)的Rust開(kāi)發(fā)者經(jīng)常提到該語(yǔ)言 "比C++好",因?yàn)樗忻鞔_的語(yǔ)義和防止不需要的行為,但許多人也表示,如果他們正在尋找一種支持良好和框架豐富的語(yǔ)言,他們很可能仍然選擇C++。
因此,Rust作為C++王位的偽裝者是否真的會(huì)在某個(gè)時(shí)候推翻它,現(xiàn)在還沒(méi)有定論。
盡管如此,有一系列證據(jù)表明,自從Rust支持進(jìn)入Linux內(nèi)核以來(lái)(因此可以用Rust編寫(xiě)驅(qū)動(dòng)程序,以幫助捕捉全新的錯(cuò)誤類(lèi)別),許多大型科技企業(yè)正在使用這種編程語(yǔ)言。這里僅列舉一些積極招聘Rust開(kāi)發(fā)人員的企業(yè)。
- 微軟
- 滴答網(wǎng)
- 亞馬遜
雖然Rust仍被認(rèn)為是一種相對(duì)年輕的語(yǔ)言,但它也已成為新興加密貨幣類(lèi)項(xiàng)目、方案和企業(yè)的大熱門(mén),建立在第一層解決方案之上,
因此,盡管編程語(yǔ)言的發(fā)展仍處于起步階段,但Rust似乎已經(jīng)有了風(fēng)向標(biāo)的作用。
Rust是完美的編程語(yǔ)言嗎?
嗯。有很多人都這么認(rèn)為。
杰克-多爾西就是其中之一。
當(dāng)他被一個(gè)開(kāi)發(fā)者質(zhì)疑說(shuō):"完美的是什么?".他反駁說(shuō):"系統(tǒng)/實(shí)時(shí)",這句話(huà)簡(jiǎn)明扼要,一針見(jiàn)血......但對(duì)于這樣一個(gè)夸張的說(shuō)法,并不是一個(gè)特別詳細(xì)的回應(yīng)。
如果我們暫時(shí)回到Stack Overflow的調(diào)查,當(dāng)83,000名專(zhuān)業(yè)開(kāi)發(fā)者被問(wèn)及他們對(duì)哪種語(yǔ)言的開(kāi)發(fā)感興趣時(shí)......Rust排在第六位。因此,像上面那條來(lái)自一個(gè)在全球擁有610萬(wàn)粉絲的人的推特的曝光,很可能會(huì)引起對(duì)學(xué)習(xí)Rust感興趣的開(kāi)發(fā)人員的涌動(dòng)。
更多的開(kāi)發(fā)者意味著有更多的采用理由嗎?有可能。
當(dāng)然,沒(méi)有完美的編程語(yǔ)言,但通過(guò)評(píng)估Rust能夠提供的好處,該語(yǔ)言的普及和使用只會(huì)越來(lái)越多,這并不奇怪。
Rust已經(jīng)完成了它的目標(biāo),即解決了一些普遍存在的問(wèn)題,這些問(wèn)題在開(kāi)發(fā)者社區(qū)中引起了許多人的頭痛,同時(shí)確保其性能水平與其他更知名的編程語(yǔ)言一樣好(甚至更好!)。
因此,也許當(dāng)我們?cè)谑旰蠡仡欉@篇文章時(shí),我們會(huì)認(rèn)為我們是先知先覺(jué)的,那時(shí)Rust是地球上使用最廣泛的編程語(yǔ)言之一......
或者,也許編程會(huì)有一個(gè)類(lèi)似于數(shù)學(xué)從微積分中得到的范式轉(zhuǎn)變,即基礎(chǔ)模型(即SSI--序列、選擇和迭代)的根本變化,以支持不同的結(jié)構(gòu),進(jìn)而支持不同的抽象模型。
在那之前,所有新的編程語(yǔ)言都將是稍微 "優(yōu)雅 "的SSI形式,在句法上灑上大量的糖。