如今关于Rust的议论无处不在
在某个不管会不会写代码的人都爱逛的网站上,Rust连续7年被评为最受喜爱的编程语言
不知道你怎么样,反正我已经受够了这股铺天盖地的Rust炒作
听他们吹,这玩意儿简直比切片面包[1]还伟大
我认为是时候有人鼓起勇气,告诉大众Rust这门语言的真面目以及它对科技行业造成的真实伤害
以下是10个不该用Rust的理由
Rust吹说编译期就能拦截大量错误,乍一听不错,可想一想有多少人靠反复修Go之类语言里的同类bug领工资
不管是数据竞争、空值bug还是静默崩溃,都一样
就是这些bug让大伙有饭吃有衣穿
Rust问世12年,稳定版8年,居然还不支持null
几乎所以语言都支持:c、cpp、java、c#、python、ruby、JavaScript,就Rust不支持
它有个option类型,可它不一样,逼你同时处理some和none,平白无故搞复杂
Rust每6周发布version,每3年整一个edition
2018年之前,想组织项目就要有mod.rs
现在就不建议怎么写,说是会出现大量语义不明确的文件。导出宏也一样
当然,两种写法都还可以用,不同edition的crate能混着来,编译器还能自动帮你迁移到下一版
可话说回来,我们该怎么记住这些变化?
rustfmt压制了关于代码格式的建设性讨论,以协作为名扼杀个人创造力
所有东西都用一个东西搞定
张口一个cargo闭口一个cargo
在c里,你可以从make, cmake, qmake, premake, configure, scons, gn, bazel, ninja, meson里随便挑
Rust既能写高性能web又能跑嵌入式,仅需在cargo.toml加feature=["full"]
这简直太过分了
一个优秀的标准库,必须至少提供两种在15年前还不错的实现方式,这样才保险,瞧瞧人家C++,标准库里一个字符串恨不得给你变出八个花样来,那才叫考虑周全,万一程序员就想用30年前的那种呢?
Rust让引入第三方crate变得太轻松
每个c项目都必须重复造轮子,因为链接就是噩梦
可Rust里,你直接用标准crate或者大伙都在用的流行crate就行
你知道所有人都用同一个东西时,这叫什么吗?没错——共产主义[2]
多数编程语言乐于欢迎偏执型精神分裂患者、当代纳粹甚至性犯罪者
Rust社区可不这样https://www.rust-lang.org/zh-CN/policies/code-of-conduct
那你说,这些人应该何去何从?
就因为他们威胁他人的身心健康,就要把他们拒之门外?
这未免太不公平了
英特尔、AMD、苹果这些公司每年拼命推出更快的硬件,可Rust写的程序在10年前的机器上照样跑得欢,让人根本找不到升级的理由
当然,编译确实挺耗资源,但那只是开发者的事,而开发者只占市场的极小一部分
团队在修改编译器或标准库时,会把几乎所有已发布的 Rust crate都下载下来,重新编译一遍,以确保修改不会破坏现有的代码
这可占用了大量宝贵的算力,本可以用来挖矿的
用c/cpp,你只要斜眼瞅几行代码,缓冲区溢出就像白送一样自己跳出来
你能拿它们追踪难民、监视政治活动人士或者把医院基础设施搞下线直到交赎金
Rust却让你费老鼻子劲才能找到这种漏洞,不禁让人怀疑:他们到底想隐藏什么?
[1]切片面包是英文中的说法,可以理解成惊天地泣鬼神的发明,也就是说Rust被吹得很伟大
[2]你懂的,西方政客喜欢调侃共产主义