成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么使用Rust重寫并不能解決所有問題

開發 前端
Rust是一門具有突破性特性的非凡語言,它值得大肆宣傳,但它也需要大量的時間和精力來采用。用Rust重寫項目可能不是你想要的奇跡解決方案。

Rust 安全、快速,并承諾消除代碼庫中臭名昭著的內存錯誤。但這是否意味著你應該用Rust重寫所有的項目呢?不完全是。

在某些情況下,用Rust重寫可能很好,但它并不是解決所有軟件開發問題的通用方法。讓我們通過一些代碼片段、類比和一些笑料來深入了解其中的原因。

Rust的優勢:為什么要大肆宣傳?

1,內存安全:Rust的借用檢查器消除了內存相關的錯誤,如空指針解引用和數據競爭。

2,性能:Rust的運行速度幾乎和C或C++一樣快,但崩潰要少得多。如果你正在構建高性能系統,Rust是最好的選擇。

3,現代工具:與其他一些語言(例:JavaScript)相比,Rust的包管理器和構建工具:Cargo,使依賴管理變成一件輕松的事情。

Rust的信條是安全、快速和穩定。誰不想這樣呢?現在,讓我們來探討一下,為什么這并不意味著應該使用Rust來重寫所有當前的代碼庫。

重寫謬誤

Joel Spolsky的經典博客文章“你永遠不應該做的事情”警告不要丟棄現有已工作的代碼。為什么?因為重寫會引入bug,浪費多年的調試知識,并減緩進度。用Rust重寫會放大這些風險,因為Rust的學習曲線非常陡峭。

示例:重構與重寫

假設有這樣一個Python函數:

# Python: 計算階乘

def factorial(n):
    if n == 0:
        return 1
    return n * factorial(n - 1)

但是想要Rust的速度和安全性。代碼是這樣的:

// Rust: 計算階乘

fn factorial(n: u64) -> u64 {
    match n {
        0 => 1,
        _ => n * factorial(n - 1),
    }
}

很好,但是重寫值得嗎?對于像這樣的一小段代碼,可能不會。Python代碼運行良好,對于新開發人員來說更容易閱讀和維護。如果性能成為一個問題,可以使用PyO3等工具使用Rust庫優化這個特定的函數,而不是重寫所有內容。

學習曲線:不是每個人都是Rustacean

Rust的語法可能會讓習慣于更傳統語言的開發人員感到陌生。像借用、生命周期和所有權這樣的概念是強大的,但也令人生畏。如果你的團隊還不熟悉Rust,那就做好項目延遲和混亂的準備。

考慮一下這個簡單的任務:在Rust中修改一個向量

fn main() {
    let mut numbers = vec![1, 2, 3];

    for num in &mut numbers {
        *num += 1;
    }

    println!("{:?}", numbers);
}

看起來很好,但是如果你忘記使用&mut或者用*解除引用,借用檢查器會報錯。來自JavaScript或Python的開發人員可能會覺得他們被欺騙了。

下面是Python中的等效函數:

numbers = [1, 2, 3]

for i in range(len(numbers)):
    numbers[i] += 1

print(numbers)

簡單多了,對吧?Rust在前期更加努力地工作以保證安全性,這對于系統編程來說是非常棒的,但是對于較小的、不容易出錯的項目來說是多余的。

并非所有代碼都需要Rust的特性

因為“Rust很酷”而用Rust重寫你的個人待辦事項列表應用程序,就像用工業級鋼梁建造一個鳥舍,過度工程對任何人都沒有幫助。

假設你正在編寫一個腳本來重命名一些文件:

Python:

import os

def rename_files():
    for filename in os.listdir("."):
        if filename.endswith(".txt"):
            os.rename(filename, filename.replace(".txt", ".md"))

rename_files()

Rust:

use std::fs;
use std::io;

fn rename_files() -> io::Result<()> {
    for entry in fs::read_dir(".")? {
        let entry = entry?;
        let path = entry.path();

        ifletSome(extension) = path.extension() {
            if extension == "txt" {
                let new_name = path.with_extension("md");
                fs::rename(path, new_name)?;
            }
        }
    }
    Ok(())
}

fn main() {
    rename_files().unwrap();
}

Rust的解決方案更加健壯,但是如果你的腳本只運行一次,那么額外的復雜性值得嗎?對于快速的一次性任務,Python等高級腳本語言通常是更好的選擇。

開發人員的生產力:權衡

Rust編寫更多代碼來實現與其他語言相同的結果。對于安全關鍵型系統,這種權衡是值得的,但是在開發速度比運行時性能更重要的環境中,這種權衡會降低項目開發的速度。

如果正在構建MVP或原型,應該使用一種能夠快速迭代的語言。一旦驗證了你的想法并需要擴展,就可以考慮在Rust中重寫性能關鍵部分。

“完美工具”謬論

沒有語言是完美的,Rust也一樣。

Rust的優勢為:

  • 系統編程(例如,操作系統,游戲引擎)。
  • 性能關鍵型應用程序。
  • 在多線程程序中的安全性。

但不太理想的是:

  • 快速原型
  • 腳本和自動化
  • 經驗有限的Rust團隊

總結:使用Rust,但要明智地使用它

Rust是一門具有突破性特性的非凡語言,它值得大肆宣傳,但它也需要大量的時間和精力來采用。用Rust重寫項目可能不是你想要的奇跡解決方案。

相反,應該考慮使用Rust的地方:關鍵的性能瓶頸、內存安全的api,或者穩定性至關重要的長期項目。

因此,不要把Python、JavaScript或Go代碼庫扔進垃圾桶。Rust可能是你需要的英雄,但不是每一場戰斗都需要。

責任編輯:武曉燕 來源: coding到燈火闌珊
相關推薦

2014-03-05 09:47:26

帶寬應用性能

2009-01-28 09:13:00

服務器虛擬化刀片服務器

2018-11-06 12:53:24

網絡安全網絡安全投資

2020-03-23 07:15:35

物聯網IOT物聯網技術

2021-08-17 15:47:12

機器學習自然語言神經網絡

2021-05-13 16:57:14

機器人人工智能技術

2010-09-07 14:08:11

2024-12-27 15:28:01

CQRS架構方式

2015-08-21 09:18:17

大數據技術解決問題

2012-02-19 21:16:00

大數據IBM

2017-10-10 09:58:44

人工智能 應用 臨床

2009-10-19 14:16:48

惠普下一代數據中心設計

2023-08-14 07:39:40

2012-12-03 11:16:50

2019-01-21 09:27:03

2022-04-04 07:51:32

Web框架

2023-05-17 16:01:00

物聯網數據治理

2022-04-11 10:43:33

供應鏈機器學習企業

2023-06-02 14:57:00

數據治理物聯網

2021-08-02 15:23:16

Windows 10Windows微軟
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩一区av| 又黄又色 | 中文字幕一区二区三区精彩视频 | 日本一区二区电影 | 精品久| 九九九精品视频 | 亚洲一区二区在线播放 | 久久久精品久久久 | 免费观看www7722午夜电影 | 黄色三级在线播放 | 欧美夜夜 | 正在播放一区二区 | 亚洲精品久久久久久宅男 | 91免费看片神器 | 台湾佬久久 | 免费成人av网站 | 久久青青 | 九九精品视频在线 | 性欧美精品一区二区三区在线播放 | 黄色一级免费 | 在线精品观看 | 日本激情视频中文字幕 | 午夜精品久久久久久久久久久久 | 中文字幕在线观看一区二区 | 成人免费共享视频 | 狠狠干网 | 少妇午夜一级艳片欧美精品 | 九九视频网 | 自拍 亚洲 欧美 老师 丝袜 | 在线午夜| 欧美亚洲网站 | 国产精品高清在线 | 中国免费黄色片 | 国产精品视频在线观看 | 久久精品成人 | 亚洲国产精品va在线看黑人 | 中文字幕乱码亚洲精品一区 | 精品视频一区二区三区 | 人妖av| 亚洲一区二区网站 | 看片一区 |