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

  为新产品选择编程语言是一项重要的战略决策。它会影响很多事情,并对招聘、文化甚至产品的可行性都有长期的影响。

  首先要考虑的是,你所选择的语言对于要解决的特定问题陈述是否可行。重要的问题如下:

  该语言对你的特定用例是否合适?

  该语言能够发挥作用吗?

  该语言能够在目标平台上运行吗?

  这些应该是主要的问题。但也有其他因素可能会影响你的决定,比如:

  选择一种特定的语言将如何影响你从理想向现实的换向时间?

  使用特定语言的有哪些成本优势?

  解决你可能会遇到的问题有多容易?

  请牢记这些问题,本文将试图解释我们为新产品选择 Rust 的原因。

  用 例

  我们正在创建一种设备,用于使用来自各种传感器的数据,并通过 Web 和移动应用提供实时分析和智能协助。我们需要一种足够快的语言,以允许最小的实时延迟并使用 SoC 设备的有限资源。

  下面是我们评估为项目所选的编程语言的方法。

  性能

  比较实际应用的跨语言性能是一件很棘手的事情。我们在多种语言方面通常没有同样的专业知识,并且性能还受程序员选择使用的算法和数据结构的影响。但是,正如以下表格的基准所示,一般认为,Rust 的性能与 C++ 相当。并且 Rust 与其他解释器或基于 JIT 的语言(如 Lua 或 Python)相比,性能要好得多。

  并发性

  正如上面的用例所述,我们希望能够做到实时处理来自多个传感器的数据。我们的目标平台 SoC 设备使用基于 ARM 的 CPU,通常有 4 个以上的内核。我们希望所有的 CPU 内核都能得到利用,这意味着拥有多线程支持非常重要。

  Lua 并没有提供原生多线程的支持。尽管有第三方的解决方案,但这些方法的性能和可靠性值得怀疑。另一方面,Rust 内置了对多线程的支持,它的所有权和借用规则帮助我们编写出非常安全的并发代码。

  内存安全

  动态类型语言提供了很大的灵活性。类型更改不需要通过程序即可进行手动传播。它还提供了更多的思维灵活性,因为你可以在转换、操作和算法方面进行更多的思考。灵活性使你能够更快地移动、更快地更改内容,并以更快的速度进行迭代。但是这些是要付出代价的。人们很容易忽略潜在的问题,而且这些问题通常很难调试。此外,这些特性往往还会带来性能损失。

  另一方面,在静态类型语言中,在开发过程的早期阶段捕获大量错误,而且静态类型通常会导致编译代码执行的速度更快,因为当编译器知道正在使用的确切数据类型时,它可以生成优化的机器代码。静态类型还可充当文档。  郑州不孕不育医院:http://wapjbk.39.net/yiyuanzaixian/zztjyy/郑州不孕不育医院哪家好:http://wapjbk.39.net/yiyuanzaixian/zztjyy/郑州不孕不育医院排行:http://wapjbk.39.net/yiyuanzaixian/zztjyy/

  Rust 超越了这些特点,可谓是青出于蓝而胜于蓝,长江后浪推前浪。Rust 非常严格且学究式的编译器会检查你使用的每个变量以及你引用的每个内存地址。它避免了可能会出现的数据竞争条件,并通知你未定义的行为。

  下图的右侧部分显示了并发性和内存安全的问题。这些问题是最复杂的、不可预测的错误类别,并且从根本上来说,不可能被归入 Rust 的安全子集。此外,所有这些类型相关的错误都是危险的,会导致各种安全漏洞。

猜你喜欢

转载自www.cnblogs.com/sushine1/p/11109589.html