{eval=Array;=+count(Array);}

成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

問答專欄Q & A COLUMN

未來(lái)Rust編程語(yǔ)言會(huì)成為主流嗎?

DeanDean 回答5 收藏1
收藏問題

5條回答

Yuqi

Yuqi

回答于2022-06-22 18:58

《2021年將成為系統(tǒng)程序員的“RUST”年》——Rust提供了業(yè)界創(chuàng)建安全系統(tǒng)編程的最佳選擇

Rust是一種開源系統(tǒng)編程語(yǔ)言,專注于速度、內(nèi)存安全性和并行性。 Rust編程語(yǔ)言作為C、C++和其他語(yǔ)言的替代方案,以此來(lái)改善應(yīng)用程序的安全狀況 Rust旨在利用高級(jí)語(yǔ)言的能力來(lái)滿足低級(jí)系統(tǒng)編程的需求。

未來(lái)Rust編程語(yǔ)言是否會(huì)成為主流,這需要了解Rust的過去和以后動(dòng)向:

  • Rust的2021動(dòng)向
  • 對(duì)于已過去的2020年,關(guān)于Rust你需要知道些什么


最近幾年來(lái),Rust積攢了很多粉絲,這不是毫無(wú)原因的——

對(duì)于滿足系統(tǒng)編程需求,C++是個(gè)選擇,而Rust旨在成為其可靠的替代品。實(shí)際上,它解決了C++中許多固有限制,例如:內(nèi)存安全和線程安全問題,這些問題通常會(huì)導(dǎo)致令人厭煩的的分段錯(cuò)誤。 Rust旨在利用高級(jí)語(yǔ)言的能力來(lái)滿足低級(jí)系統(tǒng)編程的需求。

在許多情況下,內(nèi)存安全錯(cuò)誤已成為安全漏洞的根本原因。從一定的視角下,請(qǐng)考慮一下這個(gè)數(shù)字–“ Microsoft的所有CVE中,大約70%是內(nèi)存安全問題”。 C/C++程序員一直都在遇到與內(nèi)存相關(guān)的錯(cuò)誤——使用未初始化的內(nèi)存、基于“釋放”內(nèi)存后使用、緩沖區(qū)溢出。另一個(gè)棘手的錯(cuò)誤源是數(shù)據(jù)爭(zhēng)用(data races)和競(jìng)爭(zhēng)條件;基于進(jìn)行讀/寫的順序?qū)?shù)據(jù)的不可預(yù)見的使用。

Rust是一種開源系統(tǒng)編程語(yǔ)言,專注于速度,內(nèi)存安全性和并行性。三個(gè)詞定義了Rust:安全,并發(fā)和快速。其目的是防止首先引入內(nèi)存安全錯(cuò)誤。


一個(gè)簡(jiǎn)單示例的截圖,顯示Rust在編譯時(shí)如何捕獲內(nèi)存錯(cuò)誤;而實(shí)際場(chǎng)景更加復(fù)雜,這是內(nèi)置功能應(yīng)派上用場(chǎng)的地方。

Rust在編譯時(shí)如何捕獲內(nèi)存錯(cuò)誤,數(shù)據(jù)源Source: Talk by Steve Klabnik (@SteveKlabnik)

盡管現(xiàn)代變體引入了更多的保護(hù)措施,但C++并不是一種內(nèi)存安全的語(yǔ)言,鑒于使用C/C++構(gòu)建了許多核心平臺(tái)組件,這樣說(shuō)一點(diǎn)也不過分。



誰(shuí)在使用Rust?


目前在使用Rust這門語(yǔ)言的產(chǎn)品及大廠,數(shù)據(jù)來(lái)源:Source: Ryan Levick’s presentation


說(shuō)到利用Rust開發(fā)的應(yīng)用,目前進(jìn)行中的至少可以拿出兩個(gè):

  • 操作系統(tǒng)作為系統(tǒng)程序的示例
  • Firefox Servo作為高并發(fā)的示例

Amazon Firecracker,是一種支持AWS Lambda和AWS Fargate的開源虛擬化技術(shù),它是用Rust編寫的;目的是利用Rust的線程安全性并防止可能導(dǎo)致安全漏洞的緩沖區(qū)溢出錯(cuò)誤。

與此有關(guān)AWS服務(wù)包括Amazon Simple Storage Service(Amazon S3),Amazon Elastic Compute Cloud(Amazon EC2),Amazon CloudFront,Amazon Route 53。

操作系統(tǒng)

AWS推出了Bottlerocket,這是一個(gè)用Rust編寫的基于Linux的容器操作系統(tǒng),Bottlerocket僅包含運(yùn)行容器的基本軟件,從而可以提高資源利用率并減少攻擊面。

Google Fuchsia OS的TCP/IP堆棧是用Rust編寫的。Fuchsia具有模塊化的內(nèi)核體系結(jié)構(gòu),其中一些組件是用C ++編寫的,一些組件是用Go語(yǔ)言編寫的,其他組件則是用Rust語(yǔ)言編寫的。這說(shuō)明Rust具有與其他語(yǔ)言編寫的組件進(jìn)行交互以幫助實(shí)現(xiàn)模塊化內(nèi)核體系結(jié)構(gòu)的能力。

數(shù)據(jù)來(lái)源:https://blog.quarkslab.com/playing-around-with-the-fuchsia-operating-system.html


Firefox

在其新的CSS引擎(Quantum CSS)中,F(xiàn)irefox利用了Rust內(nèi)置的編譯時(shí)支持并行性。Web瀏覽器為背景的并行性,意味著你正在嘗試并行呈現(xiàn)網(wǎng)頁(yè)的所有不同部分;要知道并行性是很困難的,因?yàn)樗肓恕案?jìng)賽條件”(Race Conditions),這些條件難以識(shí)別且難以排除。

這就是Rust發(fā)揮其威力的地方,Rust編譯器靜態(tài)驗(yàn)證代碼以防止在編譯期間出現(xiàn)競(jìng)爭(zhēng)狀況。

來(lái)源:Source:https://hacks.mozilla.org/2017/08/inside-a-super-fast-css-engine-quantum-css-aka-stylo/


WebAssembly

WebAssemply通過將已編譯的代碼帶到瀏覽器來(lái)向Web應(yīng)用程序添加新功能;WebAssembly允許你采用以編譯語(yǔ)言編寫的功能,例如:C ++和Rust,并在Web瀏覽器中安全地運(yùn)行它。

Rust提供了業(yè)界創(chuàng)建安全系統(tǒng)編程語(yǔ)言的最佳機(jī)會(huì)。——微軟 Ryan Levick




最后,回顧下,2020年關(guān)于Rust發(fā)生了什么變化

Rust最初被認(rèn)為是Mozilla研究項(xiàng)目,直到最近才成為[開源Rust]項(xiàng)目的唯一官方贊助商。然而,在2020年8月,它解雇了250人,其中包括積極參與Rust項(xiàng)目和Rust社區(qū)的部分人。

(一些Rust維護(hù)者正在加入Amazon和Facebook,領(lǐng)導(dǎo)他們新創(chuàng)建的Rust團(tuán)隊(duì)。Niko Matsakis( @nikomatsakis)加入了亞馬遜,Patrick Walton(@pcwalton)加入了Facebook,成為Rust團(tuán)隊(duì)的技術(shù)負(fù)責(zé)人。此外,Rust基金會(huì)正在公司化成為一個(gè)獨(dú)立實(shí)體成立,但尚不清楚發(fā)起人是誰(shuí)。目前的贊助商名單包括Sentry、GitHub、Google Cloud、Amazon Web Services、Mozilla和Microsoft。GitHub和Azure托管repo存儲(chǔ)庫(kù)和CI基礎(chǔ)結(jié)構(gòu)。

與眾不同的Rust

  • 與Java不同,Rust的設(shè)計(jì)不需要垃圾收集器。不需要垃圾收集器意味著你不會(huì)受到運(yùn)行時(shí)性能的損失,尤其是在低功耗硬件上。
  • 編譯時(shí)驗(yàn)證以確保線程安全和內(nèi)存安全。 我認(rèn)為這是最重要的區(qū)別因素,因?yàn)槟悴辉僖蕾囘\(yùn)行時(shí)檢查。
  • 系統(tǒng)編程應(yīng)將異常處理移至編譯時(shí),并避免程序員犯錯(cuò)誤在先。不允許為Null,也不支持例外。
  • 即用的軟件包管理器可以與生態(tài)系統(tǒng)的其余部分集成(非常類似于Python),但是以前系統(tǒng)編程語(yǔ)言是沒有有此功能的。
  • 零成本抽象。什么意思呢?也就是說(shuō),由于抽象的系統(tǒng)開銷,高級(jí)語(yǔ)言的性能和安全性通常需要權(quán)衡。 這會(huì)聯(lián)想到引用計(jì)數(shù)的指針和運(yùn)行時(shí)檢查。

關(guān)于Rust的溫馨提示

盡管Rust語(yǔ)言有諸多好處,但誠(chéng)然其陡峭的學(xué)習(xí)曲線是不可避諱的。

此外,機(jī)構(gòu)組織恐怕不太會(huì)利用Rust重新編寫現(xiàn)有軟件系統(tǒng),而寧愿使用它來(lái)構(gòu)建和當(dāng)前生態(tài)系統(tǒng)作集成的新組件,因此,跨庫(kù)組件和工具鏈的互操作性成為重要的考量因素。

Rust社區(qū)

過去的五年中,Rust在StackOverflow上的開發(fā)者調(diào)查問卷中一直是最受歡迎的編程語(yǔ)言,位居榜首。

例如,在2020年調(diào)查中,有86.1%的開發(fā)者正在使用該語(yǔ)言或技術(shù)進(jìn)行開發(fā),并且表示有興趣繼續(xù)選用該語(yǔ)言。這幾乎是C ++收到的票數(shù)的兩倍!

另外也可以參考美國(guó)社群應(yīng)用Reddit上Sub-Reddit調(diào)查(r / adventofcode),其中Rust在Python之后排在第二位。

評(píng)論0 贊同0
  •  加載中...
littleGrow

littleGrow

回答于2022-06-22 18:58

很高興能回答這個(gè)問題

Rust語(yǔ)言最重要的特性是內(nèi)存安全,會(huì)檢測(cè)內(nèi)存是否安全。這個(gè)內(nèi)存安全問題,是自計(jì)算機(jī)誕生以來(lái)困擾廣大程序員的一個(gè)很大的問題,動(dòng)不動(dòng)就程序崩潰,系統(tǒng)跑著跑著出現(xiàn)內(nèi)存泄漏,這些問題自從Rust出現(xiàn),仿佛找到了解決良藥。目前很多大廠也在嘗試著用Rust做新項(xiàng)目,但是歷史的原因,其他語(yǔ)言積累非常深厚,歷史代碼庫(kù)非常龐大,就算是微軟這樣的巨頭,也是不可能馬上立即替換。再說(shuō)RUST這個(gè)語(yǔ)言學(xué)習(xí)坡度要比其他語(yǔ)言大很多,目前程序員群體使用的相對(duì)來(lái)說(shuō)還是很少,其他公司用的更是少之又少。

綜上所述,這個(gè)成為主流還是未知數(shù),我的判斷可能性比較低。

評(píng)論0 贊同0
  •  加載中...
Freelander

Freelander

回答于2022-06-22 18:58

編程語(yǔ)言未來(lái)的特點(diǎn)是可讀性好,簡(jiǎn)潔,編程效率高,模塊化編程語(yǔ)言,例如python。

rust語(yǔ)言,形如c++,可讀性差。

具有指針,編程不簡(jiǎn)潔。

內(nèi)存不能自動(dòng)回收,注定只能局部流行。

模塊化的傾向也不好。

所以rust發(fā)展的結(jié)果,可以參考c++,可能在局部流行起來(lái),比如系統(tǒng)工具類軟件的開發(fā)。

評(píng)論0 贊同0
  •  加載中...
warkiz

warkiz

回答于2022-06-22 18:58

在安全領(lǐng)域 例如底層中間件 數(shù)據(jù)庫(kù),我認(rèn)為rust優(yōu)勢(shì)很大

評(píng)論0 贊同0
  •  加載中...
stormzhang

stormzhang

回答于2022-06-22 18:58

我們居然也能看到有人問rust的問題,作為很早關(guān)注rust的人,來(lái)回答一下吧。


我們先回顧下現(xiàn)有的主流編程語(yǔ)言?,F(xiàn)在編程語(yǔ)言其實(shí)很多,但是可以看到大致趨勢(shì)是怎么樣的。最早都是靜態(tài)類型的編譯型語(yǔ)言,比如c,java,pascal之類,后來(lái)出現(xiàn)了動(dòng)態(tài)語(yǔ)言,比如php,python,js。動(dòng)態(tài)語(yǔ)言的出現(xiàn)是有積極意義的,

  1. 不需要考慮內(nèi)存分配,降低了內(nèi)存錯(cuò)誤的可能性

  2. 弱類型或者自動(dòng)轉(zhuǎn)換類型,不需要考慮類型,容錯(cuò)性更強(qiáng),降低了編寫代碼的難度

  3. 代碼一般是源碼形式,發(fā)布更容易

但隨著使用越來(lái)越多,壞處也越來(lái)越明顯。最重要的一個(gè)就是:無(wú)法保證類型,一方面無(wú)法約束使用者寫代碼,導(dǎo)致可能隱藏一些錯(cuò)誤的類型傳入,另外一方面也無(wú)法進(jìn)行有效的代碼提示。而且因?yàn)橥術(shù)c,性能不行,以及無(wú)法編寫準(zhǔn)實(shí)時(shí),實(shí)時(shí)系統(tǒng)。


所以,新推出的語(yǔ)言往往都融合了語(yǔ)言研究的新成果,試圖解決這些問題。

怎么樣才能融合靜態(tài)語(yǔ)言和動(dòng)態(tài)語(yǔ)言的好處,規(guī)避短處呢?函數(shù)式語(yǔ)言的研究里,經(jīng)常有類型推導(dǎo),抽象數(shù)據(jù)類型(ADT),都是好東西,正好能解決這些問題。尤其是編譯器構(gòu)建工具llvm出現(xiàn)之后,編譯器構(gòu)建越來(lái)越簡(jiǎn)單。現(xiàn)在很多新語(yǔ)言都建立在llvm之上,簡(jiǎn)化開發(fā),把重點(diǎn)放在語(yǔ)言語(yǔ)法的優(yōu)化上。rust也是使用了llvm,還有apple的新語(yǔ)言swift,也是建立在llvm之上。


rust支持ADT,支持類型推導(dǎo),可以和動(dòng)態(tài)語(yǔ)言一樣不用寫類型,讓編譯器自動(dòng)推導(dǎo)。同時(shí)靜態(tài)類型又可以在編譯期檢查出大量的類型錯(cuò)誤,沒有g(shù)c可以寫實(shí)時(shí)應(yīng)用。可以說(shuō)是融合了傳統(tǒng)靜態(tài)語(yǔ)言和動(dòng)態(tài)語(yǔ)言的優(yōu)點(diǎn)。


而且rust這個(gè)語(yǔ)言呢,主打的是內(nèi)存安全。內(nèi)存安全這塊,如果不是寫底層的人可能感觸還不深,但是如果經(jīng)常寫這類代碼的,估計(jì)能感覺撓到癢處了。傳統(tǒng)為了實(shí)現(xiàn)內(nèi)存安全,需要大量用鎖,但是rust在編譯期內(nèi),根據(jù)變量的生命周期,可以判斷是否內(nèi)存安全,使得程序在內(nèi)存安全的同時(shí)性能也更高。mozilla的新瀏覽器內(nèi)核servo即是用rust開發(fā)的,可以說(shuō)是一個(gè)非常大的項(xiàng)目了,驗(yàn)證了rust語(yǔ)言本身。實(shí)際servo現(xiàn)在的測(cè)試版本,頁(yè)面渲染出錯(cuò)比傳統(tǒng)瀏覽器更少,性能卻更強(qiáng)悍,并發(fā)式渲染頁(yè)面是以往語(yǔ)言難以實(shí)現(xiàn)的。


其實(shí)rust這樣的,靜態(tài)類型,類型推導(dǎo),ADT,無(wú)gc的新型語(yǔ)言,其實(shí)是非常強(qiáng)大的,可能更類似于傳統(tǒng)的函數(shù)式語(yǔ)言,所以一些傳統(tǒng)c系語(yǔ)言的開發(fā)者難以接受。但實(shí)際上,可以看到,apple的swift也是類似的。說(shuō)明這應(yīng)該是編程語(yǔ)言發(fā)展的大方向。

其實(shí)現(xiàn)在各種語(yǔ)言也在試圖改進(jìn)這些缺點(diǎn),比如python和php也增加了類型標(biāo)注,java也增加了一些類型推導(dǎo)的語(yǔ)法。但是這些老語(yǔ)言包袱太重,需要一個(gè)更為徹底的改進(jìn)。


結(jié)論:就算rust不能成為未來(lái)的主流,它也會(huì)有一席之地。同時(shí),因?yàn)檎Z(yǔ)言發(fā)展的大方向如此,之后主流也必然是rust這類型語(yǔ)言的天下。

評(píng)論0 贊同0
  •  加載中...

最新活動(dòng)

您已邀請(qǐng)0人回答 查看邀請(qǐng)

我的邀請(qǐng)列表

  • 擅長(zhǎng)該話題
  • 回答過該話題
  • 我關(guān)注的人
向幫助了您的網(wǎng)友說(shuō)句感謝的話吧!
付費(fèi)偷看金額在0.1-10元之間
<