📜  为什么 Golang 在开发者中如此受欢迎?

📅  最后修改于: 2021-10-19 07:59:35             🧑  作者: Mango

Golang,也称为“Go”,是一种编译型语言,是一种旨在简单且易于阅读和理解的快速高性能语言。 Go 是由 Rob Pike、Robert Griesemer 和 Ken Thompson 在 Google 创建的,它于 2009 年 11 月首次出现。Golang的语法被设计为非常干净且易于访问。

为什么 Golang 在开发人员中如此受欢迎

Go 发明于 2007 年,当时多核 CPU 架构无处不在,没有任何编程语言可以简化多线程应用程序的开发。安全有效地管理不同线程的责任对开发人员来说是一项巨大的责任。 Go 不同于其他语言;它年轻却如此强大。 Goroutines 在另一个层面上彻底改变了竞争性编程。

经测试证明,在 Go 上编写的应用程序具有高性能和可扩展性。 Golang 是一种非常高效的语言,就像 C/C++ 一样,可以像Java一样处理并行性,并且像Python和 Pearl 一样具有简单的代码可读性。 Golang 与其前辈相比具有无可争辩的架构优势。

Go 被一些大品牌使用,例如 BBC、Uber、Novartis、Basecamp 和 Soundcloud。优步报告了更好的吞吐量、高性能、延迟和正常运行时间。 BBC,世界新闻广播公司的名字,将其用于后端,包括爬虫和网络爬虫。 Soundcloud 的构建和部署系统在 Go 中。

为什么去?

对于具有 C++ 经验的程序员来说,学习起来毫不费力,而且将遗留代码转换为 Go 非常简单明了。作为一种编译的静态类型语言,它比解释性选项快得多,并且还提供了大部分性能优势。 Go 作为一种语言更类似于 C,但是除了 C 特性之外,Go 还提供内存安全、垃圾收集、结构类型和 CSP 风格的并发。

Go 非常适合通用的面向性能的云软件。流行的 DevOps 工具都是用 Go 编写的,比如 Docker,甚至开源的容器编排系统 Kubernetes 也是在 Go 上构建的。 Vitess 是 Google 构建的分布式数据库系统和使用 Golang 构建的 MySQL 后端,自 2011 年以来一直被 YouTube 使用。

Golang 在 2018 年进行的 Stack Overflow 调查中排名第 5。 根据 2018 年 Q2 GitHub 报告,Golang 整体增长率接近 7%,与上一季度相比变化了 1.5。到 2019 年第四季度,Golang 整体增长了 8%。

Golang如此受欢迎的原因?

  • Go 是一种静态类型的编译语言;因此,您可以轻松地及早发现问题。
  • Go 会立即编译为机器代码,因此它使编辑/刷新周期相对较快,并且生成的机器代码仍然相当高效。
  • Go 的设计方式使得编写高度并发的网络程序变得容易。
  • Go 有很多内置的基础设施来支持测试;您可以毫不费力地定义和测试模块;这进一步加强了工程学科。
  • Go 的跨平台特性使得移植代码非常容易,这也是 Go 最显着的优势。
  • Go 提供了自以为是的格式化、linting 和 vet 工具作为包的默认部分,Go 编译器甚至强制执行诸如未使用的变量之类的事情。这使它成为一种专业语言。
  • Go 对并发和并行的原生支持使其如此特别。这使得 Go 成为需要大量并发和/或并行处理、网络、大规模计算等应用程序的完美语言。
  • Go 是云兼容性的最佳选择。 Go 具有更好的垃圾收集设施、良好的网络包和解决未使用变量的问题、多文化和跨文化编译器的问题。

实际案例

1. SendGrid 移动到 Go

早在 2014 年,客户通信平台 SendGrid 就决定将 Go 作为其主要开发语言。 SendGrid 团队需要对他们的开发语言进行根本性的转变,这归结为 Scala、 Java和 Go 之间的竞争. SendGrid 当时在开发中面临的最大挑战是并发编程。将并发异步编程作为语言的一部分的想法是 SendGrid 选择 Go 的最令人信服的原因之一。

2. Hexac 从Python切换到 Go

Hexac 的联合创始人兼首席技术官 Tigran Bayburtsyan 撰写了一篇独家文章,分享了他的公司从Python转向 Go 的原因。根据他们的代码库统计,在用 Go 重写所有项目后,他们得到的代码比之前减少了 64%。由于 Go 内置的语言特性,他们节省了大量资源(内存、CPU)。

Go 为他们的开发团队提供了巨大的灵活性,适用于所有用例的单一语言,并且对所有用例来说,它都运行良好。在 Hexact Inc,他们的后端和 API 服务的性能提高了约 30%。现在,他们可以实时处理日志记录,将其传输到数据库,并通过 Websocket 从单个或多个服务进行流式传输。这是使用 Go 语言特性的杰出成果。

3. Salesforce 为 Go 抛弃了Python

在 2017 年推出 Einstein Analytics 之前,Salesforce 更新了后端,并在谷歌流行的 Go 语言上完全重建。 Salesforce 首席架构师 Guillaume Le Stum 表示,‘Python不能很好地做多线程,而 Go 是为适合谷歌生产系统的重型应用程序构建的,该语言已经过谷歌测试和批准,因此 Salesforce 选择转移爱因斯坦分析, Salesforce 的重要组成部分,从混合 C-Python 应用程序到完全 Go 应用程序。

4. Containerum 选择超越他人

Containerum 是一个容器管理平台,四年来一直使用 Go 作为主要语言,尽管面临一些挑战,但工程团队认为这是一个不错的选择。在 Containerum Platform 上选择 Go 的主要原因是它由一组与系统其他组件通信的较小服务组成。为了确保这一点,非常有必要确保接口兼容性并编写过于简单、易于阅读和维护的代码。

Go 允许添加补丁并允许在代码库中使用现成的组件,例如图像名称解析验证、关键对象模型等,这也是 Containerum 选择 Go 的原因之一。 Containerum 考虑超越其他语言,因为它具有许多 Pro 特性/事实,例如静态类型、极简主义、标准库、出色的性能、超快速编译等等。

5. 流行的 DevOps 工具是用 Go 编写的

谷歌巨头公司考虑用其他语言编写 Kubernetes,包括但据 Kubernetes 联合创始人 Joe Beda 所说,这些语言中没有一种能像 Go 一样有效。 Kubernetes 用 Go 编写的原因有很多。其中一些包括——优秀的库、快速的工具、内置的并发、垃圾收集、类型安全等。 根据 Joe 的说法,Go 中的模式和工具鼓励 Kubernetes 团队制作分解良好且可重用的代码,这些代码将提供它们同时具有高度的灵活性和速度。

Docker 一直是 Go 的最大用户。 Docker 团队喜欢 Go,因为它为他们提供了许多好处:没有依赖项的静态编译、中性语言、完整的开发环境、广泛的强大标准库和数据类型、强大的鸭子类型以及为多种架构构建的能力最小的麻烦。

Istio 是 Kubernetes 生态系统的一部分,也是用 Go 编写的。由于 Kubernetes 也是用 Go 编写的,因此 Istio 用 Go 编写是一个完美的方法。这不仅是众多原因之一,Go 适用于去中心化、分布式网络项目是 Istio 选择 Go 的主要原因之一。

如果您在 GoLang 中编写应用程序,那么实践 CI/CD 有多难?很难,不是吗?嗯,不是现在。借助 Go 的最新创新,例如 Go Center GOPROXY,通往高质量 CI/CD 的道路更加清晰。 GoCenter 是不可变 Go 模块的中央公共集合。它允许您搜索模块和版本,您还可以轻松地将您的模块添加到它以公开共享。