为什么 Go 在开发者中如此受欢迎
Go,也称为 Golang ,是一种编译型语言,它快速且高性能,旨在简化代码,易于阅读和理解。Go 由 Google 的 Rob Pike、Robert Griesemer 和 Ken Thompson 创建,于 2009 年 11 月首次发布。Golang
的语法设计得非常简洁易懂。
Go 简介
Go 诞生于 2007 年,当时多核 CPU 架构已是普遍现象,没有任何编程语言能够简化多线程应用程序的开发。安全高效地管理不同线程对开发人员来说是一项艰巨的任务。Go 与其他语言不同,它虽然年轻,但功能强大。Goroutines 则从
另一个层面彻底改变了竞技编程。
经过测试和证明,使用 Go 编写的应用程序具有高性能和可扩展性。Golang 是一种非常高效的语言,就像 C/C++ 一样,能够像 Java 一样处理并行操作,并且像 Python 和 Pearl 一样具有易读性。Golang 相比其前辈,拥有无可争议的架构优势。
Go 已被 BBC、Uber、诺华、Basecamp 和 Soundcloud 等知名品牌采用。Uber 报告称其吞吐量更高、性能更佳、延迟更低、正常运行时间更长。世界新闻广播巨头 BBC 将 Go 用于后端,包括爬虫和网页抓取工具。Soundcloud 的构建和部署系统也使用 Go 语言。
以下是 Go 编程语言的 Google 趋势概览。它正在稳步发展。
为什么选择 Go?
对于具有 C++ 经验的程序员来说,学习 Go 非常容易,而且将遗留代码转换为 Go 也相当简单。作为一种编译型、静态类型的语言,它比解释型语言快得多,并且能够提供大部分性能优势。
-
Go 作为一种语言与 C 更相似,但是除了 C 特性之外,Go 还提供内存安全、垃圾收集、结构类型和 CSP 风格并发。
-
在最近的StackOverflow 2020 调查结果中发现,Go 是开发人员最喜爱和最想要的编程语言之一。
-
Go 非常适合通用的性能导向型云软件。流行的 DevOps 工具都是用 Go 编写的,例如 Docker,甚至开源容器编排系统 Kubernetes 也是基于 Go 构建的。Vitess是一个由 Google 构建的分布式数据库系统,其 MySQL 后端使用 Golang 语言构建,自 2011 年以来一直被 YouTube 使用。
-
Golang 在 2018 年Stack Overflow 调查中位居第五。根据 2018 年第二季度GitHub 报告,Golang 整体增长率接近 7%,环比增长 1.5%。而到 2019 年第四季度,Golang 的整体增长率已达 8%。
Go 如此受欢迎的原因
-
Go 是一种静态类型的编译语言;因此您可以轻松地及早发现问题。
-
Go 可以立即编译为机器代码,因此编辑/刷新周期相对较快,并且仍然可以生成相当高效的机器代码。
-
Go 的设计方式使得编写高度并发、网络化的程序变得容易。
-
Go 带有大量内置基础设施来支持测试;您可以毫不费力地定义和测试模块;这进一步加强了工程学科。
-
Go的跨平台特性使得代码的移植变得非常容易,这是Go最显著的优势。
-
Go 默认提供了规范的格式化、linting 和 vet 工具,Go 编译器甚至会强制执行未使用变量之类的操作。这使得 Go 成为一门专业的语言。
-
Go 原生支持并发和并行,这让它如此特别。这使得 Go 成为需要大量并发和/或并行处理、网络、海量计算等应用程序的理想语言。
-
Go 的云兼容性最佳。Go 拥有更强大的垃圾回收机制、良好的网络封装,并解决了变量未使用的问题,同时支持多种编译器和跨文化编译器。
让我们看一些实际案例,了解还有谁在使用 Go 以及为什么使用 Go。
SendGrid 已迁移至 Go
客户沟通平台 SendGrid 早在 2014 年就决定将 Go 作为其主要开发语言。SendGrid 团队需要对其开发语言进行根本性的转变,而这最终导致了 Scala、Java 和 Go 之间的竞争。
SendGrid 当时在开发过程中面临的最大挑战是并发编程。将并发异步编程作为语言的一部分,是 SendGrid 选择 Go 语言的最有力理由之一。
完整内容请参阅他们的博客“如何说服你的公司使用 Golang ”
Hexac 从 Python 切换到 Go
Hexac 联合创始人兼首席技术官 Tigran Bayburtsyan 撰写了一篇独家文章,分享了公司从 Python 迁移到 Go 的原因。根据他们的代码库统计数据,在用 Go 重写所有项目后,他们的代码量比之前减少了 64%。
得益于 Go 的内置语言特性,他们节省了大量资源(内存、CPU)。
Go 为他们的开发团队提供了极大的灵活性,让他们能够用一种语言处理所有用例,并且对所有用例来说,Go 都运行良好。在 Hexact Inc,他们的后端和 API 服务的性能提升了约 30%。现在,他们可以实时处理日志记录,将其传输到数据库,并通过 Websocket 从单个或多个服务进行流式传输。这是使用 Go 语言特性带来的卓越成果。
Salesforce 放弃 Python,转而使用 Go
在 2017 年推出 Einstein Analytics 之前,Salesforce 更新了后端,并完全基于谷歌广受欢迎的 Go 语言进行了重建。Salesforce
首席架构师 Guillaume Le Stum 表示:“Python 的多线程处理能力不佳,而 Go 语言专为适合谷歌生产系统的大型应用程序而构建,并且已经过谷歌的测试和认可,因此 Salesforce 决定将 Einstein Analytics(Salesforce 的核心组件)从 C-Python 混合应用程序迁移到纯 Go 应用程序。点击此处阅读原文:《Salesforce 在 Einstein Analytics 中放弃 Python,转而使用谷歌的 Go 语言》
Containerum 选择 Go
Containerum 是一个容器管理平台,大约四年前他们就开始使用 Go 作为主要语言。尽管面临一些挑战,但工程团队认为 Go 是一个不错的选择。Containerum 平台选择 Go 的主要原因是它由一组较小的服务组成,这些服务与系统的其他组件进行通信。为了确保这一点,非常有必要确保接口兼容性,并编写简单、易读和易维护的代码。Go
支持添加补丁,并允许使用代码库中现有的组件,例如镜像名称解析验证、关键对象模型等,这也是 Containerum 选择 Go 的原因之一。Containerum
之所以选择 Go 而不是其他语言,是因为它具有许多优点/优势,例如静态类型、极简主义、标准库、出色的性能、超快的编译速度等等。
在此处阅读完整故事“我们为什么使用 Go 为 Kubernetes 开发 Containerum 平台” 。
流行的 DevOps 工具都是用 Go 编写的
Kubernetes、Docker 和 Istio
巨头谷歌曾考虑用其他语言编写 Kubernetes,但Kubernetes 联合创始人Joe Beda认为,这些语言中没有一种能像 Go 那样高效。Kubernetes 选择 Go 编写的原因有很多,包括强大的库、快速的工具、内置的并发性、垃圾回收、类型安全等等。Joe 认为,Go 中的模式和工具鼓励 Kubernetes 团队编写结构良好且可复用的代码,从而同时提供高度的灵活性和速度。
Docker一直是 Go 的最大用户。Docker 团队之所以喜欢 Go,是因为它提供了许多优势:无依赖的静态编译、中立的语言、完整的开发环境、丰富的强大标准库和数据类型、强大的鸭子类型,以及能够以最小的干扰为多种架构构建的能力。
Istio是 Kubernetes 生态系统的一部分,也是用 Go 编写的。
由于 Kubernetes 也是用 Go 编写的,因此用 Go 编写 Istio 是一个完美的选择。这不仅仅是其中一个原因,Go 适合用于去中心化、分布式网络项目也是 Istio 选择 Go 的主要原因之一。
更多信息,请参阅“ 10 个证明 Google Go 强大功能的开源项目”
如果你用 GoLang 编写应用程序,那么实践 CI/CD 有多难?很难,不是吗?
现在还不行。有了 Go 的最新创新,例如Go Center GOPROXY,通往高质量 CI/CD 的道路更加清晰。GoCenter 是一个不可变 Go 模块的中央公共集合。它允许您搜索模块和版本,也可以轻松地将您自己的模块添加到其中并公开共享。
文章来源:https://dev.to/pavanbelagatti/why-is-go-so-damn-popular-among-developers-2d6h