开发人员的困境:选择Go还是Rust?
创始人
2025-03-19 06:20:35
0次

[[279405]]

【51CTO.com快译】如果让你列出过去十年出现的重要编程语言,几乎可以肯定Go和Rust榜上有名。

同样,如果让你坐下来想想如今哪种编程语言最适合开发对微服务友好且安全的框架或应用程序,你可能发觉在Go和Rust之间难以决定。

如果你难以决定到底是Go还是Rust更适合开发需求,继续读下去。此文比较了Go和Rust,解释了两者的相似和不同之处以及各自能为你做什么。

Go编程语言

Go(又叫Golang)于2009年向公众推出,它由谷歌工程师(包括以Unix成名的Ken Thompson)设计。开发Go出于诸多动机,但是开发人员的目标也许可以用此来概括:他们只是想要一种提供C++的效率,但经过优化后更容易在多核CPU上编写、阅读和部署的语言。

为此,Go的独特功能之一是goroutine,它使人们很容易定义作为不同子进程运行的函数。如果充分利用goroutine,开发人员可以用Go轻松构建同时在多个CPU核心上部署工作负载以充分发挥并发性的应用程序。

并发性和优化是强大的功能。这就是我们选择用Go开发Twistlock的原因之一。

Rust编程语言

Rust的历史在很多方面与Go的历史颇为相似。Rust起初是Mozilla一名工程师的个人项目,诞生于2000年代中期。该语言于2010年公开发布。

与Go一样,Rust的部分动机是希望改进C++的约定,包括使其更易于实现并发性。同时又不降低安全性也是一个主要的考量因素。为此,Rust使开发人员很难将可能导致缓冲区溢出或其他内存相关漏洞的缺陷引入代码中。

Go和Rust的共同点

Go和Rust在许多方面很相似。它们都是如今广泛使用的新兴编程语言之一。当今大多数其他流行语言的历史久得多,比如C、Java和Python。

Go和Rust都是经过编译的语言,开源,针对面向微服务的现代并行计算环境而设计的。

如果你已经了解C ++,它们都很容易学习。

Go vs. Rust

这可能让你不由得发问:“我该使用Go还是Rust来开发下一个应用程序?”

可以从多个方面来回答这个问题,但建议从正在构建的应用程序的类型来考虑。在我看来,Go适合更广泛的使用场景,而且更灵活一点。Go让人们很容易构建这种很好地分解的应用程序:可以充分发挥并发性,又可以作为一组微服务加以部署。

Rust也可以做那些事情,不过要难一点。从某些方面来说,Rust专注于防止与内存有关的安全漏洞,这意味着程序员必须竭尽全力执行的任务换成其他语言(包括Go)要来得更简单。

请注意:顺便说一下,这并不意味着Go不安全。Go与其他任何现代编程语言一样安全。它只是不像Rust那样关注安全性或者任由安全性优先于更广泛的功能。

简而言之:Rust较难使用,更加关注构建范围较狭窄的应用程序(安全是唯一重要的方面)。相比之下,Go很适合构建你不仅关注安全性,还关注其他诸多因素的应用程序——如果你是旨在构建灵活可扩展的应用程序或框架的DevOps团队,这可能是你的目标。

同样值得一提的是,Go在当今的开发人员中更受欢迎。TIOBE Index将Go列在最流行编程语言排行榜上的第15位,而Rust排在第34位。我知道你不应该随大流,但在编程界,选择更流行的语言确实有好处。其他程序员更可能了解它们,这使得共享代码或为团队添加成员变得更容易。流行语言还往往有更好的社区支持、文档和插件。

我无法在使用Go还是Rust方面给出明确的建议,那是由于两种语言都是很棒的现代语言,你在决定如何构建新应用程序时最好两者都考虑一下。

话虽如此,与大多数程序员一样,我往往对Go更倾向一点,因为它适合更广泛的使用场景,同时仍提供很高的安全性和性能。

原文标题:The developer’s dilemma: Choosing between Go and Rust,作者:Sonya Koptyev

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
只需三步,让你掌握阿尔法路由器... 请参照以下阿尔法路由器设置方法,通过浏览器进入及设置宽带路由器。经过这三个步骤的设置,基本上能够熟悉...
如何更省钱? 近期特价热门硒鼓... 如今激光打印设备已经成为商务或企业的绝对主力办公设备,但采购者往往忽视了激光打印设备所用的耗材,相对...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...