主頁 > 軟體設計 > Rust 生命周期太難學、最想實作與 C++ 互操作,Rust 2020 調查報告發布!

Rust 生命周期太難學、最想實作與 C++ 互操作,Rust 2020 調查報告發布!

2020-12-19 10:26:03 軟體設計

在這里插入圖片描述

編譯 | 蘇宓
頭圖 | CSDN 下載自東方 IC
出品 | CSDN(ID:CSDNnews)

眾多語言中,Rust 作為一款小眾的現代系統編程語言,近幾年間,接連受到了各大企業的青睞,

正如不久前,AWS 開源團隊宣布聘用 Rust 編譯器聯合創始人 Felix Klock,未來致力于進一步改進 Rust,對于 AWS 本身而言,也是 Rust 的忠實用戶,其基于 Rust 研發并支持了多款內部產品,如虛擬化技術產品 Firecracker,以及 Amazon Simple Storage Service(Amazon S3)、Amazon Elastic Compute Cloud(Amazon EC2)、Amazon CloudFront和Amazon Route 53 等服務,

此外,另一大科技巨頭微軟宣布未來將使用 Rust 作為 C/C++ 等編程語言的替代方案,尤其在構建基礎設施軟體程序中,對此,微軟認為 C/C++ 無法勝任撰寫關鍵任務的軟體,業界非常需要高性能、記憶體安全的編程語言來開發底層系統,而當今市場上最好的選擇就是 Rust,

同時,今年 3 月,蘋果也表示對將 C 代碼移植到 Rust 感興趣,希望投身到使用 Rust 撰寫代碼的潮流中,此前通過蘋果的一則招聘公告可以看出,其想要在基于 Linux 的服務器端平臺上將 C 過渡到 Rust,

對此,我們不禁好奇,近 600 種編程語言中,為何 Rust 能夠脫穎而出?它究竟有著怎樣的魔力?日前,Rust 官方在調研了全球 8323 位開發者后,最新發布了 2020 年 Rust 調查報告,我們不妨回顧過往這一年 Rust 的發展來一探究竟,

開發者對 Rust 的信任度較高

通過報告,我們發現 Rust 開發者的用戶黏度較高,有 83% 的受訪者表示他們一直在使用該語言,僅有 7% 的開發者稱曾經使用過 Rust,現在因為一些因素不再使用它,

至于放棄 Rust 的原因主要是,一方面,有 35% 的受訪者稱在一定的時間內還沒有學會 Rust 語言;另一方面,34% 的受訪者表示公司的業務用不到 Rust,所以也沒有太多理由繼續使用 Rust;除此之外,還有 19% 的開發者表示,和當前正在使用的其他編程語言相比,Rust 會讓其程式變慢,

Rust 穩定性增強

眾所周知,當提及 Rust 語言時,安全、性能、并發等特性是其優勢,因此,Rust 的穩定性也經過了多輪的驗證,不過具有較高穩定性的 Rust 并不意味著在任何場景下都能保證代碼運行不會出現問題,尤其是在新版本的編譯器下,對此,過去一年中,Rust 的迭代主要聚焦于清理代碼庫和提升穩定性,不過這項作業還尚未全部完成,但不少受訪者表示,相比過往,Rust 的性能的確有很大的提升,這也是穩定版占主流版本的原因,

在這里插入圖片描述

其次,開發者最喜歡 Rust 的 Nightly 版本,不過相較去年,這一版本的使用人數從 30.5% 下降到了 28%,只有 8.7% 的受訪者表示他們一直在使用,當問及為什么使用時,開發者表示最主要的原因是因為該版本使用了 Rocket Web 框架,此前,官方也僅宣布該框架將在 Rust 下一穩定版本中使用,其次,使用 Nightly 版本的原因還包含了 const 泛型功能,不過,隨著 const 泛型功能即將實作穩定版,預估計開發者會減少對此功能的依賴,

值得注意的是,Rust 官方指出,使用 Nightly 版本的用戶大多處于習慣,因為“Nightly 版本足夠穩定”,

誰在使用 Rust?

除了文章伊始所提及的大廠企業之外,對于開發者而言,他們主要將 Rust 應用于哪些場景?根據調查報告顯示,Rust 作為一種用于生產的語言而廣受歡迎,其中,有 40% 的軟體開發者表示,他們在日常作業中經常使用 Rust,同時,也有近一半的受訪者表示,自己所在的企業正在計劃在新的一年中招聘 Rust 相關的開發者,這也意味著,Rust 人才的需求量將進一步擴大,

在這里插入圖片描述

隨著 Rust 的發展,它被用于越來越大的專案之中,有 44% 的受訪者表示,他們產出的 Rust 代碼在 1 萬行及以上,而在去年這一比例僅有 34%,

在這里插入圖片描述

開發者:Rust 太難學了!

雖然和一些老牌語言 C/C++ 相比,Rust 正在迅速捕獲開發者的關注,但是據官方調查報告顯示,Rust 仍有許多亟需完善之處,譬如以下幾點:

與 C++ 的互操作需要進一步提升

有些出乎意料的是,Rust 與 C ++ 的互操作是開發者最為期待的,其次分別是 C、Python,實際上,對于使用大型代碼庫(100,000 行代碼或更多)的開發者而言,實作與 C ++ 的互操作是改善 Rust 編程體驗以及縮短編譯時間最為直觀的方法,
在這里插入圖片描述

Rust 太難上手,尤其是生命周期

當被問及如何提高 Rust 的采用率時,不少開發者提到降低 Rust 的門檻,讓 Rust 更容易被學習,其中,15.8% 的受訪者直言,如果“不那么令人恐懼,或更容易學習以及不太復雜”,他們會想要更多地使用 Rust,至于怎么降低 Rust 入門門檻,開發者的建議是增加官方檔案和培訓,

當我們要求受訪者對Rust的專業知識進行評分時,在10人中有7人是一個明顯的高峰,很難說這是跨語言比較的,但是似乎很少有人愿意聲稱擁有全部專業知識,但是,與去年相比,Rust社區似乎確實在獲得該語言的專業知識,

在這里插入圖片描述

當問及具體是哪部分很難時,61.4% 開發者大呼 Rust 的生命周期難度最高,因為 Rust 的生命周期是一個非常難以理解的概念,同時這也是 Rust 獨有的概念,

在這里插入圖片描述

不過,根據調查報告,擁有系統編程知識(至少具備一定的 C/C++ 經驗)的開發者在使用 Rust 會更得心應手一些,對此,Rust 官方在進行調研時,也讓受訪者進行了自評,結果顯示,如果具有系統編程經驗的開發者在自己的 Rust 專業知識中自評為 5.5 分(滿分10);諸如學過 Java 或 C# 等語言的開發者自評為 4.9 分;如果僅具有動態型別語言(如 Ruby、JavaScript)經驗的開發者,自評為 4.8 分,這其中存在一定的差異,

編譯時間需要縮短

Rust 社區及其開發團隊一直在致力于縮短 Rust 的編譯時間,好在效果有些明顯,有 50.5% 的受訪者表示,感受到了編譯時間已經縮短,對于擁有大型代碼庫(10,000 行代碼及以上)的受訪者而言,這種改進尤為明顯,其中 62.6% 的受訪者表示改進,不過,還有 2.9% 的受訪者表示情況變得更糟,對此,Rust 官方在報告里面表示,縮短編譯時間也將是 2021 年 Rust 功能繼續完善的方向,

庫的支持

根據調查發現,開發者對 Rust 生態系統中庫支持的增長感到滿意,其中 65.9% 的受訪者表示,他們至少看到了一些改進,只有 4.9% 的受訪者說他們沒有看到任何改進,

當被問及最缺少哪種型別的庫支持時,GUI 編程是一個壓倒性的答案,

Rust 的未來

總體而言,過去一年間,正如微軟、蘋果等公司都在深度擁抱 Rust,同時,Rust 在開發者圈中也越來越受歡迎,Rust 官方也帶來了一些令人興奮的特性,如 const 泛型、2021 版泛型關聯型別(GATs),改進了異步功能、Bevy 游戲引擎等,不過,Rust 的學習門檻讓不少開發者望而卻步,在此,歡迎大家關注 CSDN 的「 Rust語言中文社區」:https://blog.csdn.net/u012067469 ,與我們共同成長,

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/237118.html

標籤:其他

上一篇:基于 flink 的電商用戶行為資料分析【9】| 電商常見指標匯總 + 專案總結

下一篇:Educational Codeforces Round 100 A—D題題解

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more