3

如果没有Google这个靠山,Go 凭什么火?

 2 years ago
source link: https://blog.csdn.net/csdnnews/article/details/125087521
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

如果没有Google这个靠山,Go 凭什么火?

translate.png
CSDN资讯 newCurrentTime2.png 于 2022-06-01 17:39:07 发布 articleReadEyes2.png 1988

整理 | 章雨铭 责编 | 屠敏
出品 | CSDN(ID:CSDNnews)

自从2009年开源以来,Go获得了越来越多开发者的喜爱,在最新的TIOBE编程语言排行榜中排名第14。开发者调查分析公司SlashData发布了2021年《开发者报告》显示,Go开发者数量的增长速度是Ruby的两倍。许多大公司比如Facebook、腾讯、百度都有项目使用Go语言,Docker和Kubernetes也都是由Go编写的,另外,Go语言还受到许多云创业公司的喜爱。

那么为什么Go如此受欢迎呢?Go的五位创始人在《Communications of the ACM》一书中揭晓了答案,其中表示,Go的成功之处在于它专注于软件项目设计的整体环境。一方面,Go的以开发为中心的理念让其社区得以蓬勃发展。另一方面,Go社区及其构建的技术最终使得Go成为现代云计算环境的重要组成部分。

在这里插入图片描述

(Tiobe Index排名)

Go的早期发展

Go是一种静态强类型、 编译型语言,在语法上和C语言相近,但Go包含垃圾回收功能,可以自动释放变量不再使用的内存。另外,Go利用了新的多核处理器,在专用内核上运行垃圾回收,以降低对延迟的影响。

并发性是作为Go语言的核心功能提供的,而不是作为单独可选的库提供的。这很大程度上解释了为什么Go是这样建造的。

在Go的成长中吸取了很多谷歌的经验,并且有4000名活跃的开发者共享的庞大的多语言代码库,这些开发者认为需要有一种更好的方法来处理大规模负载。于是Go孕育而生——它是专门设计用于并发性以及为其提供一流的支持,不仅可以有效的处理多个任务,还能同时执行多个任务。

在Go诞生之前,工程师们一直使用着相对笨拙的语法和大小固定的线程堆栈,那时,支持并发的线程并不受欢迎,因为它们不仅难创建而且难以使用和管理。

而解决这个问题是创造Go的主要动机之一。

对开发者的关注贯穿于Go的开发

云服务的发展也为Go带来了更多的使用者。

另外Go相比于其他的语言,还具有一些明显的优势。Go创始人在文中提到,Go “消除了在C和C++程序中导致许多问题的未定义行为”。(例如,如果代码试图运行一些有风险的行为,如解读空指针或使用超出数组或分片界限的索引,Go会简单地抛出一个运行时异常并停止运行程序)。

但Go的创始者认为,Go受欢迎另有原因。Go在构建项目的早期工作中发挥了很大的作用,为软件开发的打包、依赖关系、构建测试、部署和其他的日常工作建立了基础。

这吸引了那些将软件包用在其生态系统的开发者。虽然最初的版本只支持在Linux和MacOS X上使用,但Go社区中热情的开发者们很快就为Go的编译器和库创建了Windows版本,并将它们移植到其他操作系统。

其创始人表示,对开发者的关注贯穿于Go的开发。比如Go中包含对安全通信协议SSL和TLS支持的高质量加密库,以及包括一个内置的HTTPS客户端和服务器(用于与其他系统在线交互)的标准库。

Go处理库的方式也对开发者大有助力:Go的编译器只导入必要的库以包含在其二进制文件中,这避免了为了确保包含一个必要的功能,而导入整个库。

另外,考虑到开发人员的需求,Go允许从其他领域轻松导入外部库(同时还有自动检查兼容版本的方法)。

Go在标准版本中还支持优化技术,如程序剖析,以及对测试功能的支持,如模糊处理。Go甚至有一个代码布局的惯例。(Go的gofmt工具将源代码解析成这种标准化的布局。)gofmt工具和其他内置的工具有助于使Go更容易建立从IDE插件和调试器,到框架和构建自动化的任何东西。Go的创造者认为,他们的语言是专门为鼓励创建工具和自动化而设计的,“因此,Go中有一个丰富的、不断扩展的、互操作的工具包”。

保持一致性

虽然Go的创造者们也承认,在Go最早的几年里,每个星期的发布中都会对进行修补和调整。用户在更新到新的Go版本时,往往不得不改变他们的程序。

不过2012年以来(随着Go第一版的正式发布),Go的更新就只对语言和标准库进行向后兼容的修改,这样程序在编译到较新的Go版本时可以继续运行而不发生变化。

虽然结果并不乐观,但是Go的工具有了极大的发展——更好的编译器,更强大的构建和测试工具以及更多的支持Go的开源工具。

“虽然大多数语言的设计都集中在语法、语义或类型的创新上,但Go却专注于软件开发过程本身。”

——Matt Weagle (@mweagle) 2022年5月11日

文章指出,Go的功能集能够避免开发人员的过度拓展。但是,同时也提到了这一惯例的例外情况,即Go确实增加了一个重要的新功能。两个月前,Go增加了参数化多态性,是 “为适应Go的其他部分而量身定做的…”

“在坚持一致性、完整性和社区原则的情况下做出如此大的语言改变,将是对这种方法的严峻考验”。

Go的创造者表示Go能够有今天的成就和发展,离不开Go社区的成千上万的开源贡献者们。正如Go的创始人所说:“我们感谢每一个帮助Go成就今天的人”。

参考资料:

https://thenewstack.io/what-made-golang-so-popular-the-languages-creators-look-back/


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK