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

耗时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.

相关推荐
热点推荐
比《牛来》还狠!一人包办整部电影,《目不转睛》9.17上映!

比《牛来》还狠!一人包办整部电影,《目不转睛》9.17上映!

动物奇奇怪怪
2026-08-23 01:30:22
据说没有这场面他俩未必走到一起,因为陈思诚那时候和他女友曹曦文还没有彻底断干净

据说没有这场面他俩未必走到一起,因为陈思诚那时候和他女友曹曦文还没有彻底断干净

东方不败然多多
2026-08-24 08:15:56
买票占座放零食事件升级!人民日报锐评,言辞犀利,给大家提了醒

买票占座放零食事件升级!人民日报锐评,言辞犀利,给大家提了醒

周哥一影视
2026-08-24 01:07:16
塔利班治下的阿富汗  仿佛坠入中世纪般的处境

塔利班治下的阿富汗 仿佛坠入中世纪般的处境

那些看得见的老照片
2026-08-24 07:00:27
那英演唱会当众寻找梁博无果,散场后梁博发文:我全程都在

那英演唱会当众寻找梁博无果,散场后梁博发文:我全程都在

陈意小可爱
2026-08-24 09:07:02
万亿中际旭创跳水,股价跌破900元

万亿中际旭创跳水,股价跌破900元

21世纪经济报道
2026-08-24 09:57:10
票房破94亿!《奥德赛》是赢了,但这个“黑海伦”却让我如鲠在喉

票房破94亿!《奥德赛》是赢了,但这个“黑海伦”却让我如鲠在喉

电影烂番茄
2026-08-22 18:10:15
海港球迷:22岁国脚是申花球迷撞的!后者:怎么撞的不是武磊?

海港球迷:22岁国脚是申花球迷撞的!后者:怎么撞的不是武磊?

念洲
2026-08-24 07:07:33
王毅才刚访问韩国不到24小时,韩国就宣布:拟对中国征收反倾销税

王毅才刚访问韩国不到24小时,韩国就宣布:拟对中国征收反倾销税

共工之锚
2026-08-24 00:22:08
牡丹花下死?古柯再曝刘晓庆猛料,庆奶发声,没把前助理放眼里

牡丹花下死?古柯再曝刘晓庆猛料,庆奶发声,没把前助理放眼里

汪镛的创业之路
2026-08-11 17:55:59
北大教授张丹丹被炮轰!“灵活就业福利论”引起众怒,工作经历被扒,网友:一辈子在开会,写材料,难怪会说出这样的话!

北大教授张丹丹被炮轰!“灵活就业福利论”引起众怒,工作经历被扒,网友:一辈子在开会,写材料,难怪会说出这样的话!

谭谈社会
2026-08-22 13:23:33
阿维塔12开启华为乾崑智驾后雨天冲至125公里/时 高速上追尾大货车 售后称智驾没问题

阿维塔12开启华为乾崑智驾后雨天冲至125公里/时 高速上追尾大货车 售后称智驾没问题

信网
2026-08-21 21:49:04
对巴勒斯坦人的偏袒,才是巴以冲突持续的根本原因

对巴勒斯坦人的偏袒,才是巴以冲突持续的根本原因

老王说正义
2026-08-23 00:02:25
直线跳水!三星电子跌近7%,韩股跌近2%,SK海力士小幅上涨;日经225指数跌0.43%|日韩股市

直线跳水!三星电子跌近7%,韩股跌近2%,SK海力士小幅上涨;日经225指数跌0.43%|日韩股市

每日经济新闻
2026-08-24 08:45:03
8月25日北京这场会,上亿退休人等了大半年

8月25日北京这场会,上亿退休人等了大半年

笔墨V
2026-08-24 07:00:09
换下登贝莱?恩里克:这里没功劳簿可躺,也没任何过去的特权

换下登贝莱?恩里克:这里没功劳簿可躺,也没任何过去的特权

懂球帝
2026-08-24 05:22:16
78岁汪明荃助阵古天乐演唱会,造型惹热议,舞台状态让人刮目相看

78岁汪明荃助阵古天乐演唱会,造型惹热议,舞台状态让人刮目相看

仙味少女心
2026-08-23 10:46:03
经济日报:用剩菜剩饭喂猪是否违法

经济日报:用剩菜剩饭喂猪是否违法

澎湃新闻
2026-08-24 07:26:05
高考622分与理想军校失之交臂,河北姑娘复读一年考出676分,放弃985圆梦军校

高考622分与理想军校失之交臂,河北姑娘复读一年考出676分,放弃985圆梦军校

极目新闻
2026-08-22 13:14:47
老人进店休息离世,店家帮扶遭索赔10万最终赔1万9:按闹分配,好人赔钱,全社会买单

老人进店休息离世,店家帮扶遭索赔10万最终赔1万9:按闹分配,好人赔钱,全社会买单

少爷写春秋
2026-08-23 20:41:16
2026-08-24 12:08:49
CSDN incentive-icons
CSDN
成就一亿技术人
26878文章数 242320关注度
往期回顾 全部

科技要闻

“捂脸跑”机器人火出圈,它自己想出来的

头条要闻

特朗普嘲笑:伊朗是世界上唯一一个没人想当总统的国家

头条要闻

特朗普嘲笑:伊朗是世界上唯一一个没人想当总统的国家

体育要闻

46岁小罗复出,为什么选了一支意丙球队?

娱乐要闻

张韶涵演唱会突发不适,本人发文道歉

财经要闻

泡泡玛特,最大的问题才刚显现

汽车要闻

智能超混 国民家轿 上汽大众ID. ERA 5S上市 限时8.99万元起

态度原创

时尚
数码
旅游
房产
本地

夏天别总穿白色T恤,试试这几款衬衫,配裤子裙子都显气质

数码要闻

OneOdio推Fusion A70 Gen 2无线监听耳机,国行低至288.15元

旅游要闻

视点|书香构筑奇幻空间,打卡北京海淀区“钟书阁”

房产要闻

两大热盘即将入市!三亚又一批安居房狠货要炸场了!

本地新闻

《牛来》的一声“妈妈”,到底多少人被精神污染了

无障碍浏览 进入关怀版