关于Go、Rust和Zig,你需要知道什么

B站影视 港台电影 2025-03-28 09:25 1

摘要:自推出以来的十年左右,Go已经找到了一些蓬勃发展的利基市场。网络或网络服务,特别是那些具有异步行为的服务,很容易用Go编写。在这方面,它已成为Python的强大替代品。Go可以扩展,以处理比Python更多的流量,而且花费更少的努力。作为独立二进制文件交付的应

Go、Rust和Zig是过去十年中最受欢迎的三种新编程语言。以下是您需要了解的关于它们的最佳用途、功能以及它们的走向。

每种语言都有一个生命周期。有时它从一个相对狭窄的用例开始,然后逃离其容器;有时它打算作为一种通用语言,但却找到了一个强大的利基。

在过去十多年里,三种新语言在软件开发领域成为引人注目的语言。在本文中,我们将研究每种语言的特殊之处,以及它们可能走向何方。

Go

谷歌创建的Go语言具有相对最小的语法、简单的范式和方便的部署工具,使编写快速、紧凑的程序变得更容易,不需要开发人员对内存安全进行重大考虑。

自推出以来的十年左右,Go已经找到了一些蓬勃发展的利基市场。网络或网络服务,特别是那些具有异步行为的服务,很容易用Go编写。在这方面,它已成为Python的强大替代品。Go可以扩展,以处理比Python更多的流量,而且花费更少的努力。作为独立二进制文件交付的应用程序,如命令行工具,是另一个适合Go的应用程序。编译的Go程序可以在没有外部依赖项的情况下运行,并且可以为每个主要平台构建。

Go最大的障碍和开发人员的抱怨通常源于其主要卖点之一:语言的刻意简单性。Go的维护者试图保持其语法和功能集尽可能的无冒险和不变,目标是保持向前兼容。

但Go的选择也可以感觉像是对编程语言在过去几十年中获得的强大功能的有所冷落的。通用是最近才添加到Go中,错误处理比其他任何东西都更接近C的做事方式。在一个行动太快和打破太多东西的世界里,这是一个值得欢迎的态度。它还强制执行发展限制,对于依赖Go的项目来说,发展限制可能难以摆脱。

Rust

当一个程序需要内存安全和速度时,Rust是经常涌上列表顶部的语言。Rust的整个m.o.正在提供快速的机器原生代码,无法制造整个内存安全错误,因为它们根本无法进入生产。

围绕Rust及其力量的热情爆发,使它拥有广泛的用例领域。大多数是服务器端、云计算、分布式系统或以网络为中心的应用程序——这些应用程序曾经通常只有Java或C++的领域。它还在WebAssembly世界中找到了强大的存在,因为它可以原生编译为WASM,因此可以在许多其他上下文中重复使用。

Rust最有新闻价值的应用,如果不是使用最广泛的,也是在现有“棕地”项目中取代C/C++代码。Linux内核维护者正在制定(尽管有些困难)计划,以战略性地将Rust代码纳入内核中。这不是完全排除C的使用,而是使用Rust,因为它将以最小的额外维护负担(例如,设备驱动程序)提供最大的回报。目标是增强内存安全性,而不强迫Linux内核C开发人员在Rust中重新装备,如果他们不想的话。

一些Linux内核开发人员抵制此举,理由是对该语言的常见抱怨,例如其陡峭的学习曲线和提前的复杂性。Rust的内存安全要求程序员提前思考如何满足编译器的需求,适应这种心态是Rust新手的常见仪式。此外,Rust项目通常需要数十个或数百个外部依赖项,以减慢编译时间,这是JavaScript世界中类似蔓延的回声。

毫无疑问,对内存安全性和速度的需求。理想的是Rust的更精简版本,或者一种在没有Rust概念开销的情况下提供相同优势的新语言。然而,就目前而言,毫无疑问,Rust已经激励了一代想要它所提供的东西的开发人员。

Andrew Kelley的一个人编程语言项目于2015年启动,既是C的补充,也是C的竞争对手。Zig的目标空间与C语言非常相同:低级、非垃圾收集、便携式语言的世界。Zig还编译成与C相同的目标,包括WebAssembly。

然而,与C不同,Zig具有原生功能,使其更容易编写内存安全的低级代码。与Rust(这个空间的另一种主要语言)不同,Zig并不要求程序员为了正确性而如此努力工作。内存管理是手动完成的,但该语言比C语言在处理内存方面提供了更多的句法工具。一个例子是Zig'sdefer语句,用于清理范围末尾的资源。许多常见的运行时问题,如整数溢出,默认情况下被捕获,并且可以精细地覆盖(尽管仅在给定的范围内),但默认是面向安全的。

Zig旨在取代C的一种方式是优雅地与它融合——并排坐着,甚至使用C自己的库。这为那些开发C应用程序的人提供了一条通往Zig的过渡路径,无需报废和重做一切。Zig编译器甚至可以作为C编译器,并且可以使用C ABI构建Zig库,以允许C使用Zig代码。

齐格语最大的障碍是任何新语言的典型。语言本身处于变化中(其当前版本为0.15),在途中的任何时候都有可能发生突破性变化。它旨在取代的遗留世界——C“电影宇宙”——也根深蒂固,不仅包括语言,还包括C的发展文化。

然而,新语言的另一个共同障碍——在通用编辑器和IDE中的工具——似乎正在迅速消散。Visual Studio Code中的Zig插件提供了编译器本身,而不仅仅是一个语言服务器,作为编辑器的易集成组件。

来源:AI中国

相关推荐