整理 | 苏宓
出品 | CSDN(ID:CSDNnews)
诞生于 2009 年,崛起于服务器端,作为 Google 亲手开发出来的 Go 语言,还记得彼时 Google 资深软件工程师 Rob Pike 曾评价道,“Go 语言可以让我们体验到从未有过的开发效率。”
针对这一点,在Go 社区最新发布的《2020 年 Go 开发者报告》也再次得到了证实,根据调研数据显示,有81% 的开发者对 Go 的开发效率给了好评。
除此之外,本报告在调研了全球 9648 位极具代表性的开发者之后,还有了以下重要发现:
Go 语言的开发者基本画像
和 2019 年并没有太大差别,2020 年,无论是组织规模、开发者的经验和行业的部分并没有太多的变化。
2020 年go文档,使用 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 模块的使用率进一步增加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 了哪些“小技巧”?欢迎下方留言分享你的使用心得吧~~
更多内容详见报告:
☞腾讯员工每年写3万行代码;马斯克承认利用摄像头监视车主;Chrome 89上线实时字幕 | 极客头条
———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: wxii2p22