网易首页 > 网易号 > 正文 申请入驻

耗时18个月,开发者弃TypeScript投Rust,重写系统后痛批:这门语言烂透了!

0
分享至

在近几年的 Stack Overflow 年度开发者调查报告中,有一门编程语言连续多年被评为“最受喜爱的编程语言”——那就是 Rust。

凭借其独特的安全性和与 C++ 不逞多让的性能,Rust 成为许多开发者想要尝试的语言,本文作者正是其中一位。而他在用 Rust 重写整个开源算法交易系统后,得出了一个不同于多数人的结论:Rust 这门语言,真的烂透了。

作者 | Austin Starks 编译 | 郑丽媛

出品 | 程序人生(ID:coder_life)

曾经,我是一个年轻而充满希望的 Rust 狂热者。因为我一直听说,Rust 完美得像是上帝设计的编程语言:不仅很快,还是最安全的编程语言之一。

如果在网上查找有关 Rust 的信息,你会发现认为 Rust 完美的人,远不止我一个:Medium 上的每一篇指南、Reddit 上的每一篇帖子、Stack Overflow 上的每一个答案……对 Rust 都是铺天盖地的正面评价。

有鉴于此,我决定放弃 TypeScript,用 Rust 来重写我的开源算法交易系统 NextTrade。

用 Rust 重写的好处是有,但代价巨大

起初,NextTrade 是用 TypeScript 构建的,以注重可维护性、可读性和可重用性。然而,当核心交易逻辑开始出现严重的性能问题时,为了构建一个可扩展至数万用户的纸面交易和回测平台,有必要进行全面重写。于是,Rust 成为了最热门的候选者,并在经过我的大量研究后最终胜出,成为进行全面重写 NextTrade 的编程语言。

前后花了 18 个月,最后的重写结果还不错。由 Rust 重写后的 NextTrade 变成了 NexusTrade,而 NexusTrade 在速度和可配置性方面明显优于重写之前:例如,在 NextTrade 上需要数秒才能完成的回溯测试,在 NexusTrade 上只需几百毫秒即可完成——这意味着性能提升了 1000 倍,平台也能支持更复杂的功能。

有这些好处固然很好,但我付出的巨大代价也不容忽视。

Rust 最大的优点,是完全消除了整类错误,而这同时也是它最大的弱点——借用检查器让这门语言变得异常困难,尤其是与 TypeScript 和 Go 这样的语言相比,入门门槛相当高。我根本无法像以前学习一门新语言那样边学边做,尤其是还要兼顾着一份全职工作:Rust 太难了!

说实话,如果 OpenAI 没有推出 ChatGPT,我真的可能会转而使用 Go。

所幸在 ChatGPT 的指导下,我克服了每一个障碍,深入了解了 Rust 的细微语法及其强大而复杂的类型系统。ChatGPT 就像一位经验丰富的 Rust 开发者在我身边,随时为我讲解生命周期的复杂性或匹配表达式的优雅性。

综合以上,我当时对 Rust 的评价是中等,也没有真正爱上这门语言,并基于以上经历写了一篇博文。没想到这篇文章在 Reddit 上遭到了许多抨击,其中还有一条高赞评论骂我用 ChatGPT 写文章。

看到这些评论后,我当时想着:可能是我还不够了解 Rust,对它的判断有失偏颇吧。

于是,在那之后我虽然没有多喜欢 Rust,但我还是坚持使用了一段时间。如今 4 个月过去了,我终于可以自信地得出一个结论:Rust 这门语言,真的烂透了。

可怕、冗长、不直观的语法和语义

在我看来,所有说 Rust 没有残暴语义的人都是在撒谎。在某些情况下,如果你无法使用极其强大的大型语言模型,那么编写函数简直就是不可能的事情。但我真的不想花 90 分钟来弄清函数中的子句,我只想写出一个想写的函数而已!

最后,我还不得不完全放弃辅助函数的想法,因为我真的无法让代码编译成功。人们所说的 Rust 最大的优点(严格的编译器可以消除错误),正是 Rust 最大的缺点之一。只要给我一个垃圾回收器,让我做我想做的事情就可以了!

相比之下,如果我用 Go 编写这个完全相同的函数,它看起来会是这样的:

虽然功能的核心相对不变,但这样你就不必翻来覆去地琢磨如何让代码正常运行了——它本身就能运行!

可怕的错误处理

Rust 确实能对错误进行很好的处理。只要避免出现不安全的错误,就能确保代码正常运行。NilPointerException 异常和未处理的错误再也不会发生了,对吧?

不对!因为当你的数据出错或发生意外情况时,你会拼命去弄清楚到底发生了什么。也许我是个白痴,不知道如何启用堆栈跟踪。但当我的应用程序出现一个错误时,我却不知道为什么!

(我的堆栈跟踪到底在哪里?)

相比之下,在 Python 这样的语言中,你会得到一些漂亮的、艺术般的堆栈跟踪,告诉你发生了什么,甚至精确到行号!即使在 Go 语言中,你也有 errors.Wrap(...) 这样的工具,能够让你查看整个应用程序的错误堆栈。或许我真是个笨蛋,只要我在 Rust 中遇到错误时,我就会陷入茫然,完全搞不清发生了什么。我需要在应用程序的各个地方都加上 eprintln!(...)。

事实上?不,我不是白痴。这就是一种有缺陷的语言设计。

Rust 社区

有一个热评是:Rust 社区并不像他们假装的那样友好和冷静。更具体来说,我认为他们是一群自恋的家伙,尤其讨厌别人说 Rust 有缺陷。

(有个 Rust 社区成员对我的问题给出了一个“有益的”建议)

例如,我在 Rust 的 subreddit 上问了一个关于如何改进 MongoDB Rust crate 错误处理的问题,得到的回答包括:

  • 改用 Postgres。(笑死,难道我要因为一些糟糕的错误信息就重新设计整个数据库吗?)

  • 你为什么要用 MongoDB?(我喜欢,下一个问题?)

  • MongoDB 在 Go 和 Python 中也很糟糕。(我不知道,但它在 TypeScript 中很好。你转移了话题并没有回答我的问题)

  • 出现一个真正有用的改进错误信息的建议。(非常罕见)

在我目前接触的所有编程社区中,没有一个像 Rust 这样像个邪教。他们无视 Rust 的所有明显缺陷,比如陡峭的学习曲线、冗长的代码、可怕的错误信息、复杂的语法和有争议的语言设计选择——他们把这一切问题,都归结于开发者自己的技能问题。在我看来,这简直是疯了!

总结

尽管如此,Rust 还是有一些优点的。它运行速度很快……嗯,这基本上就是它的主要优点了。

另外,它应该也很安全。如果我们把它和 C++ 比较,Rust 显然是更好的语言。但与其他语言(比如 Go)相比,Rust 的“安全性”对我来说更像是一种拖累。如果能把开发时间减半,那我宁愿应用程序的运行时间多加几十毫秒。

好的一面是,如果我选择用 Go 编写应用程序,我可能也会有些后悔。我会想:“如果 Rust 能更快呢?” “又有一篇文章说 Rust 是最棒的语言。天啊,我是不是选错了!”

至少,现在我学会了 Rust,我觉得自己可以学任何东西了。也许后面我会为了好玩去试试 OCaml,它总不会比 Rust 更难学吧?

https://medium.com/@austin-starks/i-spent-18-months-rebuilding-my-algorithmic-trading-in-rust-im-filled-with-regret-d300dcc147e0

https://medium.com/@austin-starks/i-built-an-algorithmic-trading-system-in-rust-heres-what-i-regret-a89f378b22c9

由 CSDN 和 Boolan 联合主办的「2024 全球软件研发技术大会(SDCon)」将于 7 月 4 -5 日在北京威斯汀酒店举行。

由世界著名软件架构大师、云原生和微服务领域技术先驱 Chris Richardson 和 MIT 计算机与 AI 实验室(CSAIL)副主任,ACM Fellow Daniel Jackson 领衔,华为、BAT、微软、字节跳动、京东等技术专家将齐聚一堂,共同探讨软件开发的最前沿趋势与技术实践。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
北京三位女大学生青海自驾游两死一伤 伤者一审被判入刑4年

北京三位女大学生青海自驾游两死一伤 伤者一审被判入刑4年

经济观察报
2026-05-07 10:43:05
31分史诗逆转!中国U17男篮轰29-0加时翻盘 姚嘉泽轰32+10

31分史诗逆转!中国U17男篮轰29-0加时翻盘 姚嘉泽轰32+10

醉卧浮生
2026-05-07 22:55:24
广厦输球揪出头号罪人!昔日夺冠奇兵7中2,他根本无法代替孙铭徽

广厦输球揪出头号罪人!昔日夺冠奇兵7中2,他根本无法代替孙铭徽

老叶评球
2026-05-07 22:49:31
别再造神了!吴宜泽好友曝真实家境,并非寒门 经济压力大也不是穷

别再造神了!吴宜泽好友曝真实家境,并非寒门 经济压力大也不是穷

情感大头说说
2026-05-08 03:10:37
“很久没有这种兴奋感了”!段永平出手!清仓中国神华 买入泡泡玛特 称泡泡玛特的商业壁垒远比想象中强大 是王宁的粉丝

“很久没有这种兴奋感了”!段永平出手!清仓中国神华 买入泡泡玛特 称泡泡玛特的商业壁垒远比想象中强大 是王宁的粉丝

每日经济新闻
2026-05-07 17:25:55
于米提补篮准绝杀!山西爆冷险胜1-0广厦 布朗35分胡金秋丢绝平球

于米提补篮准绝杀!山西爆冷险胜1-0广厦 布朗35分胡金秋丢绝平球

醉卧浮生
2026-05-07 21:53:54
“机车女神”痞幼拿下张雪,评论区直接吵疯!

“机车女神”痞幼拿下张雪,评论区直接吵疯!

品牌新
2026-05-07 17:28:42
3200 万人请愿赶他走!姆巴佩破耻辱吉尼斯纪录,进 41 球没用!

3200 万人请愿赶他走!姆巴佩破耻辱吉尼斯纪录,进 41 球没用!

奶盖熊本熊
2026-05-08 00:29:53
伊朗炮火首次击中中国油轮,伊朗火力开始失控?

伊朗炮火首次击中中国油轮,伊朗火力开始失控?

桂系007
2026-05-07 23:42:06
争议!郑钦文委屈落泪:向裁判抗议安保人员乱走动 反遭对方回怼

争议!郑钦文委屈落泪:向裁判抗议安保人员乱走动 反遭对方回怼

风过乡
2026-05-07 19:49:48
央视三胎宣传片惹争议,脱离现实强行把孕妇塑造成超人式幸福?

央视三胎宣传片惹争议,脱离现实强行把孕妇塑造成超人式幸福?

今朝牛马
2026-05-07 20:36:33
湖南一28岁干部受邀钓鱼溺亡,家属称其手机里有大量领导违纪证据,死后才知他欠银行37万元,多名领导长期赌博,并带领其参与

湖南一28岁干部受邀钓鱼溺亡,家属称其手机里有大量领导违纪证据,死后才知他欠银行37万元,多名领导长期赌博,并带领其参与

极目新闻
2026-05-07 21:48:08
在越南常住,才懂一个很现实的道理,非生理需求别轻易找越南女友

在越南常住,才懂一个很现实的道理,非生理需求别轻易找越南女友

老特有话说
2026-05-05 15:27:19
世界杯国际足联开出天价版权:对中国开价近3亿美元,是印度的17倍,现“降”至1.2至1.5亿美元;电视转播谈判陷僵局

世界杯国际足联开出天价版权:对中国开价近3亿美元,是印度的17倍,现“降”至1.2至1.5亿美元;电视转播谈判陷僵局

浙江之声
2026-05-07 08:24:22
婚宴白嫖烤全羊后续:被找茬赖账,商家报警,主家包庇全员已社死

婚宴白嫖烤全羊后续:被找茬赖账,商家报警,主家包庇全员已社死

暖心萌阿菇凉
2026-05-07 02:08:14
比核弹更致命?伊朗海底7条光缆,扼住全球经济命脉

比核弹更致命?伊朗海底7条光缆,扼住全球经济命脉

网易新闻出品
2026-05-07 19:33:27
院长和女研究员在国际顶刊大肆造假,同济大学通报:院长免职降级,第一作者被解聘

院长和女研究员在国际顶刊大肆造假,同济大学通报:院长免职降级,第一作者被解聘

高分子科学前沿
2026-05-06 21:26:12
深圳大胜1-0浙江:贺希宁32+5总分升队史第二 史密斯27+9

深圳大胜1-0浙江:贺希宁32+5总分升队史第二 史密斯27+9

醉卧浮生
2026-05-07 22:00:41
恒大集团创始人许家印被曝出猛料

恒大集团创始人许家印被曝出猛料

地产微资讯
2026-05-07 09:28:09
合作不等于被羞辱

合作不等于被羞辱

晓看说
2026-05-07 11:47:58
2026-05-08 04:39:00
CSDN incentive-icons
CSDN
成就一亿技术人
26515文章数 242281关注度
往期回顾 全部

科技要闻

月之暗面完成20亿美元融资,估值突破200亿

头条要闻

日媒询问中国是否希望恢复中日之间人员往来 中方回应

头条要闻

日媒询问中国是否希望恢复中日之间人员往来 中方回应

体育要闻

巴黎再进欧冠决赛,最尴尬的情况还是发生了

娱乐要闻

Lisa主持!宁艺卓观看脱衣秀风波升级

财经要闻

人均年薪406万,这家ST公司惊呆市场!

汽车要闻

雷克萨斯全新纯电三排SUV 全新TZ全球首发

态度原创

教育
时尚
房产
本地
公开课

教育要闻

二模很重要!2026临沂二模、青岛二模语文、数学试题及答案!

今年最火的4双平底鞋,配小黑裙好看又气质!

房产要闻

负债23亿,抵押482亩地!海南这家巨头,惨遭拍卖!

本地新闻

用青花瓷的方式,打开西溪湿地

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版