Jon Gjengset是书籍Rust for Rustaceans 的作者,曾是MIT CSAIL 并行和分布式操作系统组的博士生,是 Amazon Web Services (AWS) 的高级软件工程师。在亚马逊,他的重点是在内部推动 Rust 的采用,包括构建内部基础设施以及与 Rust 生态系统和社区进行互动。
Rust 连续六年被 Stack Overflow 评为“最受欢迎的语言”,它也因比其他流行语言更难学习而闻名,那些擅长 Python 但由于感知到的学习曲线而犹豫是否需要尝试 Rust?
Rust 并不难学,而是 Rust 迫使您将其应用到代码中的原则。如果您正在使用 Python 编写代码,以您的示例为例,该语言存在大量问题,您无需考虑就可以逃脱 - 也就是说,直到它们稍后回来咬您为止。无论是由于动态类型导致的错误、仅在重负载期间出现的并发问题,还是由于缺乏仔细的内存管理而导致的性能问题,您都在进行反应式开发。您首先构建一些有效的东西,然后在发现问题时周而复始地解决问题。
Rust 是不同的,因为它迫使你更加主动。今年来自 RustConf 的一个恰当引用是 Rust“首先给你带来宿醉头疼反应”——作为开发人员,你被迫对你的程序的运行时行为做出明确的决定,并且你被迫确保相当大的错误不会出现存在于您的程序中,所有这些错误都在编译器编译源代码之前就能发现。这是开发人员需要学习的东西,以及在编译时调试的相关技能,而不是在运行时调试和发现各种错误。
正是开发过程的这种变化导致了大部分(尽管不是全部)Rust 更陡峭的学习曲线。这是一个非常真实和重要的教训。我也怀疑这将是一个非常有价值的教训,随着行业越来越关注通过形式验证等方式保证正确性,这只会在这个方向上进一步推动开发人员体验。例如,当我现在用 Java 编写代码时,我更加了解该代码的正确性和性能影响,因为从某种意义上说,Rust 教会了我如何更好地推理代码的这些方面。
Rust 比 C 和 C++ 有两个主要优点
Rust 比 C 和 C++ 有两个主要优点:人体工程学和安全性。
对于人体工程学,Rust 采用了许多传统上与高级语言相关的机制,这些机制使得编写简洁、灵活、(大部分)易于阅读且不易误用的代码和接口变得更容易——像代数数据类型这样的机制、模式匹配、相当强大的泛型和一流的功能。这些反过来让编写 Rust 感觉不像我们考虑C等系统编程时经常想到的那样 - 低级代码只处理原始指针和字节 - 并使该语言对更多开发人员更容易上手。
至于安全性,Rust 在类型系统中编码了更多关于代码、访问和数据的语义的信息,这允许在编译时检查其正确性。线程安全和独占可变性等属性在 Rust 的类型级别强制执行,编译器不会让你弄错。Rust 的强类型系统还允许通过类型状态编程将 API 设计为抗误用,这在 C 等不太严格的语言中很难实现。
其他点击标题