整理 | 苏宓

出品 | CSDN(ID:CSDNnews)

诞生于 2009 年,崛起于服务器端,作为 Google 亲手开发出来的 Go 语言,还记得彼时 Google 资深软件工程师 Rob Pike 曾评价道,“Go 语言可以让我们体验到从未有过的开发效率。”

针对这一点,在 Go 社区最新发布的《2020 年 Go 开发者报告》也再次得到了证实,根据调研数据显示,有 81% 的开发者对 Go 的开发效率给了好评。

除此之外,本报告在调研了全球 9648 位极具代表性的开发者之后,还有了以下重要发现:

  • Go 的应用范围在开发者的日常工作及企业中不断扩大,76% 的受访者表示在工作中使用了 Go 语言,66% 的受访者表示 Go 对其公司的发展起到了至关重要的作用;

  • 92% 的开发者对使用 Go 语言感到满意;

  • 受访者表示会及时升级到最新的 Go 版本,其中当最新版本发布时,76% 的开发者会在五个月内进行升级;

  • 使用 pkg.go.dev 的受访者(91%)比非用户(82%)更能找到 Go 软件包;

  • Go 模块的使用率广泛,且满意度高达 77%,但受访者表示在使用 Go 语言过程中,官方文档亟需改进;

  • Go 常被用于 API、CLI、Web、DevOps 和数据处理。

Go 语言的开发者基本画像

和 2019 年并没有太大差别,2020 年,无论是组织规模、开发者的经验和行业的部分并没有太多的变化。

2020 年,使用 Go 语言开发的组织集中在 100-999 人的规模。

从事 Go 语言开发的开发者相对而言有一定的经验积累,拥有 3-5 年和 6-10 年开发经验的人数占比持平,均为 22%。

使用 Go 语言的开发者主要聚焦在科技行业,其次是金融服务行业。

不过,几乎一半(48%)的受访者表示使用 Go 语言的时间不到两年。到 2020年,那些使用不到一年的 Go 开发者变少了。

多位受访者表示,他们在工作中(76%)和工作外(62%)使用 Go。同时,每年在工作中使用 Go 语言的开发者人数一直呈现上升趋势。

在工作职责方面,有 70% 的开发者表示工作中主要的任务是开发软件和应用程序,其次,相当一部分(10%)的受访者正在设计 IT 系统和架构。

在开源领域,75% 的受访者表示他们“很少”或“从不”投身 Go 开源项目贡献中。

VS Code 最受欢迎,Linux 平台应用最频繁

与往年一样,绝大多数被调查者表示在 Linux(63%)和 macOS(55%)系统上使用 Go 语言来开发。不过,随着时间的流逝,基于 Linux 平台上进行开发的受访者比例似乎略有下降。

VS Code 稳居最受欢迎的编辑器的榜首,占比 41%。而 GoLand 仅次于它(35%)。

63% 开发者经常花费了 10-30% 的时间进行项目重构,这表明这是一项常见的任务。

在了解到去年 90% 的开发者都在使用文本日志进行调试后,今年 Go 社区对其背后的原因进行了探析,发现 43% 喜欢用文本日志的原因是因为它允许在不同的语言下可以使用相同的调试方法。不过,也存在 27% 的受访者不知道如何开始使用 Go 的调试工具,以及 24% 的人从未尝试过 Go 的调试工具。

Go 语言应用现状:最常用于 Web 开发领域

构建 API/RPC 服务(74%)和 CLI(65%)仍然是 Go 的最常见用法。同时,根据调查发现,科技巨头公司和创业型公司使用 Go 语言的方式相类似。

另外,Go 社区对受访者深入调查后,也发现一个现象。尽管 Web 服务是 Go 常用的第四大方向,但是不少开发者表示,此举大多数与日常的工作无关。

与此相比,更多的开发者在工作中是将 Go 应用于自动化/脚本、代理和守护进程、工作的数据处理等方面。而在台式机/ GUI 应用程序、游戏和移动应用程序中使用 Go 语言,也大多数是开发者自己的一个兴趣而不是本职工作方向。

在今年报告中,Go 官方社区还新增了一个问题——对于每个使用 Go 语言编写的程序,开发者的满意度如何?

据了解,有 85% 的受访者表示对 Go for CLI 的使用感到非常、中等或略微满意。

在细分的应用方向,基于 CLI 开发最常用的平台,93% 的用户用了 Linux 平台,59% 的开发者基于 Mac 平台。

在将 Go 语言应用于数据处理领域时,据数据调查发现,Kafka 是唯一被广泛采用的引擎,但五成的开发者表示,他们将 Go 与定制数据处理引擎一起使用。

使用 Go 语言,最常见的领域是 Web 开发(68%)。其次,数据库、DevOps、网络编程、系统编程等方向也是 Go 常用的领域。

Go 模块最受欢迎

相比 2019 年,今年 Go 模块的使用率进一步增加,且将模块用于软件包管理的人数比例也在上涨。96% 的受访者表示,他们正在使用模块进行软件包管理,而去年这一比例为 89%。

同时,87% 的受访者称他们仅使用模块包管理,也减少了其他软件包管理工具的使用。

除此之外,对模块使用的满意度也从 2019 年的 68% 上升到了今年的 77%。

官方文档的使用较为困难

有不少受访者表示,在使用官方文档时遇到了一定的困难。其中,难以从官网找到足够的技术指导来完全实现应用程序的人占比 62%。

官方文档中最有问题的地方是使用模块和 CLI 开发,有 20% 的受访者认为模块文档稍微有用或根本没有帮助,而 16% 的开发者认为 CLI 开发文档的作用微乎其微。

Go 上云

据 Go 官方社区表示,Go 语言在设计之初就考虑到了现代分布式计算,借此,也希望继续改善开发者使用 Go 构建云服务的体验。

根据调查结果显示,在使用全球三大云计算厂商(AWS、Google Cloud Platform 和微软 Azure)的群体中,使用 Go 语言的人数持续增加。

Go 语言中的那些坑

使用 Go 语言开发,不少受访者也表示遇到了各种各样的难题。

其中,54% 的开发者表示,无法使用 Go 语言的原因是日常工作中不得不使用另一门编程语言,也有 34% 的人表示是发自内心地喜欢另一门编程语言,此外,26% 的开发者认为 Go 本身缺乏关键功能。

在 26% 宣称 Go 缺乏所需语言功能的受访者中,有 88% 的人选择了 Generics 选项。其次,其他一些重要的缺失功能包括更好的错误处理(58%)、Null 安全(44%)、功能编程功能(42%)和更强大/扩展的类型系统(41%)。

在这里需要值得注意的是,以上仅是一部分受访者的看法,他们表示,如果不是缺少某一关键功能,他们可能会更喜欢 Go 语言,以及使用也会更频繁。

据调查显示,18% 的开发者表示在使用 Go 语言时遇到的最大挑战也是缺乏 Generics,针对这一点,早在 2014 年国内知名的软件工程师王垠就曾评价道,“相比 C++、Java,Go 缺乏 Generics,正因此,开发者不得不重复写很多函数,每一个只有类型不同。或者你可以用空 interface {},然而这个东西其实就相当于 C 的 void* 指针。使用它之后,代码的类型无法被静态的检查,所以其实它并没有 generics 来的严谨。”

其次,模块/软件包管理、学习曲线/最佳实践/文档也是 Go 开发者颇为头疼的难题。

最后

就 Go 语言而言,一直以来,开发者对其评价不一。不久前,据网络安全公司 Intezer 发布的报告显示,自 2017 年来 Go 编写的恶意软件数量增加了近 2000%,对此,有网友甚至将其定义为不安全的编程语言,当然现实来看,用 Go 编写恶意软件与 Go 语言本身不安全实则完全是两回事;同时也有人不断吐槽 Go 语言缺乏函数式编程、缺少框架等等。

然而,正如 C++ 编程语言之父 Bjarne Stroustrup 曾说过,“世界上只有两种编程语言:一种是人们抱怨的语言,另一种是没人使用的语言。

一定程度,业界对 Go 语言热议的背后也彰显了 Go 语言的繁盛发展。你使用过 Go 语言吗?在使用过程中,又遇到了哪些“小麻烦”或 Get 了哪些“小技巧”?欢迎下方留言分享你的使用心得吧~~

更多内容详见报告:https://blog.golang.org/survey2020-results

调查了9648位Go用户:吐槽最多的竟是官方文档!相关推荐

  1. 对 Windows 官方文档的一点吐槽

    对 Windows 官方文档的一点吐槽 正文 当你在百度搜 Windows 系统的一些问题,所见之处尽是<小编来教大家><第一步第二步第三步第四步第五步--><方法一方法 ...

  2. 解决Nacos无法连接Mysql8.0+的问题(坑爹的阿里官方文档,已无力吐槽)

    如果你的mysql是8.0以上的的就不要在参考阿里的官方文档了,因为阿里的文档只适用于mysql5版本,再次吐槽一下,阿里的文档才是真正的挖坑埋人!!!,以下才是标准的配置过程 1 初始化mysql数 ...

  3. mysql505复位密码_mysql5 如何复位根用户密码[官方文档]

    如何复位根用户密码 如果你从未为MySQL设置根用户密码,服务器在以根用户身份进行连接时不需要密码.但是,建议你为每个账户设置密码如果你以前设置了根用户密码,但却忘记了该密码,可设置新的密码.下述步骤 ...

  4. django官方文档——django中的用户认证

    Django 中的用户认证¶ Django 自带一个用户认证系统,这个系统处理用户帐户.组.权限和基于 cookie 的会话.本文说明这个系统是如何工作的. 概览¶ 认证系统由以下部分组成: 用户 权 ...

  5. iphone原彩显示对眼睛好吗_iPhone12又拉胯?用户吐槽屏幕发黄,到底是为啥?

    原标题:iPhone12又拉胯?用户吐槽屏幕发黄,到底是为啥? 你的iPhone 12 屏幕发黄吗? 来源|前瞻经济学人APP 作为科技界最让人关注的产品之一,新款iphone发布以来一致话题不断.此 ...

  6. pixel1代android11,Pixel用户吐槽Android 11:升级后性能被劣化

    原标题:Pixel用户吐槽Android 11:升级后性能被劣化 前不久, Android11正式版发布,除了谷歌Pixel系列亲儿子手机,OPPO.小米.一加等也纷纷跟进升级. 要说谷歌对Andro ...

  7. python 长度为8-10位的用户密码 : 包含数字字母下划线 正则表达式(简单易懂,代码可以指运行)

    python 长度为8-10位的用户密码 : 包含数字字母下划线 正则表达式(简单易懂,代码可以指运行) 用\w,[0-9a-zA-Z_]都可以匹配上去嗷~~,直接上代码: #匹配8-10位用户密码: ...

  8. Redis 基础 -- 数据类型实践案例(限制每个用户每分钟最多发起10次调用、微信接收消息顺序)

    文章目录 1. 数据类型实践案例 1.1 实践案例1:限制每个用户每分钟最多发起10次调用 1.2 实践案例2:微信接收消息顺序 1. 数据类型实践案例 1.1 实践案例1:限制每个用户每分钟最多发起 ...

  9. php汽车购买意向调查,2012年中国汽车用户购买意向调查报告(已购汽车篇)

    近年来,随着国民生活质量的日渐提高,汽车已经逐渐成为普通家庭日常生活的必需品,越来越多的消费者开始考虑购买属于自己的汽车.为了更好了解中国消费者对于汽车的消费需求,互联网消费调研中心ZDC进行了本次调 ...

最新文章

  1. 在windows下安装concurrentlua
  2. 面试:那些问哭你的Redis分布式锁!
  3. vue路由切换组件没有加载_vue-router 路由跳转后没有加载组件
  4. [BTS06]BizTalk2006 SDK阅读笔记(一) 角色
  5. 只用2000行代码实现google protocol buffer c++版的功能
  6. onclick 源码_精读:手写React框架 解析Hooks源码
  7. 一个人独立完成一个网站上线的前前后后
  8. 深度学习3-tensorflow2.0模型训练-自定义模型训练
  9. 物联网的“最好”与“最坏”之间往往只差了一个“安全”
  10. 计算机学院实验报告 课程名称 .NET程序设计 实验名称 实验四 CSS+DIV网页布局与样式
  11. Web2.0浪潮下的广播电视业
  12. OA系统中的任务管理
  13. c语言用星号编写矩形,c语言星号打印矩形三角形菱形等图案.doc
  14. c语言实现计算函数在某点的导数近似值
  15. fasterrcnn中ROI Pooling 与 SPP 理解
  16. office2018自动图文集_学会使用Word自动图文集,让你事半功倍
  17. [转]嵌入式GIS技术之浅析
  18. 坏消息:百度影音、快播关闭P2P服务器!
  19. English语法_不定式 - 常用句型
  20. html输入浮点型,对于input框限定输入值为浮点型的js代码

热门文章

  1. 【编程珠玑】第九章 代码调优
  2. 用并查集合并不同的集合
  3. NFV-Bench A Dependability Benchmark for Network Function Virtualization Systems
  4. RenderMonkey 练习 第一天 【opengl 纹理】
  5. java基础_集合List与Set接口
  6. Linux 命令:ls
  7. 【转】当inline-block和text-indent遇到IE6,IE7
  8. F-Spot 0.3.2
  9. 机器学习模型在线校验交互示例
  10. MySQL 连接报错:mysql access denied for user@ip