文章摘要
作者回顾了自己从9年级开始接触编程的经历,最终决定暂时告别Rust语言。文章表达了对Rust的复杂情感,暗示未来可能还会回归使用。
文章总结
《告别Rust(暂时)》
作者Dmitry Kudryavtsev回顾了自己从中学学习Pascal、C语言到成为全栈开发者的编程历程。他最初热爱C语言的底层控制,但后来转向更适合Web开发的动态语言如PHP、Python。2015年后,Rust语言的出现让他重拾对系统编程的热情——Rust既提供内存安全控制,又具备现代化开发工具链。
2023年,作者成功用Rust构建了完整的商业化Web应用,并持续分享技术实践。但随着项目发展,他逐渐遇到瓶颈:模板引擎缺乏类型安全、国际化支持薄弱、动态查询构建困难、编译时间过长(完整CI/CD流程需14分钟)等问题。作为独立开发者,他最终决定将项目迁移至Node.js生态,获得更快的迭代速度(5分钟部署)、成熟的i18n方案和类型安全工具链(如Zod、Kysely)。
作者强调这并非对Rust的否定——它仍是CPU密集型任务的绝佳选择,但Web开发的动态特性(模板渲染、API集成等)目前更适合Node.js。他特别指出Rust在类型安全SQL构建器方面的空白,以及Node.js生态在ESM/CJS模块混用等问题上的缺陷。文末,作者以"用合适的工具做合适的事"作结,表示未来处理非可视化服务时仍会考虑Rust。
(注:原文中关于作者书籍推广、社交媒体链接等非核心内容已精简,保留主要技术论证脉络。)
评论总结
以下是评论内容的总结:
1. 反对Rust用于Web开发的观点
- 成熟度不足:认为TypeScript/JS生态系统更成熟,工具链更完善(评论4、6)。
- "Typescript is pretty type-safe, and it’s perfectly integrated with hot code reload, debuggers..."(评论4)
- "TS/React生态系统非常成熟,Rust难以竞争"(评论6)
- 开发效率低:Rust的严格性和编译时检查导致开发动态内容时效率低下(评论8、10)。
- "Rust的UI工具包即使是简单按钮也需要复杂的生命周期管理"(评论10)
- "错误处理需要大量样板代码"(评论8)
2. 支持Rust用于Web开发的观点
- 性能与安全性:Rust在需要高性能和可靠性的场景(如实时系统、基础设施)中表现优异(评论9、12)。
- "Rust让我晚上睡得最安稳"(评论9)
- "Rust在系统级应用(如数据库、云基础设施)中表现出色"(评论12)
- 全栈潜力:新兴框架(如Dioxus)提供了类似React的开发体验,且支持跨平台(评论16)。
- "Dioxus比React更直观,且支持热重载"(评论16)
- "用Rust实现类型安全的WebSocket非常简单"(评论16)
3. 中立或折中观点
- 工具链问题:Node.js生态的碎片化(如模块系统、运行时选择)是痛点(评论15)。
- "Node生态过去几年非常混乱"(评论15)
- 语言选择取决于场景:Rust适合特定场景(如高并发、高可靠性),但不适合所有Web开发(评论10、12)。
- "Rust不是万能的,UI开发更适合高级语言"(评论10)
- "业务逻辑密集的应用可能不适合Rust"(评论12)
4. 其他技术建议
- 替代方案:部分用户推荐C#(评论17)或Rescript(评论14)作为折中选择。
- "Rescript可能是Rust和TypeScript之间的中间地带"(评论14)
- "C#在后端是一个很好的平衡点"(评论17)