国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区

當前位置:首頁 > 科技  > 軟件

Rust“巨坑”?真相來了!

來源: 責編: 時間:2023-08-09 23:02:37 437觀看
導讀作者 | Kevin Scott策劃 | 言征Rust是一門極具爭議性的語言。有許多創業公司的開發者甚至創始人都點名表示:Rust是巨坑!簡直浪費時間。再比如,其他語言中的“粗糙編碼”的編程方式在Rust中也很難實現;庫和文檔也不夠成熟,

作者 | Kevin ScottzHi28資訊網——每日最新資訊28at.com

策劃 | 言征zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

Rust是一門極具爭議性的語言。有許多創業公司的開發者甚至創始人都點名表示:Rust是巨坑!簡直浪費時間。再比如,其他語言中的“粗糙編碼”的編程方式在Rust中也很難實現;庫和文檔也不夠成熟,學習起來相當費勁,諸如此類。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

但總的來說,在強調“安全性比開發生產力更重要”的今天,Rust從來沒有失去成為一種未來語言的資格。雖然正視缺點很重要,但有些草率的批評也許未必是真相,或者說是不準確的。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

本文為大家呈現一篇“不偏不倚”的Rust的真實特性。zHi28資訊網——每日最新資訊28at.com

1、并非所有開發都是系統編程

zHi28資訊網——每日最新資訊28at.com

Rust 是一種系統編程語言。它提供對數據布局和代碼運行時行為的精確控制,為提供最大的性能和靈活性。與其他系統編程語言不同,它還提供內存安全性——有缺陷的程序以明確定義的方式終止,而不是表現出(潛在的安全威脅)未定義的行為。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

然而,在大多數情況下,人們不需要終極性能或對硬件資源的極端控制。在這種情況下,像 Kotlin 或 Go 這樣的現代可管理語言,提供的速度也不錯,性能也令人滿意,并且由于具有垃圾收集器的動態內存管理而保證了內存安全。zHi28資訊網——每日最新資訊28at.com

2、語言復雜性

zHi28資訊網——每日最新資訊28at.com

程序員的時間是寶貴的,如果選擇了 Rust,預計會花一些時間學習各種使用技術。Rust 社區投入了大量時間來創建各種高質量的教程,但 Rust 語言非常龐大。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

即使 Rust 可以為你提供價值,你可能也沒有太多精力投入到提高你的語言專業知識上。要知道,Rust 增強控制力是有代價的:選擇變得有講究了。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

struct  Foo      { bar: Bar }struct  Foo < 'a > { bar: & 'a Bar }struct  Foo < 'a > { bar: & 'a  mut Bar }struct  Foo      { bar: Box <Bar> }struct  Foo      { bar : Rc<Bar> }struct  Foo      { bar: Arc<Bar> }

zHi28資訊網——每日最新資訊28at.com

在 Kotlin 中,開始類 Foo(val bar: Bar) 并繼續解決業務問題。在 Rust 中,需要做出一些選擇,其中一些選擇非常重要,需要專門的語法。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

所有這些復雜性的存在都是有原因的——我們不知道如何創建更簡單的內存安全的低級語言,盡管并不是每個任務都需要用低級語言來解決。zHi28資訊網——每日最新資訊28at.com

3、編譯時間

zHi28資訊網——每日最新資訊28at.com

漫長的編譯時間往往會壓垮每一位程序員。用運行速度較慢但編譯速度較快的編程語言編寫的代碼,通常更有機會運行得更快,因為程序員有更多時間來優化代碼。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

Rust 在通用性難題中故意選擇了緩慢的編譯器。這不一定是世界末日(因為由此產生的運行時性能增益是真實的),但這確實意味著在較大的項目中,開發者將不得不努力爭取合理的構建時間。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

rustc 實現了生產編譯器中可能最先進的增量編譯算法,但這感覺有點像與語言編譯模型作斗爭。詳情可以移步這篇官網:zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

https://rustc-dev-guide.rust-lang.org/queries/incremental-compilation .htmlzHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

與 C++ 不同,Rust 構建并沒有笨拙地并行化,并行度受到依賴圖中關鍵路徑長度的限制。如果有 40 個以上的內核進行編譯,則會顯示此信息。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

Rust 還缺乏類似 pimpl 的功能,這意味著更改 crate 需要重新編譯(不僅僅是重新鏈接)其所有反向依賴項。zHi28資訊網——每日最新資訊28at.com

4、相對年輕的語言

zHi28資訊網——每日最新資訊28at.com

Rust 只有 8 年的歷史,相較而言,Rust還算一門年輕的語言。創建這個新語言的目的是為了解決一個頑疾:軟件的演進速度大大低于硬件的演進,軟件在語言級別上無法真正利用多核計算帶來的性能提升。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

根據林迪效應,相信“C++ 將在未來十年內存在”的人要遠多于對“Rust 將在十年內存在”的人。同樣地,如果你編寫的軟件可以使用數十年,在選擇新技術之前,往往會再三考慮與之相關的風險。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

但慎重考慮并不代表放棄新技術。一個過去的案例就是,在 90 年代為銀行軟件選擇 Java 而不是 Cobol 事實證明是正確的選擇)。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

Rust 目前只有一種完整的實現——rustc 編譯器。另一個最佳替代實現,mrustc,有意省略了許多靜態安全檢查。rustc 目前僅支持一種生產就緒后端 - LLVM。因此,它對 CPU 架構的支持范圍比 C 語言更窄,后者具有 GCC 實現以及許多特定于供應商的專有編譯器。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

最后,Rust 缺乏官方規范。參考文檔正在開發中,尚未記錄實現的所有細節。zHi28資訊網——每日最新資訊28at.com

5、可替代性

zHi28資訊網——每日最新資訊28at.com

在系統編程領域,除了 Rust 之外,還有其他一些語言,主要是 C、C++ 和 Ada。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

現代 C++ 提供了提高安全性的工具和指南,甚至有人為C++提出了類似 Rust 的生命周期機制。但與 Rust 不同,使用這些工具并不能保證沒有內存安全問題。但是,如果你已經維護了大量 C++ 代碼,那么檢查以下最佳實踐和使用清理程序是否有助于解決安全問題是有意義的。這很困難,但顯然比用另一種語言重寫它要容易。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

如果你使用C,你可以使用形式化方法來證明不存在未定義的行為,否則你只能詳盡地測試一切。如果不使用動態內存(切勿調用 free),Ada 是內存安全的。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

Rust 偏偏是成本/安全曲線上的一個有趣的權衡點,但肯定不是唯一的不可替代的點。zHi28資訊網——每日最新資訊28at.com

6、工具

zHi28資訊網——每日最新資訊28at.com

Rust 工具是值得點贊叫好的?;€工具、編譯器和構建系統(cargo)通常被認為是一流的。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

但是,例如,一些與運行時相關的工具(尤其是堆分析)目前還不存在——如果沒有運行時工具,就很難分析程序的運行時。此外,雖然 IDE 支持不錯,但它還遠未達到 Java 級別的可靠性。如今,在 Rust 中不可能自動復雜地重構數百萬行程序。zHi28資訊網——每日最新資訊28at.com

7、性能

zHi28資訊網——每日最新資訊28at.com

“使用 LLVM”并不是解決所有性能問題的通用方法。雖然我不知道 C++ 和 Rust 的大規模性能基準,但不難列出一些 Rust 不如 C++ 的性能問題。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

最大的一個可能,是 Rust 的移動語義是基于值的(機器代碼級別的 memcpy)。相比之下,C++ 語義使用特殊引用(機器代碼級別的指針),可以在其中處理數據。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

理論上,編譯器應該能夠看穿復制鏈,但實際上卻常常做不到。要知道, 一個相關的問題是不放置新的——Rust 有時需要從堆棧復制字節,而 C++ 可以就地構造東西對象。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

有趣的是,為了使其盡可能高效而不穩定,Rust 的默認 ABI有時比 C 更糟糕。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

圖片圖片zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

最后,雖然理論上 Rust 代碼應該由于更豐富的別名信息而更加高效,但啟用與別名相關的優化可能會導致 LLVM 錯誤和錯誤編譯。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

但是,重申一下,這些都是個例,有時的情況恰恰相反。例如,Rust 的 Box 中不存在 std::unique_ptr 的性能問題。一個潛在的更大問題是 Rust 的定義時檢查泛型不如 C++ 那樣富有表現力。因此,一些高性能的 C++ 模板技巧很難在 Rust 中用漂亮的語法來表達。zHi28資訊網——每日最新資訊28at.com

8、不安全(Unsafe)的定義

zHi28資訊網——每日最新資訊28at.com

也許跟“所有權”和“借用”相比,更核心的問題是不安全(Unsafe)的邊界。通過界定Unsafe塊和函數后面的所有不安全操作,并為它們提供安全的上層接口,可以創建一個兼具以下功能的函數:zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

一、可解釋(非不安全(non-unsafe)的代碼不會導致未定義的行為)。二、模塊化(可以單獨檢查不同的不安全塊)。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

顯然,這個承諾已經在實踐中得到了證實:有bug的 Rust 代碼不會造成緩沖區溢出。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

當然,問題沒那么簡單,也不那么樂觀。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

首先,Rust 的內存模型沒有定義,因此無法正式檢查給定的不安全塊是否有效。對于“rust-c 做什么或可能依賴什么”,有非正式的定義,運行時驗證器正在開發中,但實際模型正在不斷變化。因此,可能有一些unsafe的代碼,今天雖然在實踐中可用,但明天就可能會被聲明為無效,并且在明年就會被新的編譯器優化所破壞掉。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

其次,據業內開發者的觀察結果是,unsafe實際上并不是模塊化的。足夠強大的不安全塊實際上可以擴展語言。兩個這樣的擴展,單獨使用時可能沒問題,但如果一起使用,可能會導致未定義的行為、觀察到的等效性和不安全的代碼。zHi28資訊網——每日最新資訊28at.com

zHi28資訊網——每日最新資訊28at.com

原文鏈接:https://medium.com/@kevin_scott_/why-not-rust-1d257c6a07dazHi28資訊網——每日最新資訊28at.com

本文鏈接:http://m.rrqrq.com/showinfo-26-5141-0.htmlRust“巨坑”?真相來了!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 從 Java 11 遷移到 Java 17 值得嗎?

下一篇: 三言兩語說透設計模式的藝術-原型模式

標簽:
  • 熱門焦點
  • 5月安卓手機好評榜:魅族20 Pro奪冠

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年5月1日至5月31日,僅限國內市場。第一名:魅族20 Pro好評率:97.50%不得不感慨魅族老品牌還
  • 不容錯過的MSBuild技巧,必備用法詳解和實踐指南

    一、MSBuild簡介MSBuild是一種基于XML的構建引擎,用于在.NET Framework和.NET Core應用程序中自動化構建過程。它是Visual Studio的構建引擎,可在命令行或其他構建工具中使用
  • 三萬字盤點 Spring 九大核心基礎功能

    大家好,我是三友~~今天來跟大家聊一聊Spring的9大核心基礎功能。話不多說,先上目錄:圖片友情提示,本文過長,建議收藏,嘿嘿嘿!一、資源管理資源管理是Spring的一個核心的基礎功能,不
  • 花7萬退貨退款無門:誰在縱容淘寶珠寶商家造假?

    來源:極點商業作者:楊銘在淘寶購買珠寶玉石后,因為保證金不夠賠付,店鋪關閉,退貨退款難、維權無門的比比皆是。&ldquo;提供相關產品鑒定證書,支持全國復檢,可以30天無理由退換貨。&
  • 阿里大調整

    來源:產品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的&ldquo;征求意見版&rdquo;:1、取消P序列
  • 年輕人的“職場羞恥感”,無處不在

    作者:馮曉亭 陶 淘 李 欣 張 琳 馬舒葉來源:燃次元&ldquo;人在職場,應該選擇什么樣的著裝?&rdquo;近日,在網絡上,一個與著裝相關的帖子引發關注,在該帖子里,一位在高級寫字樓亞洲金
  • 微博大門常打開,迎接海外畫師漂洋東渡

    作者:互聯網那些事&ldquo;起猛了,我能看得懂日語了&rdquo;。&ldquo;為什么日本人說話我能聽懂?&rdquo;&ldquo;中文不像中文,日語不像日語,但是我竟然看懂了&rdquo;&hellip;&hell
  • 華為Mate60標準版細節曝光:經典星環相機模組回歸

    這段時間以來,關于華為新旗艦的爆料日漸密集。據此前多方爆料,今年華為將開始恢復一年雙旗艦戰略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • Android 14發布:首批適配機型公布

    5月11日消息,谷歌在今天凌晨舉行了I/O大會,本次發布會谷歌帶來了自家的AI語言模型PaLM 2、谷歌Pixel Fold折疊屏、谷歌Pixel 7a手機,同時發布了Androi
Top 国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区
精彩视频一区二区三区| 丁香网亚洲国际| 亚洲三级免费观看| 久久久国际精品| 91麻豆精品国产91久久久久久久久 | 亚洲免费av网站| 亚洲人成亚洲人成在线观看图片 | 亚洲精品日日夜夜| 中文字幕一区二区三中文字幕| 欧美大度的电影原声| 日韩午夜激情免费电影| 9191成人精品久久| 日韩三级中文字幕| 精品国产91洋老外米糕| 久久久蜜桃精品| 中文字幕免费观看一区| 国产精品久久久久久妇女6080| 久久影院视频免费| 久久久91精品国产一区二区精品 | 国产精品福利影院| 亚洲资源中文字幕| 日韩国产成人精品| 韩国中文字幕2020精品| 激情文学综合丁香| 成人精品高清在线| 欧美91福利在线观看| 99re这里只有精品6| 欧美日韩三级电影在线| 亚洲无吗在线| 尤物网精品视频| 色婷婷久久久亚洲一区二区三区| 欧美高清视频不卡网| 精品国产凹凸成av人网站| 国产精品视频一二三区 | 国产精品一区二区91| 91污片在线观看| 亚洲麻豆一区| 欧美视频一区在线| 久久久久久久国产精品影院| 国产精品国模大尺度视频| 亚洲国产一二三| 国产剧情一区在线| 红桃视频亚洲| 91福利在线观看| 亚洲精品一区二区三区蜜桃下载| 亚洲视频在线观看三级| 男女男精品视频网| 欧美粗暴jizz性欧美20| 免费亚洲一区| 欧美精品一区二| 亚洲高清视频中文字幕| 国产不卡高清在线观看视频| 亚洲国产精品www| 7777精品久久久大香线蕉| 国产精品久久久久婷婷二区次| 麻豆国产一区二区| 国产一区自拍视频| 欧美日韩在线直播| 国产精品亲子伦对白| 韩国三级在线一区| 亚洲欧洲精品一区| 日韩色在线观看| 午夜精品久久久| 欧美成人综合| 69久久夜色精品国产69蝌蚪网| 尤物在线观看一区| 成人动漫中文字幕| 欧美影视一区二区三区| 亚洲欧洲日本在线| 国产精品1024久久| 六月天综合网| 中文字幕一区av| 粉嫩aⅴ一区二区三区四区| 午夜在线精品偷拍| 精品国产乱码久久久久久牛牛| 亚洲蜜桃精久久久久久久| 成人精品小蝌蚪| 欧美日韩一区二区不卡| 亚洲一区二区三区精品在线| 色综合色综合色综合| 91精品国产综合久久香蕉的特点| 亚洲第一主播视频| 亚洲国产精品久久久久久女王| 精品国产精品一区二区夜夜嗨| 精品中文av资源站在线观看| 国产精品观看| www欧美成人18+| 国产精品456| 在线看日韩精品电影| 亚洲第四色夜色| 国产精品毛片| 亚洲精品写真福利| 欧美日一区二区在线观看 | 国产一区二区三区精品欧美日韩一区二区三区 | 一区二区三区精密机械公司| 欧美日韩国产在线一区| 久久综合色鬼综合色| 国产精品538一区二区在线| 欧美老肥妇做.爰bbww| 日韩国产欧美在线视频| 欧美主播一区二区三区美女 久久精品人| 国产精品你懂的| 午夜精品电影| 国产欧美一区二区三区鸳鸯浴| av在线播放成人| 欧美zozozo| 白白色 亚洲乱淫| 久久综合九色综合97_久久久| 国产成人亚洲综合a∨猫咪| 欧美一级日韩免费不卡| 国产精品一级二级三级| 日韩一级黄色大片| 成人性色生活片免费看爆迷你毛片| 欧美一级午夜免费电影| 国产不卡在线一区| 久久久久久免费毛片精品| 牛人盗摄一区二区三区视频| 国产亚洲精品aa午夜观看| 国产一区二区三区四区老人| 日韩毛片精品高清免费| 国产亚洲综合精品| 无吗不卡中文字幕| 日本电影欧美片| 国产精品中文字幕欧美| 欧美精品一区二区三区视频| 欧美日本在线| 亚洲综合精品久久| 在线免费观看日韩欧美| 粉嫩在线一区二区三区视频| 久久久久亚洲蜜桃| 在线免费日韩片| 日韩中文字幕不卡| 欧美日韩另类一区| 91视频一区二区三区| 亚洲精品午夜久久久| 欧美在线制服丝袜| 成人免费观看av| 国产精品全国免费观看高清| 亚洲欧美日本视频在线观看| 美女视频一区二区| 久久久噜噜噜久久人人看| 国产精品久久久免费| 国产一区二区精品久久99| 久久精品欧美日韩精品| 校园春色综合网| 国产成人在线看| ●精品国产综合乱码久久久久| 久久久久国产精品午夜一区| 成人综合在线观看| 亚洲男女毛片无遮挡| 欧美高清一级片在线| 永久久久久久| 国产成人在线视频网站| 综合久久久久综合| 欧美精品久久一区| 国语自产精品视频在线看抢先版结局 | av亚洲精华国产精华精| 亚洲一区二区三区四区五区中文 | 亚洲小说欧美激情另类| 日韩写真欧美这视频| 性欧美长视频| 成人中文字幕在线| 亚洲va天堂va国产va久| 久久女同精品一区二区| 久久亚洲国产精品一区二区| 91丨九色porny丨蝌蚪| 日本女优在线视频一区二区| 中文av一区二区| 在线观看亚洲a| 成人的网站免费观看| 午夜精品久久久久久久久久 | 亚洲精品一区二区三区在线观看| 噜噜噜久久亚洲精品国产品小说| av成人动漫在线观看| 青青草91视频| 亚洲丝袜自拍清纯另类| 久久色.com| 欧美精品第1页| 国产人成精品一区二区三| 99精品视频一区二区三区| 视频在线观看一区二区三区| 综合电影一区二区三区| 久久久久久久久久美女| 91精品国产综合久久精品app| 性一交一乱一区二区洋洋av| 欧美午夜一区| 91小视频在线| av在线播放一区二区三区| 国产福利一区二区三区| 韩国女主播成人在线观看| 亚洲国产精品麻豆| 亚洲美腿欧美偷拍| 国产精品乱码一区二区三区软件 | 欧美性视频一区二区三区| 香蕉亚洲视频| 亚洲一区二区四区| 亚洲激情另类| 影音先锋久久精品| 精品不卡在线| 亚洲免费播放|