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