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

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

相关推荐
热点推荐
折腾半生倾家荡产,77岁牛群近况曝光,被美国毕业的儿子这样对待

折腾半生倾家荡产,77岁牛群近况曝光,被美国毕业的儿子这样对待

北海史记
2026-08-21 01:10:18
为什么一个54岁无业大叔的手机里,能藏着770个少女的噩梦?

为什么一个54岁无业大叔的手机里,能藏着770个少女的噩梦?

刻面
2026-08-24 15:17:45
杀疯了!118天跌超66%!从95元摔到31元,7000多股东被深度套牢!

杀疯了!118天跌超66%!从95元摔到31元,7000多股东被深度套牢!

趋势清风侠
2026-08-26 11:30:27
再见恒大!广体6亿接盘恒大足校:重整为分校区 9月招1000名新生

再见恒大!广体6亿接盘恒大足校:重整为分校区 9月招1000名新生

新英体育
2026-08-26 12:07:20
因祸得福!曼联逃过 7000 万天价大坑!英格兰水货彻底告吹

因祸得福!曼联逃过 7000 万天价大坑!英格兰水货彻底告吹

澜归序
2026-08-26 08:52:23
难怪我国今年加紧储备粮食!摩根大通预警,2027年或将迎来大危机

难怪我国今年加紧储备粮食!摩根大通预警,2027年或将迎来大危机

生活新鲜市
2026-08-26 10:57:38
“体制内留下你,才是真出事了!”211女生考编两次都被劝退,哭诉却无人买账

“体制内留下你,才是真出事了!”211女生考编两次都被劝退,哭诉却无人买账

妍妍教育日记
2026-08-04 12:20:08
“我的死是xxx造成的”,疑因提建议受打压,59岁绿化工留下指向明确遗言后坠楼身亡,家属已提起民事诉讼

“我的死是xxx造成的”,疑因提建议受打压,59岁绿化工留下指向明确遗言后坠楼身亡,家属已提起民事诉讼

大风新闻
2026-08-25 21:24:04
日本养老金真相:50%以上的人,未满15万日元(约6200元);30万日元以上的不足2万人!

日本养老金真相:50%以上的人,未满15万日元(约6200元);30万日元以上的不足2万人!

东瀛自由行
2026-06-28 21:18:34
乱世第一波出头鸟,死路一条

乱世第一波出头鸟,死路一条

汉周读书
2026-08-26 08:58:53
姆巴佩还没开张,伯纳乌先炸了,2连胜?没那么简单

姆巴佩还没开张,伯纳乌先炸了,2连胜?没那么简单

生活小图鉴
2026-08-26 10:22:15
心理学观察发现:不管你信不信,长大有本事的孩子,90%都出生在这两种家庭,错不了

心理学观察发现:不管你信不信,长大有本事的孩子,90%都出生在这两种家庭,错不了

心理观察局
2026-08-26 06:51:06
英国的无人机技术很先进吗?为何俄罗斯这么恐惧?

英国的无人机技术很先进吗?为何俄罗斯这么恐惧?

高博新视野
2026-08-21 18:45:58
大战一触即发!美国暗中见俄方,30多国准备进乌,朝鲜部队已到位

大战一触即发!美国暗中见俄方,30多国准备进乌,朝鲜部队已到位

面包夹知识
2026-08-26 15:06:33
俄方释放明确信号!深圳APEC峰会期间,普京特朗普或难免会面?

俄方释放明确信号!深圳APEC峰会期间,普京特朗普或难免会面?

有牙的兔纸
2026-08-26 09:32:36
北京40岁老板花3000万捡漏四合院,院子墙角莫名渗水,挖开后傻眼

北京40岁老板花3000万捡漏四合院,院子墙角莫名渗水,挖开后傻眼

白云故事
2025-06-17 08:35:23
真的有人喜欢微胖吗?一个人的时候,常常会感到不自信

真的有人喜欢微胖吗?一个人的时候,常常会感到不自信

娱你同欢
2026-07-31 23:28:29
体制内饭局突然退潮:没人说破,但人人都在躲

体制内饭局突然退潮:没人说破,但人人都在躲

职场资深秘书
2026-08-24 20:41:19
夫妻俩在上海卖包子,一天1000个,一个2块钱,一个月能赚多少钱

夫妻俩在上海卖包子,一天1000个,一个2块钱,一个月能赚多少钱

牛锅巴小钒
2026-08-26 10:24:40
形势到底有多严峻?网传计算机行业裁员劝退现象频繁...

形势到底有多严峻?网传计算机行业裁员劝退现象频繁...

慧翔百科
2026-08-26 17:47:42
2026-08-26 18:47:00
CSDN incentive-icons
CSDN
成就一亿技术人
26892文章数 242320关注度
往期回顾 全部

科技要闻

DeepSeek被曝前七个月收入4.75亿元

头条要闻

美向全世界发警告 特朗普给多国领导人打电话一一传达

头条要闻

美向全世界发警告 特朗普给多国领导人打电话一一传达

体育要闻

兑现五年之约,含梗量最高的世界冠军诞生

娱乐要闻

包文婧当初担心包贝尔出轨,预言成真

财经要闻

兰世立回应"牛津CEO班被骗":未遇杀猪盘

汽车要闻

硬派增程SUV新选手 北汽泰钽700上市焕新价24.98万起

态度原创

教育
家居
房产
艺术
军事航空

教育要闻

拉分题,也是失分题,全班失分严重

家居要闻

2026建博会(广州) 公装联探展交流活动

房产要闻

煤老板出手,海口又要杀出一个超级大盘!

艺术要闻

时尚地标!茵曼新总部,像“云”在流动

军事要闻

特朗普赞赏后 三个美国盟友邀请伊朗加入"中东版北约"

无障碍浏览 进入关怀版