取代 C 语言!众多 Python 开发者正加入 Rust 阵营

开发 前端
越来越多的库将采用 Python 作为前端、Rust 作为后端的开发模式。总的来说,当今的 Python 开发者在构建高性能库时,拥有了更好、更流畅的开发方式。

未来将会有越来越多的库采用 Python 作为前端(提高编程效率)和 Rust 作为后端(提升性能)的开发模式。

Rust 正在取代 C 语言成为高性能 Python 包的"后端"

首先,让我们思考这种转变的动机。Python 编写简单,但执行速度慢是其主要问题。特别是在编写数据处理库时,由于 Python 性能较低,很难用纯 Python 开发高性能库。然而,Python 是机器学习和数据工程的主要语言。因此,当开发面向数据工程师或机器学习工程师的库时,我们会遇到以下问题:

虽然我们需要用 Python 编写 API,但高性能的数据处理任务无法仅依靠 Python 完成。这意味着在编写库时,你有以下选择:

  • 要么自己学习并使用 C 语言
  • 要么依赖他人编写的 C 语言库来执行底层操作

熟悉 C 语言的开发者可能会问:"这有什么问题吗?许多库作者可以将数值计算任务交给 NumPy 或 SciPy 处理。"

但实际情况并非如此理想。虽然将某些任务外包给 NumPy、SciPy 等库很方便,但这要求所有函数都必须向量化,且不能使用 for 循环编写代码。此外,还需要考虑全局解释器锁(GIL)对某些操作的阻塞,以及其他各种问题。并非所有需求都能在现有库中找到解决方案。

为什么选择 Rust?

Rust 具有与 C 语言相当的速度和内存效率,但无需手动内存管理或垃圾回收。它拥有出色的工具支持、友好的编译器和不断发展的开发者社区。使用 Rust 不仅能提升程序性能,还能在学习过程中结识更多同道中人。

最重要的是,对 Python 开发者而言,Rust 比 C 语言更容易学习:

  • 改善了"入门级"体验,使初学者更容易编写"安全"的代码
  • 学习曲线更平缓,允许开发者随时间逐步掌握更高级的语言特性

实际应用案例

1. Lance:高性能、低成本的向量数据库

创始人 Chang She 和 Lei Xu 最初使用 C++ 编写代码库,但当他们不再需要处理 CMake 时,决定转向 Rust。Chang 表示:"从 C++ 转向 Rust 的决定源于我可以更高效地工作,在不损失性能的同时,也不必处理 CMake。我们用了大约 4 个月的时间用 Rust 重写了之前的 C++ 代码,每次用 Rust 编写和发布新功能时,我们都更加确信不会遇到段错误。"

2. Pydantic:面向开发者的 Python 验证库

Pydantic 团队用 Rust 重写了第二个版本,即使是简单模型也实现了 20 倍的性能提升。除了性能改进外,Rust 还带来了其他优势。Pydantic 创始人 Samuel Colvin 指出:"Rust 编写的代码通常更易于使用和维护。特别是 Rust 能捕获和处理所有可能的错误,而 Python(和 TypeScript)的类型系统往往会忽略这些错误。"

未来展望

展望未来,越来越多的库将采用 Python 作为前端、Rust 作为后端的开发模式。总的来说,当今的 Python 开发者在构建高性能库时,拥有了更好、更流畅的开发方式。

责任编辑:武晓燕 来源: Rust开发笔记
相关推荐

2012-01-04 09:18:32

iPhone开发者联盟iDP中国开发者

2020-10-19 12:21:38

GoPython开发者

2024-03-01 12:03:00

AI模型

2021-12-16 20:12:37

后端开发Sentry

2010-11-24 10:35:40

Objective-C

2014-04-15 11:27:50

C++开发者Objective-C核心语法

2021-02-24 07:42:34

PythonRust语言

2017-12-11 14:28:55

IntelWindows 10笔记本

2021-04-30 11:34:45

JavaScript开发者Rust

2012-07-05 11:05:38

诺基亚

2023-10-30 09:02:13

前端Rust

2023-05-25 09:44:37

谷歌开源

2011-11-10 10:28:09

AMDARM胜利工程

2021-05-10 14:50:03

.NETRust语言

2015-06-16 13:04:35

C#开发者JAVA 开发者

2022-10-21 18:41:23

RustC++Azure

2023-09-27 21:48:03

GitHub开发工具包

2014-07-08 10:30:59

开发者开发语言

2021-04-12 10:38:51

CC++谷歌
点赞
收藏

51CTO技术栈公众号