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

Rust是未來(lái)的5個(gè)理由

開發(fā) 前端
如果您正在尋找某種金屬面板業(yè)務(wù),請(qǐng)讓我澄清一下:我所指的Rust是一種編程語(yǔ)言。

如果您正在尋找某種金屬面板業(yè)務(wù),請(qǐng)讓我澄清一下:我所指的Rust是一種編程語(yǔ)言。

還在那里?

當(dāng)我8歲開始學(xué)習(xí)編程語(yǔ)言時(shí),世界處于不同的狀態(tài),計(jì)算機(jī)更像是浪漫而神奇的盒子,而不是抖音如今使用的工具。

GW-Basic和C是我在可以直接訪問(wèn)內(nèi)存的時(shí)代從事計(jì)算機(jī)科學(xué)的第一門鏡頭,這是許多人的樂(lè)趣和他人的利益。 通過(guò)某些語(yǔ)言提供的合法構(gòu)造,對(duì)操作系統(tǒng)內(nèi)核進(jìn)行野蠻攻擊是如此容易。

Rust是未來(lái)的5個(gè)理由

> If this picture makes you nostalgic you are old enough to continue reading. If not, keep reading :

我在學(xué)術(shù)界的這些年一直以在后端系統(tǒng)中大量使用C(更少使用C ++)以及在計(jì)算機(jī)科學(xué)中實(shí)現(xiàn)常見且更奇特的算法為特征。 我博士的歲月大躍進(jìn) 其特點(diǎn)是大量使用C并指示編譯器減輕所有低級(jí)編程語(yǔ)言均會(huì)受到的討厭問(wèn)題,即直接訪問(wèn)內(nèi)存。 因此,諸如忘記忘記已經(jīng)釋放了內(nèi)存(雙重釋放),超出數(shù)組限制的讀取/寫入(緩沖區(qū)溢出),指向和訪問(wèn)無(wú)效內(nèi)存等問(wèn)題導(dǎo)致了我們所知的一些最嚴(yán)重的攻擊 迄今為止的計(jì)算機(jī)科學(xué)史。

那么這與Rust有什么關(guān)系呢?

事實(shí)上,Rust從字面上抹去了我大部分的博士學(xué)位。 一種新的編程范例。 而且我一點(diǎn)也不生氣。

在攻讀博士學(xué)位期間,我最雄心勃勃的目標(biāo)(不僅是我的目標(biāo)) 是要構(gòu)建一個(gè)編譯器來(lái)自動(dòng)修復(fù)內(nèi)存的雙重釋放問(wèn)題,緩沖區(qū)溢出和無(wú)效指針(有時(shí)甚至沒(méi)有通知開發(fā)人員最終要一遍又一遍地重復(fù)該討厭的錯(cuò)誤-這是什么意思?)。

Rust做到了這一點(diǎn):它通過(guò)引入一種新的方法將許多職責(zé)從開發(fā)人員轉(zhuǎn)移到了編譯器(對(duì)于Python程序員,編譯器就是您每次都寫得很好……Python便會(huì)放棄靈活性和性能。 編程范例。

在這樣的范例中,不可能有這些錯(cuò)誤。 編譯器只會(huì)拒絕繼續(xù)并生成有問(wèn)題的程序。 更加花哨的Rust編譯器的唯一副作用是,它肯定會(huì)使開發(fā)人員感到沮喪。 但是我沒(méi)有解決方案。 是時(shí)候再拿博士學(xué)位了?

Rust通過(guò)在編程語(yǔ)言設(shè)計(jì)中利用五個(gè)基本概念來(lái)提供如此出色的功能。 盡管有些緊密相關(guān),但讓我簡(jiǎn)要介紹一下它們。

借閱檢查器

Rust的借閱檢查器可確保引用(和指針!)不會(huì)超出它們指向的數(shù)據(jù)的壽命。 所有內(nèi)存不安全的錯(cuò)誤? 走了 "是的,但是伙計(jì)……我正在失去靈活性",您說(shuō)嗎? 不用擔(dān)心,您仍然可以使用不安全的Rust。 如果您覺得自己應(yīng)該承擔(dān)責(zé)任(并且您最好知道正在做的WTF),那就繼續(xù)吧,使代碼不安全并釋放一些超級(jí)功能。 好消息是,當(dāng)您遇到錯(cuò)誤時(shí)(伙計(jì)),您將確切知道在哪里查看。 還記得您寫過(guò)的并且感到如此自豪的不安全代碼嗎? 也許您想看看那里。

所有權(quán)

如果您不想整理房間,那么其他人(媽媽?)將不得不這樣做。 這將是有代價(jià)的(不要讓我去那里)。 為什么所有基于垃圾收集器的語(yǔ)言都比沒(méi)有垃圾收集器的語(yǔ)言慢,這是有原因的。 你猜怎么了? 所有權(quán)是一種編程范例,允許Rust以零成本跟蹤內(nèi)存(并在不再使用時(shí)釋放內(nèi)存)。 怎么樣? 通過(guò)改變程序員習(xí)慣于思考的方式(相信我,Rust迫使您思考的方式是正確的方式)。 瑣碎的

  1. let y = SomeType { field: String::from("hello") };  
  2. let x = y;  
  3. println!("{:?}", y); // This will fail. We no longer own y 

將y的所有權(quán)移到x。 這意味著在該語(yǔ)句之后不能使用y。 這個(gè)簡(jiǎn)單的概念使編譯器可以為您管理內(nèi)存并使房間保持無(wú)可挑剔的狀態(tài)。

并發(fā)

這是一個(gè)很大的。 特別是由于在多核上分布計(jì)算的總體趨勢(shì)。 Rust不僅使并發(fā)變得容易(還相對(duì)容易,有時(shí)語(yǔ)法是b!tch)。 所有權(quán)和鎖定機(jī)制的結(jié)合使Rust中的并發(fā)性變得無(wú)所畏懼。 通道強(qiáng)制執(zhí)行線程隔離,并且數(shù)據(jù)受鎖保護(hù),并且僅當(dāng)持有鎖時(shí)才能訪問(wèn)數(shù)據(jù)。 這樣可以防止意外共享狀態(tài)。 數(shù)據(jù)爭(zhēng)用是不可能的(編譯器只會(huì)拒絕生成可能導(dǎo)致數(shù)據(jù)爭(zhēng)用的代碼)。

可移植性

Rust編譯器基于LLVM構(gòu)建,而LLVM可以為大量目標(biāo)平臺(tái)生成機(jī)器代碼。 盡管此級(jí)別的可移植性還不如C / C ++大,但請(qǐng)記住Rust僅10歲(剛開始編程時(shí)比我大一點(diǎn),多么可愛?)

速度與安全

如果要編譯器生成安全代碼,請(qǐng)準(zhǔn)備放棄性能。 低級(jí)安全社區(qū)意識(shí)到有多少代碼檢測(cè)技術(shù)可以使您的軟件變慢(以至于許多人更愿意將不安全的代碼換成高性能代碼)。 使用Rust,您可以同時(shí)擁有兩者。 Rust是一種編譯語(yǔ)言。 與C / C ++和其他編譯語(yǔ)言所產(chǎn)生的機(jī)器代碼一樣,所產(chǎn)生的機(jī)器代碼也可以進(jìn)行優(yōu)化(并且隨著編譯器變得更加智能,其優(yōu)化程度也會(huì)更高)。

至于速度,可以在此處找到不錯(cuò)的Rust與C的比較,并在此處進(jìn)行更詳細(xì)的說(shuō)明。 只需考慮在慣用的Rust和慣用的C之間進(jìn)行比較。不用說(shuō),糟糕的代碼性能不可能好,與選擇的語(yǔ)言無(wú)關(guān)。

當(dāng)然,這篇文章并不能給Rust帶來(lái)公義,因?yàn)镽ust提供了更多令人驚奇的東西。 盡管這是一種絕對(duì)要用于系統(tǒng)編程的語(yǔ)言,但是社區(qū)正以驚人的速度增長(zhǎng),并在純Rust中封裝了包和庫(kù)的crates.io出現(xiàn)了。 我要說(shuō)的是有很多重復(fù),很多圖書館似乎都被放棄了。 我相信這是由于許多開發(fā)人員和工程師最初的熱情所致,他們一直在對(duì)Rust進(jìn)行測(cè)試。

盡管發(fā)表了一些出版物,尤其是有關(guān)緩解緩沖區(qū)溢出的低級(jí)對(duì)策的出版物,但我堅(jiān)信Rust是未來(lái)的語(yǔ)言。 我還為使用Rust進(jìn)行數(shù)據(jù)處理的項(xiàng)目做出了貢獻(xiàn)(人們?cè)趶?fù)制和粘貼Tensorflow模型之前必須做的事情,我期待著盡快發(fā)布它。

參考:https://medium.com/@frag/5-reasons-why-rust-is-the-future-3e23adf0803b

 

責(zé)任編輯:趙寧寧 來(lái)源: 今日頭條
相關(guān)推薦

2021-02-05 17:47:53

GraphQLAPI開發(fā)

2018-06-07 15:18:07

開源求職

2010-06-11 13:02:50

MySQL數(shù)據(jù)庫(kù)

2012-07-18 09:21:22

iPhone 5

2017-12-02 23:23:21

云計(jì)算企業(yè)云存儲(chǔ)

2022-10-26 13:28:55

綠色建筑

2020-06-16 08:51:28

數(shù)據(jù)中心人工智能技術(shù)

2015-09-16 17:17:58

2023-05-29 16:25:59

Rust函數(shù)

2019-07-08 13:25:16

5G智能手機(jī)用戶

2012-07-04 13:08:58

軟件開發(fā)軟件編程

2013-07-22 16:42:16

企業(yè)協(xié)作

2020-12-07 08:15:11

機(jī)器學(xué)習(xí)人工智能AI

2010-06-10 10:50:17

MySQL數(shù)據(jù)庫(kù)

2021-01-13 13:29:06

文本編輯器Atom開源

2019-03-01 08:22:26

數(shù)據(jù)泄露網(wǎng)絡(luò)保險(xiǎn)網(wǎng)絡(luò)安全

2021-05-21 10:28:37

Pulp容器注冊(cè)托管

2011-12-22 11:12:49

Ubuntu操作系統(tǒng)

2019-09-24 15:07:51

大數(shù)據(jù)存儲(chǔ)技術(shù)

2021-01-13 19:13:57

Atom文本編輯器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)