色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

為什么Rust連續4年獲“最受喜愛編程語言”?

WpOh_rgznai100 ? 來源:YXQ ? 2019-05-29 10:28 ? 次閱讀

2015年5月15日,Rust編程語言核心團隊正式宣布發布Rust 1.0版本。

4年來,它優雅的解決高并發和高安全性系統問題的能力,受到了越來越多開發者的喜愛。并且連續4年,在Stack Overflow開發者「最受喜愛編程語言」評選中獲得第一名。

近來,越來越多的著名區塊鏈項目已經選擇使用Rust作為其開發語言,包括:Parity、Polkadot、Substrate、Grin、Ethereum經典、Holochain、Cardano-Rust、Exonum、Lighthouse、Nimiq、Nervos、Conflux-Rust、Codechain、Witnet等眾多知名度較高的項目。

本文試圖探討這一種趨勢出現背后的原因。并且系統的講解Rust語言對于區塊鏈開發的影響和其優勢。

Rust:一個安全和并發的軟件系統

Rust 是一門系統級編程語言,被設計為保證內存和線程安全,防止段錯誤產生。

作為系統級編程語言,它的基本理念是 “零開銷抽象”。理論上來說,它的速度與 C / C++ 同級。Rust 可以被歸為通用的、多范式、編譯型的編程語言,類似 C/C++。

與這兩門編程語言不同的是,Rust 是線程安全的!它的目標是,創建一個安全和并發的軟件系統。Rust強調安全性、并發和內存控制。盡管 Rust 借用了 C/C++ 的語法,卻杜絕了空指針和懸掛指針,而這二者是 C/C++ 中系統崩潰、內存泄露和不安全代碼的根源。

雖然 Rust 是一門系統級編程語言,但并不意味著它只能寫底層程序(操作系統、驅動、工具、數據庫、搜索引擎等),它的抽象層次之高完全給人驚艷的感覺,實踐證明它對問題建模的能力和方便性不比 C++/Java/Python/Ruby 差。

但 Haskell 這類超高抽象語言,也不是 Rust 的發展方向。Rust 力求在抽象與現實世界中找到一個平衡。

目前,Rust 已經在 StackOverflow 的年度語言評選中,連續 4 年榮獲“程序員最喜愛語言”第一名。

Rust語言的歷史

Rust 最早是 Mozilla 雇員 Graydon Hoare 的一個個人項目,從 2009 年開始,得到了 Mozilla 研究院的支助,2010 年項目對外公布。

2010 ~2011 年間實現的自舉。從此以后,Rust 經歷了巨大的設計變化和反復(歷程極其艱辛),終于在 2015 年 5 月 15日發布了 1.0 版。

在這個研發過程中,Rust 建立了一個強大活躍的社區,形成了一整套完善穩定的項目貢獻機制(這是真正的可怕之處)。Rust 現在由 Rust 項目開發者社區維護。

下圖描述了Rust的基因圖譜:

Rust仍是小眾語言

Rust從1.0算起,到目前(2019年5月)為止,已有長足的發展。但整體而言,比起,Python、C、C++ 等,Rust 的使用并不算特別廣泛(畢竟太年輕)。

調查顯示,Rust 使用率不高的很大一部分原因是選擇 Rust 的公司占少數。

不過,Rust 在工作中的占比卻越來越高。過去一年間,Rust 在商業應用上有著令人驚訝的成長。包括一些人們耳熟能詳的公司:

亞馬遜:用 Rust 構建工具;

Facebook:源代碼控制工具;

Google:作為 Fuchsia 項目的一部分;

微軟:在新的 Azure 物聯網框架中部分使用 Rust;

Twitter:用 Rust 作為構建團隊支持的一部分。

國內的百度、阿里,也已經在內部小范圍的使用上了Rust。相信,隨著更多公司對 Rust 的選擇,Rust 的成長速度將更加迅猛。

Gavin Wood把Rust帶進區塊鏈

第一個將Rust應用于著名區塊鏈項目的應該是大名鼎鼎的Gavin Wood。Gavin Wood 博士在 2015 年下半年離開了以太坊社區,創立了 Parity Technologies,推出以太坊(Ethereum)客戶端 Parity,成功占領以太坊社區的半壁江山。而這個Parity客戶端就是使用Rust寫的。

實際在 Parity 出現之前,MaidSafe項目就已經出現了。MaidSafe用 Rust 語言嘗試了很多東西。Rust語言本身強調的安全性以及MaidSafe這些前沿項目,可能給了 Gavin 充分的理由選擇 Rust 作為 parity 開發語言。

Rust本身的語言特性(安全、高性能、并發編程)與區塊鏈的特性(分布式、加密、安全敏感)天生有相當大的重合性。

不僅如此,Rust作為一個編程語言顯得不同,不是因為它的語法多么漂亮(實際有些人甚至覺得有點丑)或者社區多么受人歡迎,而是因為當用它寫代碼時獲得的那種信心。

看起來Rust會影響你寫代碼的的效率和表達力,但令人相當驚奇的是,結論完全相反:寫一個有效率的、符合習慣的Rust程序比寫一個有潛在危險的程序容易得多。

下面是Linux內核在2018年一月到四月期間發現的Bug:

而對于Rust而言,上圖右側占比 51% 的部分,從語言層面就可以避免。也就是說,對Rust來說,根本不存在上圖右邊這些問題。

目前有兩種觀點:“一個人只需要知道如何寫C” 和 “只需要把最底層的東西留給專業人士”,這兩種觀點都是不夠的。Linux內核是由強中強的程序員寫的,可能是工業界最前面的5%的程序員,但是,仍然,年復一年地搞出 CVE 來。

你有可能會覺得幾百萬行代碼中出現50個bug不算什么。但在一些關鍵領域,出bug就意味著系統性風險(如,心臟起博器中的bug會導致生命危險)。而且,這50個bug是我們已經找到的,誰知道我們還有多少個bug還沒找到?而用了Rust,我們可以事先知道答案。

厲害的是,Rust在實現內存安全和并發安全的同時,并沒有以損失性能為代價。更牛逼的是,它甚至是用同一套抽象解決了內存安全和數據競爭這兩個不同領域的問題。

Rust的零開銷抽象讓你在享受安全性的同時,又不損失性能。這正是傳統的程序員夢寐以求的。

以Parity為例,Parity使用Rust,正是因為用Rust寫復雜和高性能的代碼時,不用擔驚受怕。用Rust寫程序,遠離未定義行為、數據競爭和內存安全問題。更別說,Rust運行速度快,寫起來有趣,易讀,還幾乎沒有運行時。

內存安全問題如此困難,因為你無法容易地寫出測試來捕獲它們。如果你在beta階段之前沒有找出bug,那么這個bug就可能會在代碼中呆幾年,就像一個讀秒的定時炸彈。當然,也有Valgrind這類的工具,來輔助你捕獲這些bug。但是如果在執行時,沒有觸發內存問題,或這類工具生成的代碼在運行時,沒有執行,那么它們也捕獲不到。

所以,通過使用Rust,我們消除了一大類最復雜和最不可預測的錯誤。

Rust中內嵌了形式化證明理論,不過僅限于對內存安全和并發。Rust在內部用邏輯證明了你的程序是正確的。這也就是你為什么寫Rust代碼會寫得如此有信心的原因。你的每一次編譯,都有一組數學理論在為你提供證明服務。

在很長一段時間內,像Haskell這種函數式編程語言的一大殺手級特性就是可以比較容易地進行形式化證明,而這對于傳統的命令式編程語言是不可能的(因為有共享可變性,不安全的指針運算,和不可控的副作用)。

但Rust的出現,改變了這種情況,作為一個命令式語言,它卻走在被證明的路上。到目前為止,標準庫的一部分已經被證明是正確的。

那些用Rust開發的知名區塊鏈項目

parity

說起知名的用Rust寫的區塊鏈項目,Parity首當其沖。Parity是一個以太坊節點客戶端parity-ethereum。

Parity Technologies 是他們公司的名稱。現在 Parity 旗下已經包含了一套客戶端和各種庫,包括:

parity-ethereum;

parity-zcash;

parity-bitcoin;

shasper。

也就是說,Parity Technologies 給使用Rust開發區塊鏈提供了一套「全家桶」。

polkadot/substrate

Polkadot 是由Web3基金會發起的一項計劃,由 Parity Technologies 負責開發,旨在卻不限于使區塊鏈互聯。

Polkadot 使開發者和企業能夠利用其協議建立區塊鏈,即平行鏈(parachain)。只要這些平行鏈建立在Polkadot的基礎之上,它們將共享同樣的權威證明(PoA)共識。

由于該類型共識嵌于 Polkadot 中,平行鏈開發者可以專注于各自區塊鏈的特異性。所有平行鏈都和一種被稱為中繼鏈(relay chain)的通用區塊鏈無縫連接,后者扮演連接所有平行鏈的角色。

Polkadot 項目由Gavin Wood主導推進,其實跟上面的parity全家桶屬于同一家公司,但屬于不同的團隊在做。

如果你實時關注了 Polkadot 的進展狀況,你可能會經常看到“Substrate”這個詞。它是 Polkadot 項目的重要組成部分。Parity Substrate 是獨立于 Polkadot 的項目。Polkadot 基于 Substrate ,其它基于 Substrate 的項目也能在 Polkadot 網絡上運行(形成一個生態)。

那么什么是 Substrate 呢?你可以將其看作類似于 Express 或其他 Web 應用程序的框架,但它是用于構建分布式或去中心化的系統的框架,可以構建例如加密貨幣項目,或消息總線系統。

正如大多數 Web 應用程序不需要重新實現自己的 HTTP 協議一樣,對于每一個團隊創建新鏈時,也不需要從頭實現網絡和共識的代碼,這浪費精力。

更不用提為了實現業務邏輯,必須雇用密碼學家、安全研究員、網絡工程師、開發人員(以協調更新)等等了。如果你使用 Substrate 來構建一個新項目,只需要在代碼中實現少量的函數回調,就可以輕松快速創建一條鏈。

鏈接:

https://github.com/paritytech/polkadot

https://github.com/paritytech/substrate

grin

grin是當今區塊鏈界小網紅。少數旨在成為真正貨幣的項目之一。

Grin 致力于提供隱私、可擴展性的加密貨幣,計劃在 2019 年初發布。其幾個獨特的屬性:使用名為 MimbleWimble 隱私保護區塊鏈格式;只在區塊鏈中存儲少量數據,運行完整節點既便宜又容易。

Mimblewimble 由匿名人士開發,團隊分布在世界各地;沒有任何預挖的 PoW 機制,更平等和去中心化。

Grin 核心開發者、Grin Council 成員 D

grin的出現,預示著回歸比特幣的一股潮流的出現,也許,這才是這一類項目正確的方向。

參與gin的開發交流,相當令人愉悅。

Holochain

Holochain致力于解決Dapp落地的事情,也就是說,它在構建一個云托管網絡。

當人們都在研究如何把區塊鏈性能提高的時候,Holochain卻在做造汽車的事。有時候思維固化并非好事,換一種思維方式或許就可以找到解決問題的新路徑。正如Holochain官網上的文字一樣:Think outside the blocks。

Holochain這個項目很有意思,它不是狹義上的區塊鏈。人們研究區塊鏈本質上是在研究通過解決信任問題完成價值傳輸,從而完成生產關系改變。

為了達到最終目的,我們不一定要把眼光僅限于某種特定技術上。無論是區塊鏈、DAG、Holochain,只要能達到我們最終目的,那么都可以認為是好的技術。

區塊鏈中為了保證信息一致性,系統中每個節點都是一個單獨的賬本,這些賬本記錄同樣的信息。雖然,區塊鏈這種分布式賬本技術滿足了一致性,但卻造成了巨大的信息冗余。

Holochain認為共識是可以分化的,沒必要所有的事件都去共識。因此它創新的從另一個角度去解決共識問題。Holochain將一個賬本分割成若干份,交給每一個參與節點,并通過DHT技術和密碼學技術保證賬本之間的一致性。

簡單來說,我們可以把DHT的作用理解為拼圖上的圖畫,我們可以通過圖畫來判斷這個拼圖是否完整。

節點不再需要多賬本同步記錄,只需要記錄與自身相關的內容就可以達成全網共識,這就是Holochain的革新之處。

Nervos

首先,Nervos 要做什么?官網上說,Nervos 是要:為未來的加密經濟構建分層的基礎設施。分層的方式也是現在區塊鏈主流體系設計,Layer 1 發行原生資產,支持高安全性高去中心化,犧牲效率。

而 Layer 2 去做擴容的事情。那么 Nervos CKB 作為體系的Layer 1,主要有以下兩個目的:資產的儲存和協議的增強(安全性和去中心化)。

注意,這也是 Nervos CKB 經濟體系設計的原則,即資產儲存大于價值交換。

Nervos有幾個有趣的設計亮點:

解決通縮與通脹的問題;

解決手續費的問題Nervos CKB 的一個理念是,智能合約平臺的價值除了原生代幣外,還應包含平臺上發行的其他加密資產的價值;

解決資源的價格問題;

解決利率的發現與調整問題。

exonum

由 Bitbury 出品。是一套使用Rust開發的許可鏈開發框架。使用exonum,可以方便的搭建聯盟鏈。

結束語

作為一個剛剛4歲的語言,Rust語言正在IT工業各個領域快速發展,而由于區塊鏈本身的特質,區塊鏈領域是較早接納Rust的領域之一。

在區塊鏈領域,Rust正以勢如破竹之勢占領區塊鏈新興項目市場,很多著名的老項目也在考慮轉向使用Rust重寫。

與此同時,WebAssembly技術的飛速發展帶來的成果也及時地應用到了區塊鏈中。Rust對WebAssembly提供了一等支持。可能是所有語言中目前為止最好的。具體請參考:

https://rustforce.net/article?id=6807cc27-0e6c-4bc9-baa3-8b0c68ae9529

相信,隨著Rust語言的 async/await 特性在今年的穩定,使用Rust進行區塊鏈開發會變成更加輕松方便。選擇使用Rust作為第一開發語言的區塊鏈項目也會越來越多,我們會迎來一波的Rust語言學習高潮。

謹以本文作為Rust 4周年的生日禮物,祝Rust生日快樂!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編程語言
    +關注

    關注

    10

    文章

    1950

    瀏覽量

    34955
  • Rust
    +關注

    關注

    1

    文章

    230

    瀏覽量

    6650

原文標題:為什么Rust連續4年獲“最受喜愛編程語言”?

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Qorvo榮獲2024最受尊敬半導體上市公司獎

    Qorvo再次榮獲全球半導體聯盟(GSA)頒發的 “最受尊敬的半導體上市公司 ”獎。這標志著Qorvo在過去三中第二次此殊榮,此前Qorvo曾于2022
    的頭像 發表于 01-22 11:10 ?216次閱讀

    中國電信連續14評《機構投資者》“最受尊崇企業”

    》(Institutional Investor)"2024度亞洲最佳管理團隊排名(日本除外)"中,再次評為"最受尊崇企業",這已是公司連續第14
    的頭像 發表于 11-17 10:17 ?314次閱讀

    編程語言的誤區與常見問題

    誤區一:編程語言的選擇 常見問題: 初學者在選擇編程語言時,往往會被市場上的熱門語言所吸引,而忽視了自己的實際需求和興趣。 一些開發者認為某
    的頭像 發表于 11-15 09:35 ?371次閱讀

    NPU支持的編程語言有哪些

    NPU(Neural Processing Unit)是一種專門為深度學習和人工智能應用設計的處理器。NPU支持的編程語言通常與它所集成的平臺或框架緊密相關。以下是一些常見的編程語言
    的頭像 發表于 11-15 09:21 ?910次閱讀

    C語言中的socket編程基礎

    。 Socket編程的基本步驟 在C語言中,socket編程的基本步驟如下: 步驟1:創建socket 步驟2:綁定socket到一個地址和端口 步驟3:監聽連接請求 步驟4:接受連接
    的頭像 發表于 11-01 16:51 ?458次閱讀

    plc編程語言編程相關技巧有哪些

    PLC(可編程邏輯控制器)編程語言及相關編程技巧是工業自動化領域中不可或缺的知識。 一、PLC編程語言
    的頭像 發表于 10-21 16:56 ?434次閱讀

    如何用Rust編寫一個ChatGPT桌面應用(保姆級教程)

    用IDEA開發的java仔) 安裝 Rust 語言工具鏈:首先,請確保你已安裝了 Rust 編程語言工具鏈,包括
    的頭像 發表于 09-25 11:19 ?410次閱讀
    如何用<b class='flag-5'>Rust</b>編寫一個ChatGPT桌面應用(保姆級教程)

    labview是什么編程語言寫的

    的一種圖形化編程語言。它并不是用傳統的文本編程語言(如C++、Python等)編寫的,而是采用了一種獨特的圖形化編程
    的頭像 發表于 09-04 16:00 ?1117次閱讀

    未來嵌入式系統的黃金搭檔 MCX N947遇上Rust

    ? Rust 介紹 Rust 是一門注重安全的語言,相比于 C/C++/ASM 有著更高級的抽象能力、編譯器帶來的安全特性與廣泛友好的社區支持。 Linux 與 Windows 內核也都
    的頭像 發表于 07-25 09:14 ?1405次閱讀
    未來嵌入式系統的黃金搭檔 MCX N947遇上<b class='flag-5'>Rust</b>

    PLC的編程方式及編程語言

    在工業自動化領域,PLC(Programmable Logic Controller,可編程邏輯控制器)因其強大的控制功能和靈活的編程方式而得到了廣泛應用。PLC的編程方式和編程
    的頭像 發表于 06-27 14:08 ?921次閱讀

    PLC編程語言和C語言的區別

    在工業自動化和計算機編程領域中,PLC(可編程邏輯控制器)編程語言和C語言各自扮演著重要的角色。盡管兩者都是
    的頭像 發表于 06-14 17:11 ?3194次閱讀

    Linux 6.10集成RISC-V更新,支持Rust編程語言

    本次補丁升級中,Linux內核進一步擴展了對應于RISC-V架構的Rust編程語言支持。在此之前,Rust已可應用在x86_64、龍芯LoongArch以及ARM64等多種架構之上。
    的頭像 發表于 05-23 17:16 ?1016次閱讀

    在Aurix Tc375Lk上使用Rust編程語言可以嗎?

    您好,如果我想在 Aurix Tc375Lk 上使用 Rust 編程語言,可以嗎?如果是,鏈接 rust 編譯器 ADS 和 freetoolchain 的步驟是什么?你有在 ADS
    發表于 05-17 13:42

    [鴻蒙]OpenHarmony4.0的Rust開發

    背景 Rust 是一門靜態強類型語言,具有更安全的內存管理、更好的運行性能、原生支持多線程開發等優勢。Rust 官方也使用 Cargo 工具來專門為 Rust 代碼創建工程和構建編譯
    的頭像 發表于 02-26 17:28 ?953次閱讀
    [鴻蒙]OpenHarmony4.0的<b class='flag-5'>Rust</b>開發

    谷歌捐款100萬美元給Rust基金會,以增強C++與Rust的交互性

    如今,谷歌多項核心業務仍以 C++為主要編程語言,雖然無法直接使用Rust替代現有的C++程序,但谷歌依然選擇支持Rust基金會的“Interop Initiative”計劃,幫助那些
    的頭像 發表于 02-19 15:41 ?698次閱讀
    主站蜘蛛池模板: 99久久久精品免费观看国产 | 一本道亚洲区免费观看 | 久久麻豆亚洲AV成人无码国产 | 荡公乱妇HD中文字幕 | 无颜之月全集免费观看 | 亚洲综合小说久久另类区 | 朝鲜美女bbwbbw撒尿 | 在线观看国产高清免费不卡 | 奶头从情趣内衣下露了出来AV | 久久精品视在线观看85 | 色欲AV亚洲情无码AV蜜桃 | 天天狠狠弄夜夜狠狠躁·太爽了 | 国产又黄又粗又爽又色的视频软件 | 久久伊人草 | 日日噜噜噜夜夜爽爽狠狠 | 51久久成人国产精品麻豆 | 精品视频免费在线观看 | 国产成人亚洲精品午夜国产馆 | 国产内射AV徐夜夜 | 91久久偷偷看嫩草影院无费 | 国产亚洲精品久久播放 | 久久久久亚洲 | 飘雪在线观看免费高清完整版韩国 | 亚洲免费一 | 亚洲成a人不卡在线观看 | 国产精品久久久久影院色老大 | 孕妇泬出白浆18P | 国内免费视频成人精品 | 中国农村妇女真实BBWBBWBBW | 国产亚洲中文字幕视频 | 国厂精品114福利电影 | 日日摸天天添天天添无码蜜臀 | 女教师跟黑人男朋友激情过后 | 中文字幕在线免费视频 | 妖精视频一区二区免费 | 果冻传媒最新视频在线观看 | 国语对白老女人8av 国语对白刺激真实精品 | 亚洲H成年动漫在线观看不卡 | 无码免费视频AAAAAA片草莓 | 99久久精品国产自免费 | 日韩美女爱爱 |