如果让你列出过去十年出现的重要编程语言,几乎可以肯定Go和Rust榜上有名。
同样,如果让你坐下来想想如今哪种编程语言最适合开发对微服务友好且安全的框架或应用程序,你可能发觉在Go和Rust之间难以决定。
如果你难以决定到底是Go还是Rust更适合开发需求,继续读下去。此文比较了Go和Rust,解释了两者的相似和不同之处以及各自能为你做什么。
Go(又叫Golang)于2009年向公众推出,它由谷歌工程师(包括以Unix成名的Ken Thompson)设计。开发Go出于诸多动机,但是开发人员的目标也许可以用此来概括:他们只是想要一种提供C++的效率,但经过优化后更容易在多核CPU上编写、阅读和部署的语言。
为此,Go的独特功能之一是goroutine,它使人们很容易定义作为不同子进程运行的函数。如果充分利用goroutine,开发人员可以用Go轻松构建同时在多个CPU核心上部署工作负载以充分发挥并发性的应用程序。
并发性和优化是强大的功能。这就是我们选择用Go开发Twistlock的原因之一。
Rust的历史在很多方面与Go的历史颇为相似。Rust起初是Mozilla一名工程师的个人项目,诞生于2000年代中期。该语言于2010年公开发布。
与Go一样,Rust的部分动机是希望改进C++的约定,包括使其更易于实现并发性。同时又不降低安全性也是一个主要的考量因素。为此,Rust使开发人员很难将可能导致缓冲区溢出或其他内存相关漏洞的缺陷引入代码中。
Go和Rust在许多方面很相似。它们都是如今广泛使用的新兴编程语言之一。当今大多数其他流行语言的历史久得多,比如C、Java和Python。
Go和Rust都是经过编译的语言,开源,针对面向微服务的现代并行计算环境而设计的。
如果你已经了解C ++,它们都很容易学习。
这可能让你不由得发问:“我该使用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
在使用 Go 编写复杂的服务时,您将遇到一个典型的主题是中间件。这个话题在网上被讨论了一次又一次。本质上,中间件允许我们做了如下事情:这些与 express.js 中间件所做的工作非常类似。
新学习go语言的人可能遇到常见的错误,其中有两个比较常见的错误,需要单独拿出来说下,为什么要单独说呢,因为这两个错误跟其他语言不同,是因为go本身的设计造成的。
Golang 的 1.13 版本 与 1.14 版本对 defer 进行了两次优化,使得 defer 的性能开销在大部分场景下都得到大幅降低,其中到底经历了什么原理?这是因为这两个版本对 defer 各加入了一项新的机制,使得 defer 语句在编译时
在用 Go 编程时,总会遇到各种奇奇怪怪的错误,国内外已经有许多小伙伴总结过(参考链接见参考),感觉都能凑一桌了。希望对大家有所帮助。
本文将介绍展示如何使用 Go 编程语言 来复制文件。在 Go 中复制文件的方法有很多,我只介绍三种最常见的:使用 Go 库中的 io.Copy() 函数调用、一次读取输入文件并将其写入另一个文件
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!