Rust软件 Bug 少并不是因为开发者智商高!
最近一个观点在 Rust 社区引起了争议,原文时来自网友 @Apache9 的微博:
最近看到吹Rust的越来越多了,什么性能牛逼bug少。 这个我觉得可以多说两句。软件工程这个东西,我在学校学的时候就觉得没什么鸟用。直到工作一段时间时候才体会到,软件工程尝试解决的问题是,如何让后50%的程序员产出不为负。这其实也是编程语言设计时候需要考虑的问题。 这里面一个极端是Java,这个语言设计的目标就是规范后50%码农的行为,控制破坏范围,尽力维持他们产出稍稍为正。所以为什么java各种框架条条框框特别多,就是让培训班出来的人也能写程序,甚至写出来还能用。 另一个极端就是Rust了,Rust的设计就是直接告诉后50%的程序员,你们不配当程序员,给老子滚。后50%的程序员用Rust连一个能编译过的程序都写不出来,别说上线跑了。 所以为什么Rust程序性能好bug少?因为能用Rust写程序的本来就是程序员很牛逼的一波人了,你让他们用PHP他们一样能写的性能好bug少。谢谢
尽管不可否认不是所有人都能掌握 Rust ,但 Rust 软件 Bug 少的主要原因,是因为 Rust 站在时代的前沿,通过提供完善的内存安全检查的工具来使得检查出常见的内存安全问题更加容易。
另外,张汉东老师也对此提出了自己的看法:
这种言论虽然有鼓吹Rust开发者牛逼的嫌疑,但其实还是建立在没有对Rust有真正认识的基础上。
Rust代码Bug少,完全是因为Rust语言的设计和Rust编译器的检查。换成PHP,Cpp,Bug照样成堆,出错是人类自身的弱点,没办法。
Rust语言牛逼之处在于可以把一个菜鸡的水平提升到一个合格程序员的红线之上。并不是让谁滚。只要有上进心想在技术上有所提升都可以用rust。并不是牛逼的人才能用Rust。
Rust程序员不应该像Cpp开发者那样给人一种所谓的智商优越感!
KRust:Rust形式化可执行语义
论文摘要:Rust是新兴的系统级编程语言,旨在提供内存安全的同时保证极高的性能。Rust形式化语义是用来证明其内存安全和开发Rust程序分析工具的基础。鉴于目前没有直接描述Rust的形式化语义,提出了针对Rust语言的形式化可执行语义KRust。为了确保语义的可执行性和应用性,使用了K框架进行语义的开发。KRust目前涵盖了Rust常见的语法和语义,包括了Rust的3个核心特性:所有权、借用和生命周期。KRust通过了191个测试样例,其中157个都是来自Rust官方的测试集。语义对比测试实验发现了Rust编译器的缺陷。此外,KRust的语义还可以被应用于开发Rust程序分析工具。
论文链接: http://fcst.ceaj.org/CN/abstract/abstract2041.shtml
2020 openEuler 高校开发者大赛
这个比赛由OSChina, gitee 主办, openEuler协助举办。openEuler 是一个开源的 Linux 发行版,通过开放的社区形式与全球开发者共同构建一个开放、多元和架构包容的软件生态体系。同时 openEuler 也是一个创新的平台,鼓励任何人在该平台上提出新想法、开拓新思路、实践新方案。此次大赛旨在鼓励高校在校学生积极参与到开源项目,通过参与开源项目的开发激发学生的动手实践、提升解决问题的能力和技术创新能力。
本次比赛有7个和 Rust 相关的课题:
- 用 Rust 实现分布式系统状态管理
- 用 Rust 实现高性能纠删码
- 用 Rust 实现分布式数据去重机制
- 用 Rust 实现无锁 LRU 分级缓存
- 用 Rust 实现远程数据准实时异步加载
- 用 Rust 实现 Kubernetes 的调度扩展以支持有状态应用故障后跨节点恢复
- 用 Rust 实现跨节点数据实时同步
大赛链接:https://www.oschina.net/2020-openeuler?from=oschina-wx
评论区
写评论根据木桶理论,一个木桶能装多少水,决定于最短的那根木板。 对于一个使用Rust的团队来说,Rust编译器帮团队把最短的那根补齐了
43, 46 好像也是 Rust 的题目。 我给高校学生丢脸了,看了一圈啥都不会。