有喜欢Rust语言的7个理由,也有不爱的7个理由,又爱又恨

2023-02-10 21:22:39 浏览数 (1)

不管你是否听说 Rust 语言,亦或者喜欢与否,Rust 都在系统编程的世界里掀起了一场风暴,成为继 C/C 之后的又一个选择。尽管 Rust 很耀眼,但作为一个年轻的编程语言,缺点和优点也都很明显。

喜欢和不喜欢都有理由

大多数软件开发者经常使用的编程语言似乎都是主流的编程语言,属于所有编程语言中的少数;几乎隔一段时间就会有一种新的编程语言被设计出来,程序员的一个突发奇想或解决一个特殊问题,开始提出想法,创造出许多的小众语言。因此,一种新的编程语言能够获取开发者认可并被广泛使用其实是很难得的。

Rust 便是那为数不多的新语言之一,开发人员使用 Rust 编写的代码可以在真正的企业生产中运行。它的目标是帮助程序员编写出同时处理几十、几千甚至几百万事件的代码。构建这些系统已经很有挑战性了,Rust 提供了一整套从开发,测试再到发布的完整流程,实例、文档手册都很丰富,为创建系统的最佳方法理论的提供了一种确实可行的解决方案。

根据 Rust 的核心团队的开发者调查,在 2021年,第一次有超过一半的Rust程序员在工作中使用这种语言,并用它来制作专业的程序为其他人提供服务。下面就来盘点下 Rust 让人又爱又恨的几点:

喜欢:Rust 处理规模和并发性问题

随着业务的增加,使用人数的越来越多,开发人员需要解决越来越多的规模和并发性问题,软件变得越来越复杂,也就是说,需要处理来自众多不同来源的同时输入,许多人认为 Rust 优秀的并发处理能力非常适合用于构建符合当今架构的工具。

网络浏览器是需要大规模可扩展性的应用程序的一个很好的例子,Rust 最初是 Mozilla 的一个研究项目,部分目的是重新实现 Firefox 浏览器的关键组件。有几个关键原因推动了这一决定:

  • 火狐浏览器需要更好地利用现代多核处理器;
  • 几乎无处不在的网络浏览器,尤其需要安全使用的环境;

因此,Rust 项目应运而生。

讨厌:Rust 并发模型太复杂了

虽然多线程系统越来越流行,但并不是所有程序员都能真正用到。科学程序员倾向于编写单线程函数,以处理无尽的数据流。创建网站可以 PHP 编写代码,它为创建网站提供了一种简单的、声明式的方法。

需要创建更复杂的网络应用的开发者可以转向 Java,它提供了另一种处理多线程应用的策略,可以产生简单而优雅的结果。

所有对于这些开发者来说,Rust 的多线程编程模型已经超过了程序员们所需要的。一些额外的功能,程序员根本就不需要它。

喜欢:Rust是一种现代语言

今天,许多编程语言的设计都集中在创建功能性语言,引导编码者编写更容易分析的软件。Rust就是这种趋势的一部分。许多开发者喜欢Rust的逻辑性、功能性语法,它鼓励将他们的代码构造成一个嵌套的函数调用序列。

同时,Rust 还能用于物联网(Internet of Things)领域,并为之提供了一套可行的组合。

讨厌:学习曲线过于陡峭

Rust 不同于现有的编程语言,他创新了不少全新的概念,比如:所有权、生命周期,在学习 中并不能从现有的经验中获得帮助,因此,学习的过程就是一个取消现有概念和技术的过程,你很可能从你的编程生涯的开始就遵循这些概念。

如果你想利用Rust的优点,你必须愿意放弃一些熟悉的功能,这些功能可能会导致错误。Rust 的语言语法也很复杂,甚至语法符合都会有不同含义,学习Rust的所有语义规则并不适合普通用户。

构建复杂的多线程工具的开发者可能会把 Rust 的语法复杂性看作是一项值得的权衡,可用于换取安全,但对于非函数式流程的真正爱好者,会是一件很难受的事情。

喜欢:优秀的向后兼容性

Rust 的开发团队致力于即使语言在不断发展,也要确保代码能够持续运行。团队努力确保新版本的语言依然能够继续编译和运行旧版本的代码。Rust 爱好者经常指出,此举能够维护他们的代码库,而不需要无休止的重写。

讨厌:Rust不完全的面向对象

Rust 不遵守面向对象的编程原则,这对习惯于面向对象的程序员来说,无疑是个沮丧的消息。虽然可以在 Rust 中模仿面向对象编程的某些特性,但并不能真正建立详细的OOP结构。

喜欢:更安全的异步处理模型

Rust 的异步编程模型让开发者可以创建独立运行的单独函数,然后将结果连接起来,这种结构可以帮助建立更快的代码,同时遇到更少的错误。

讨厌:异步编码很困难

Rust不能保护代码免于死锁或延迟,它只能提供更好的建议和更少的bug结构。开发人员仍然要对良好的应用设计和编写干净的代码负责,仔细思考代码的设计。Rust 并不是魔杖,不能完全根除问题,只是将问题最小化,减少较为明显的危险。

喜欢:没有抽象的编程

Rust 支持编写低级别的字节级别操作,它提供了对 byte 级别的的访问,这种设计使得 Rust 与许多旧的C语言或汇编语言代码共存,这些代码是操作系统和网络堆栈的底层的一部分。借助这点,程序员可以通过这种访问建立好的、反应灵敏的堆栈。

讨厌:byte 级访问有风险

许多语言在发展过程中都避免了 byte 级访问,隐藏访问,可以避免风险。直接的byte 级访问,容易让没有经验的开发者错误的操作内存,导致错误。

喜欢:做垃圾收集的更好方法

许多流行的语言会自动处理内存分配和垃圾收集,比如 Java 和 C#,但垃圾收集器会暂停服务,对于一些时间要求很严格的场景来说,这不是一个很好的设计。比如:自动驾驶,医疗设备运行,那将会是致命的。

Rust 语言有自己的内存管理方法,没有 GC,但可以更强大。优秀的开发者可以使用 Rust 的内存模型提供很好的性能。喜欢 Rust 的开发者,同样也会喜欢亲手操作内存管理。

讨厌:内存管理是一种痛苦

许多流行的编程语言(比如 Java 和 C#)都使用自动内存分配,GC 来实现内存释放,可以防止内存泄漏和其他错误。大多数程序不需要担心垃圾收集 STW 带来的损耗,作为一个程序员,更愿意不担心内存问题。

又爱又恨

结论:Rust 仍在不断发展变化中

我们可以讨论 Rust 是否为异步任务提供了最好的模型,摆脱传统 GC 是否真的有助于开发者等等,但这都源于 Rust 的年轻和创新设计,相比较 C/C 这类的老牌语言,Rust 没有历史包袱,Rust 也确实提供了另外一种的可行方案,他的路才刚开始,我们可以一起期待他的明天。

0 人点赞