极客视点
极客时间编辑部
极客时间编辑部
113240 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/04:14
登录|注册

为什么Rust连续三年成为最受欢迎的语言?

讲述:丁婵大小:991.30K时长:04:14
为新产品选择编程语言是一项重要的战略决策。它会影响很多事情,并对招聘、文化甚至产品的可行性都有长期的影响。你需要考虑所选语言对于要解决的特定问题陈述是否可行,该语言能发挥多大的作用,有哪些成本优势以及解决问题的难易程度等等。日前,软件开发者阿什·穆萨(Ash Moosa)发文解释了他们为新产品选择 Rust 的原因。
穆萨的团队正在创建一种设备,用于收集来自各种传感器的数据,并通过 Web 和移动应用提供实时分析和智能协助。他们需要一种足够快的语言,以允许最小的实时延迟并使用 SoC 设备的有限资源。他们在选择编程语言时分别从性能、开发性、内存安全、开发者体验等方面进行了评估,具体如下。

1. 性能

正如下图所示,一般认为,Rust 的性能与 C++ 相当。并且 Rust 与其他解释器或者基于 JIT 的语言(如 Lua 或 Python)相比,性能要好得多。

2. 并发性

由于希望能够做到实时处理来自多个传感器的数据。穆萨团队的目标平台 SoC 设备使用基于 ARM 的 CPU,通常有 4 个以上的内核。他们希望所有的 CPU 内核都能得到利用,这意味着拥有多线程支持非常重要。而 Rust 内置了对多线程的支持,它的所有权和借用规则能帮助穆萨团队编写出非常安全的并发代码。

3. 内存安全

Rust 超越了动态类型语言的灵活性特点和静态类型语言快速编译代码等特点,Rust 非常严格且学究式的编译器会检查开发者使用的每个变量以及引用的每个内存地址。它避免了可能会出现的数据竞争条件,并通知开发者未定义的行为。
除此以外,类型安全是 Rust 最大的卖点之一,也是 Rust 连续三年在 StackOverflow 调查中成为最受欢迎的语言的原因。
在 Rust 中,每个值都有一个“拥有范围”,传递或返回信息意味着将所有权转移到一个新的范围。开发者可以借出对调用函数的访问,这就是所谓的“借用”。Rust 确保这些租约不会超过被借用的对象的寿命。这不仅使它非常“类型安全”,而且还有助于开发者正面解决并发问题,因为内存安全和并发错误通常会归结为代码访问数据,而实际上并不应该这样做。

4. 开发者体验

Rust 有一个陡峭的学习曲线。这主要是由于“所有权”和“借用”概念所致。这使得 Rust 与其他语言相比,学习起来更困难,也更耗时。它要求开发者非常清楚关于内存分配和并发性的基本计算原则,并且还要求开发者在实现时牢记这些原则。任何语言都应该如此,尤其是在 Rust 语言中,编译器会显式地强制开发者编写最佳的内存安全代码。
低级别控制和高级别安全保证了开发人员能够对性能进行更多的控制,而无需承担学习 C/C++ 的负担,也不必承担出错的风险。此外,Rust 还通过其强大的库(如 cargo test),方便了开发人员在程序内部编写测试。
综上所述,Rust 对穆萨团队的项目而言是一个很好的选择。穆萨建议,当你想要实现资源占用较少的高性能并发系统时,编程语言的选择是有限的。基于解释器的语言在高并发性和低资源环境中往往表现不佳。系统编程语言是这种用例的理想候选语言。
但是,如果没有资源约束,或者不需要高并发性,又或者能使用其他机制(如事件循环等)实现高并发性,那么基于解释器的编程语言可能会更好。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • ZSF😏
    为啥不和go语言比较一下?
    1
    6
  • Tavern🚀
    运行时间Go和java差不多,内存消耗少一些而已。1楼对go太迷信了吧
    1
  • 加菲猫
    从性能、并发性、内存安全、开发者体验这四个方面看,Rust语言是比较好的选择
收起评论
大纲
固定大纲
1. 性能
2. 并发性
3. 内存安全
4. 开发者体验
显示
设置
留言
3
收藏
41
沉浸
阅读
分享
手机端
快捷键
回顶部