专栏名称: AI科技大本营
为AI领域从业者提供人工智能领域热点报道和海量重磅访谈;面向技术人员,提供AI技术领域前沿研究进展和技术成长路线;面向垂直企业,实现行业应用与技术创新的对接。全方位触及人工智能时代,连接AI技术的创造者和使用者。
目录
相关文章推荐
哎咆科技  ·  DeepSeek表明:未来10年可能是70- ... ·  11 小时前  
赛博禅心  ·  超级硬广:输入 ikun,解锁 ... ·  昨天  
赛博禅心  ·  超级硬广:输入 ikun,解锁 ... ·  昨天  
EETOP  ·  芯片巨头,人均年薪65万元! ·  昨天  
EETOP  ·  台媒:台积电是王昭君 ·  3 天前  
51好读  ›  专栏  ›  AI科技大本营

编程语言之争:Rust 社区活跃开发者 Ed Page 谈 Rust 与 C++ 的未来

AI科技大本营  · 公众号  ·  · 2024-09-06 21:04

主要观点总结

本文是对Ed Page的采访,他是一位从事编程多年的软件开发者,对C++、Rust和Python等编程语言有深入的了解和见解。采访中,他谈到了自己从C++转向Rust的原因,对三种编程语言的比较,以及作为Rust和Cargo工具维护者所面临的挑战和自豪的改进。他还谈到了Cargo的未来功能,Rust需要进行的改进,以及对使用AI生成代码的看法。

关键观点总结

关键观点1: Ed Page从事编程行业十几年,见证了不同编程语言的兴衰史。

他使用过C++、Rust和Python,但现在全身心投入Rust社区,致力于改善用户体验。

关键观点2: Ed Page比较了C++、Rust和Python三种编程语言,认为暂时还没有一种语言能够完美解决所有问题。

他强调了C++的功能强大,Rust的可持续构建,以及Python的整洁和方便。

关键观点3: 作为Rust和Cargo工具的维护者,Ed Page面临的挑战包括时间限制和确定优先解决的问题。

他特别提到了为Cargo添加“add”功能是一项重大改进。

关键观点4: Ed Page讨论了Cargo的未来功能,包括MSRV-aware解析器和Cargo Script等。

他还强调了Rust需要进行的重点改进,如处理旧依赖项、优化构建速度和供应链管理等。

关键观点5: Ed Page拒绝使用AI生成代码和类似的代码辅助工具,他认为应该关注真正重要的事情而不是过分追求细节优化。

他还为想在Rust中创建或维护开发工具的开发者以及新加入Rust生态的开发者提供了建议。


正文

作者 | Annie Xu
采访 | CSDN&Boolan 首席顾问 卢威
责编 | 何苗

出品丨GOSIM 开源创新汇

你最 pick 哪种编程语言?C++、Rust,还是 Python?

Ed Page 从事编程行业十几年,见证了不同编程语言的兴衰史。从 C++标准版本 C++98 的诞生,到 Jave、D、Go 等编程语言的崛起与发展,并跃跃欲试想挑战 C++ 的江湖地位。

诚然,新出现的编程语言分走了 C++的部分用户,但在 Ed 看来,它们都不具备 C++的核心优势。Rust 的出现,让 Ed 看到了它在部分场景下取代 C++的一丝曙光,于是他全身心投入 Rust 和 Cargo 的功能构建与社区维护。

点击小程序查看完整视频

曾是 C++、Rust 和 Python 的使用者,Ed 为什么唯独看好 Rust?
他也是 AI 时代的逆行者,拒绝使用 AI 生成代码,甚至不使用任何代码辅助工具。CSDN&Boolan 首席顾问卢威主持本期 GOSIM 独家对话栏目 Open AGI Forum,对话 Futurewei 软件开发者 Ed Page,分享他对 Rust 编程语言发展与 Cargo 社区运营与功能开发方面的 看法
  • 不同的编程语言有其优势,也有其缺点,现在暂时还没有一种语言完美到解决所有问题。

  • 不要花费太多时间去优化细节,而忽视了“这是否重要”。

  • 大胆地复制代码,通过大量学习填补知识空白,之后思考如何优化加速。

以下是本次采访的主要内容:


C++、Rust 还是 Python?

GOSIM: 大家好,欢迎来到 Open AGI Forum。我们非常荣幸地邀请到了 Ed Page,请向观众简要介绍一下自己。

Ed Page 我从事软件开发已经有几十年了。最初是一名 C++程序员,负责操作系统、驱动程序开发。随着职业发展,我逐渐转向开发者体验、工具构建等方面的工作。现在,我全身心投入 Rust 社区,致力于改善用户体验。同时我还服务于 Cargo 团队,更新生态系统中的软件包。

GOSIM: 为什么在做了多年的 C++程序员后,转向 Rust 呢?之前积累的经验对现在有什么影响?

Ed Page: 在 C++ 98 标准版本出现之前,我就已经在用 C++ 了。这几十年,我也见证了很多编程语言的兴亡史。期间出现了很多传言,如“Java 将会取代 C++”“D 语言将会取代 C++”“Go 语言将取代 C++”……

每一种新的编程语言的出现,都会带走一部分 C++的用户,但始终没有哪个编程语言能真正动摇 C++的核心优势。C++存在问题,圈内有一句话是“C++ is bad,but so is everything else”,大意是“C++有缺点,但没有更好的选择了”。

第一次接触到 Rust 时,我觉得它很有趣。Rust 语言解决了一些其他语言没能解决的关键问题,填补了操作系统和嵌入式空间中尚未得到充分服务的部分。所以, 我想尽我所能推动 Rust 成功,也许未来有一天它可以替代 C++ 成为这类应用场景的主要语言

GOSIM: 在接触 Rust 之前,你曾使用过 C++ 和 Python,请比较一下这三种编程语言。

Ed Page: 现在暂时还没有一种语言完美到解决所有问题。C++的功能很强大,它支持泛型特化,而 Rust 目前并不支持。当你在 Rust 中使用泛型参数时,你需要 指定其所适用类型的的所有特征 。因此,C++中的泛型模型不能保证适用于所有类型,而 Rust 能保证泛型的可持续构建,类型可接受就能良好运行。

我很喜欢 Python 的干净整洁,有时候在 Python 中编写的代码像是伪代码。但我对 Python 工具的分散和无序感到失望,XKCD 漫画中也有吐槽这一点的。Cargo Script 正在朝这个方向努力。我想:如果我们有一个标准库的替代品,隐藏掉很多低级别的细节,会不会更好?

我们也试图优化 Rust 的编辑布局,让开发者感觉是在 Python 中编写一样流畅。这样还能享受到 Python 的一些好处,比如快速组合代码、原型化、编译和构建等等。有时候,不用声明类型十分方便。但由于 Python 缺乏静态类型,有时会引发一些错误。我们尝试让 Rust 吸收 C++、Python 的优势。
Rust 的维护挑战与 Cargo 团队协作
GOSIM: 作为 Rust 的关键工具如 Clap 库和 Cargo 包管理器的维护者,你曾遇到最大的挑战是什 么?
Ed Page: 时间是最大的挑战之一。 起初我只是在业余时间进行 Rust 的维护,但随着家庭事务的增多,我的业余时间变少了。在加入 Futurewei 之前,我并没有太多时间进行维护。即使有时间,需要解决掉问题的也很多,远不是一两天就能搞定的。我的一个待办事项中列出了亟待解决的问题,可能需要超过一年的时间才能完成。另一个挑战是 弄清楚哪个问题应该优先考虑,以及何时说“不”
GOSIM: 你做过的哪些改进功能令你特别自豪?
Ed Page: 我对 Cargo 的第一个重大贡献是给 Cargo 添加了“add”功能。在此之前,我并没有使用过这个功能,认为没有必要仅仅为了添加依赖项而去安装一个第三方工具。虽然不是我编写的初始功能,但是我负责把它加入到 Cargo 进行运行的。在进行了一些调整和改进后,它大大提升了 Cargo 的使用体验。
GOSIM: 作为 Cargo 团队的一员,你的主要职责是什么?你与其他团队成员是如何开展合作的?
Ed Page: Cargo 团队的情况很容易让人误解。人们可能以为“他们需要 Cargo 团队去做某件事,Cargo 团队就会去执行”,或者“Cargo 团队的负责人就是团队的唯一决策者”。实际上并非如此,Cargo 团队可以决定 Cargo 中包含哪些功能。
Cargo 团队 也可以帮助人们完善设计,使其达到 Cargo 团队的标准。有时我们会参与功能设计,但我们不可能帮助每个人做全部内容。 我们工作的重点在于决策制定和长期维护。
GOSIM: 再次回到协作的话题,是否有具体的例子可以分享一下你们如何与其他团队成员进行合作?
Ed Page: 我们共同讨论了 Cargo 的设计方案。例如,Rust 和 C++可以为用户提供错误提示和长度检查的功能,而我们无法提供这样的提示信息。因此,目前正在开发这项功能。
随着 Cargo 的发展,我们会根据人们的需求拓展 Cargo 的功能。我和团队的另一位成员 Scott 合作进行了大量的工作。合作提高了效率,更方便我们进行开发。
重点改进依赖项处理与兼容问题
GOSIM: Cargo 还将推出哪些令人期待的功能呢?
Ed Page: 即将推出的是 MSRV-aware 解析器 。它为项目支持最低的 Rust 版本,确保选择的依赖项与你声明的 Rust 版本兼容,对企业来说非常重要。我们每六周会进行一次升级以保证 Rust 的质量和兼容性。
但是,有些企业更新前需要进行不同的验证,有些只能抽空进行升级维护,他们就无法及时进行更新。为了方便这些企业在使用旧版本 Rust 时也能找到兼容的依赖项,我们也改进了相关功能。
我开发的另一项功能是 Cargo Script ,它允许 Rust 文件中直接包含依赖项,而不必单独使用一个 Cargo.toml 文件。这使得快速搭建实验变得非常容易。当你创建一个 issue 并在 GitHub 上提交时,它包含其他用户想要复现该 issue 所需的一切内容。如果你想与同事交流这个项目,也可以发送给他完整的文件,可以方便地进行原型设计、实验和工作进度分享。
GOSIM: 你认为 Rust 需要进行哪些重点改进以提供更好的服务?
Ed Page:






请到「今天看啥」查看全文