0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详解GO语言的趋势与使用情况

Linux爱好者 ? 来源:CSDN技术社区 ? 作者:CSDNnews ? 2021-03-17 11:05 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

【导读】Go 语言简单易学、性能优良。JetBrains Blog 发布了Go 语言的调查报告,看看GO 语言当前趋势吧!

在当今流行的编程语言中,Go 语言独树一帜,因为其简单易学、性能强劲且原生支持并发的特点,深受开发者的青睐。Go 语言在技术网站 Stack Overflow 上的关注度也在逐年上升:

近日,JetBrains Blog 针对 Go 语言开发者的做了一项调查报告,从报告中我们发现:

全世界有 110 万专业开发者选择 Go 作为其主要开发语言,其中中国占比最高;

Go 语言份额持续增长,已成为专业开发者的前 10 大主要语言之一;

Go 语言使用场景中,36% 是 Web 服务,31% 是小型程序的开发;

越来越多的金融行业在接触 Go 语言,甚至有银行使用 Go 构建了整个系统。

为什么 Go 语言在中国这么火?

调查结果显示,在全球范围内有 110 万专业开发者选择 Go 作为其主要开发语言。如果把以其他编程语言作为主要开发语言,同时也在使用 Go 的开发者计算在内,这一数字将高达 270 万。

就分布情况而言, 来自亚洲的 Go 语言开发者数量最多,大约有 57 万。

下图显示了使用 Go 作为主要语言的开发者所在国家的分布情况,中国的 Go 语言开发者占比最高,占比 16%。

中国之所以排在首位,或是因为中国开发者总数非常多。像 PingCAP、腾讯和华为都有数万开发者,Go 语言能够支持并构建与微服务结合的内部工具、架构和后端服务,这一点很关键。而俄罗斯的 Go 语言社区也相当出色,Go 在那里深受欢迎是一件很自然的事。

Go 进入编程语言排名前十,占比 7%

自 2009 年推出以来,Go 语言一直在持续增长。根据调查,Go 语言已经成为 2020 年专业开发者的前 10 大主要语言之一,占据来 7% 的份额。

在 JetBrains 《2020 开发者生态系统现状》报告中显示,有 16% 的 JavaScript 开发者计划迁移并转而采用 Go 语言。反观在 Go 开发群体中,没有采用/迁移其他编程语言的用户高达 59%,稳定性最强。

与 PHP 相比,Go 的优势在于类型安全,因为 Go 是静态类型的语言,而 PHP 是动态的。这意味着由编译器将完成大部分工作,确保编写的代码将在运行时能够正常地编译和运行。与 C++ 相比,Go 的优势在于简单。Go 语言中,一切都很直观。

Go 还有一个特点,就是在编写代码和运行时都具有很高的内置速度,Go 语言可以没有任何特殊优化的情况下获得 5-10 倍于平均编程语言的性能提升,这对企业而言是很关键的生产力优势。同时它简单,易于上手,并且很容易替换现有项目中的微服务。

许多 IT 架构工具由 Go 构建而成,例如大型的 Kubernetes、Docker 和 Vault 等。尽管有许多公司在使用 Java,但这些公司也大都会有一个团队运行 Go 语言环境,特别是针对项目的修补和维护。

这或许也是 Go 语言在逐步被更多的人所接受的一个原因,在公共基础架构和部署中使用得越多,Go 的使用增长就越快。

因此,未来几年还会有越来越多的人开始使用 Go,其比例可能会达到总数的 15-20%。在调查中的“您计划在今后一年内采用或迁移到其他语言吗?如果有,是哪些语言?”这个问题里,有 13% 的受访者回答了 Go。

Go 语言最受欢迎的领域是 Web 服务

调查结果显示,Web 服务在 Go 语言开发中的占比达到了 36%。对于 Web 服务,首要任务是创建快速的 API 服务器,它们不一定需要框架,而使用 Go 语言可以快速启动和运行。

在常用 Go 语言的应用领域中,针对第二大应用场景 Utilities(小程序)的开发上,Go 语言有不小的优势,它能轻松实现处理大量数据的快速应用、小型实用程序应用或需要大量功能的一次性任务。

其次,26% 的开发者表示经常在 IT 架构中使用 Go。采用 Docker 和 K8s 的人越多,使用 Go 的人就越多,因为它们都是用 Go 编写的。任何类型的 DevOps 工作都可以从 Go 中受益,因为 Go 提供了类型安全和更快的速度。

使用 Go 语言与云服务的进行结合也非常容易——Google、 Amazon 以及 Azure 等都有很好的 SDK。当未来泛型到来之后,“Libraries / Frameworks” 类的份额还会有一定提升。

Go 语言主要被用在 IT 和金融行业

根据调查,使用 Go 语言的开发者主要从事 IT 服务和金融科技,其次是云计算平台和其它行业。

IT 服务排第一理所应当,而越来越多的金融行业也在接触 Go 语言。现在已经有相当数量的银行已经采用或正在使用 Go 语言开发的基础架构,英国的 Monzo 银行使用 Go 构建了整个系统。云计算平台排第三也很合理,因为它们很多应用程序都是以 Go 编写的。

移动开发排第五是在人意料之外的,要知道 Go 并没有良好的移动开发的历史。还有几个行业的 Go 语言使用率预见在短期内不会出现增长,例如基于机器学习的领域,那是 Python 的强项。Go 语言的机器学习也在朝着更普及、更优良的方向前进,但至少还要再过几年才能真正看到成果。

Go 语言工具的使用情况

Go 语言开发者最喜爱的软件包管理器是 Go Modules,调查显示,其采用率从 2019 年的 41% 上升至 2020 的 82%。在某种程度上,这已经没有疑问了,因为 Go Modules 已经被设置为标准默认模型,并且 Go 团队也想弃用 GOPATH,甚至其它的都可能会被淘汰。

自 2018 年以来,Gorilla / Mux 和标准库始终是最常用的 Go 路由器。标准库之所以如此受欢迎,可能是因为无论在 Reddit、Slack 还是其他地方,人们通常都会建议坚持使用标准库,不到万不得已不会换用其他东西。

Gorilla / Mux 因为在标准库的基础上更加抽象,且性能不会受太多影响,它使编写服务器更容易,也是最接近标准库的一个。

根据调查,自 2018 年以来,Gin 的使用量几乎翻了一番,而其他 Web 框架基本保持稳定。Gin 在 Web 上如此受欢迎,可能因为它是一个快速框架,得到了很好的推荐,同时也是最古老的框架之一,所以有很多现成的文档,很多用户都在使用和推荐它。

使用内置测试的开发者比例从 2018 年的 64% 下降到 2020 年的 44%,而其他测试框架的使用量略有增长。内置测试占比很高,是因为 Go 标准库有一个非常好的开箱即用的测试库,它的下降可能是因为越来越多的人转移自其他语言,比如 PHP,他们更倾向于重复他们已有的测试习惯。

小结

使用 Go 语言的开发者数量相比 C++ 和 Java 等传统语言少,有 38% 的开发者了解 Java,19.3% 的开发者了解 C++,仅有 4.6% 的开发者知道 Go。

但 Go 语言的使用者多年来始终在持续增长,Stack Overflow 2020 调查显示,开发者最希望学习的编程语言里 Go 语言位列前三。Hacker Rank 的调查显示,Go 连续 3 年荣登开发人员最想要学习的语言第一名。

于此同时,Go 语言开发者的薪资也水涨船高。据职友集统计,中国 Go 语言开发工程师的平均月工资为 21.8k 。从全球范围来看,Go 语言的开发者的薪酬也是位列前茅,结合其并不高的声量和使用率,可以说是「闷声赚大钱」了。
编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IT
    IT
    +关注

    关注

    2

    文章

    893

    浏览量

    64520
  • go语言
    +关注

    关注

    1

    文章

    159

    浏览量

    9398

原文标题:揭晓 Go 语言真实现状!

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    OBC/DC-DC/BMS/热管理/智能座舱磁性元件使用情况与要求

    理/智能座舱等功能模块中磁性元件使的用情况与性能要求,《磁性元件与电源》采访了敦源电子研发总监汪洪伟,为我们一一揭秘。 OBC/DC-DC/BMS/热管理/智能座舱磁性元件使用情况 随着新能源汽车向高集成化、智能化方向加速发展,磁性元件作为电子系统的“隐
    的头像 发表于 07-08 14:05 ?172次阅读
    OBC/DC-DC/BMS/热管理/智能座舱磁性元件<b class='flag-5'>使用情况</b>与要求

    请问如何优化OpenVINO?工具套件中的内存使用?

    运行OpenVINO?推断时找不到优化内存使用情况的方法。
    发表于 06-25 06:56

    S32G3有没有办法从.map文件确定SRAM使用情况

    我有 NXP S32G3 板。我有 .map 文件。有没有办法从 .map 文件确定 SRAM 使用情况。 非常感谢帮助。
    发表于 04-08 06:00

    HarmonyOS NEXT 原生应用/元服务-DevEco Profiler性能问题定界实时监控

    步骤来查看应用的实时资源使用情况。 您可以通过如下三种方式打开DevEco Profiler: 在DevEco Studio顶部菜单栏中选择“View -> Tool Windows
    发表于 02-21 14:35

    HarmonyOS NEXT 原生应用/元服务-DevEco Profiler性能问题定界实时监控

    步骤来查看应用的实时资源使用情况。 您可以通过如下三种方式打开DevEco Profiler: 在DevEco Studio顶部菜单栏中选择“View -> Tool Windows
    发表于 02-20 10:14

    激光在Micro LED显示技术的应用情况

    探索激光技术的多元应用与前沿进展 今天研习激光在微加工领域的应用,核心内容为激光在Micro LED显示技术的应用情况。《Recent progress of laser processing
    的头像 发表于 12-07 11:16 ?1491次阅读
    激光在Micro LED显示技术的应<b class='flag-5'>用情况</b>

    Linux下如何管理虚拟内存 使用虚拟内存时的常见问题

    查看虚拟内存使用情况 : 使用 free 命令可以查看当前的虚拟内存使用情况,包括物理内存、交换空间等的使用情况。 调整交换空间大小 : 如果需要调整交换空间的大小,可以使用 swapoff 命令关闭现有的交换空间,然后使用
    的头像 发表于 12-04 09:19 ?1392次阅读

    在学习go语言的过程踩过的坑

    作为一个5年的phper,这两年公司和个人都在顺应技术趋势,新项目慢慢从php转向了go语言,从2021年到现在,笔者手上也先后开发了两个go项目。在学习
    的头像 发表于 11-11 09:22 ?499次阅读

    LMX2592正常使用情况下温度大概有多少?

    你好,LMX2592如果将 OUTA_PD = 1;OUTB_PD = 1;为什么芯片还是很烫,正常使用情况下温度大概有多少,对于温度的变化可以提供一下参考吗
    发表于 11-08 08:32

    go语言如何解决并发问题

    作为一个后端开发,日常工作中接触最多的两门语言就是PHP和GO了。无可否认,PHP确实是最好的语言(手动狗头哈哈),写起来真的很舒爽,没有任何心智负担,字符串和整型压根就不用区分,开发速度真的是比
    的头像 发表于 10-23 13:38 ?543次阅读
    <b class='flag-5'>go</b><b class='flag-5'>语言</b>如何解决并发问题

    TMS320C64x在高性能DSP应用中的高速缓存使用情况

    电子发烧友网站提供《TMS320C64x在高性能DSP应用中的高速缓存使用情况.pdf》资料免费下载
    发表于 10-21 09:43 ?0次下载
    TMS320C64x在高性能DSP应用中的高速缓存<b class='flag-5'>使用情况</b>

    国产8位单片机在国内的应用情况及发展趋势

    分享国产8位单片机的应用情况、市场现状及其未来发展趋势。 8位单片机是指其数据总线宽度为8位的微控制器,通常包括中央处理单元(CPU)、存储器和输入输出端口等。国产8位单片机因其简单的结构和良好的性价比
    发表于 09-26 16:09

    蓝牙人员定位有哪些亮点功能?

    。进出厂统计根据人员定位情况详细记录外来人员进出厂时间和停留时长,实时统计各外来单位人员进出厂情况及数量。 标签使用情况统计系统后台会对标签使用情况进行统计,对于外委人员长时间(时间可
    的头像 发表于 09-13 11:05 ?505次阅读
    蓝牙人员定位有哪些亮点功能?

    三十分钟入门基础Go Java小子版

    前言 Go语言定义 Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态、强类型、编译型语言
    的头像 发表于 08-12 14:32 ?1019次阅读
    三十分钟入门基础<b class='flag-5'>Go</b> Java小子版

    如何使用SystemView的堆监控功能

    SystemView能够监视应用程序如何使用动态存储。这意味着,如果应用程序中使用了C或C++堆、自定义堆或RTOS提供的内存池对象,我们可以跟踪这些对象的使用情况。SystemView可以在一个
    的头像 发表于 08-09 18:07 ?1381次阅读
    如何使用SystemView的堆监控功能