Go开发者大调查:8成受访者不满意Go不支持泛型

继新兴语言Rust之后,Google力推的程序语言Go,也发布了自家的开发者大调查,这次Go官方总共收到了10,975份回复,总数接近去年的两倍。这次他们增加了许多有关用户统计问题,以更好地了解受访者的轮廓,官方表示,他们这次做的调查结果,与程序设计问答网站StackOverflow所做的2019年度调查结果相近。

这此问卷调查的受访者56%使用Go不到两年,整体用户年资偏短,将Go用在工作中的比例占所有受访者72%,而有62%的人把Go用在工作之外的项目,官方表示,在2018年的时候,将Go用在工作或是工作外项目的比例,都较前一年大幅增加,但是今年得到的结果与之前不同,也就是说这次受访者较倾向在工作外使用Go,而在工作使用另一种语言,官方提到,他们在这份调查中的不同问题,看到了相似的异常值。

构建API/RPC和CLI仍是Go最多见的用法,比例分别为71%以及62%,问卷调查也询问了受访者使用Go的领域,有66%的人将Go用于网页应用程序开发,其他常见的应用领域还有数据库、网络程序、系统程序和DevOps任务等。

图片来源/Go Team

在组件管理上,绝大多数的受访者(89%),都已经通过Go命令使用Modules,官方提到,改变组件管理方法对于开发人员来说,是一个巨大的转变,而此时整个社群正同时经历这样的改变。

由于Go在设计时,考虑了现代分布式运算,因此Go可以说是一个云计算语言,今年官方在问卷增加了有关云计算开发的问题,以更全面了解Go开发者和云计算供应商的关系。这次的调查可以明显看到两个趋势,三大全球云计算供应商AWS、GCP和Azure,在受访者的使用率都上升,其他的供应商每年使用率皆只有一小部分,且大部分都衰退,另外,企业自有或是本地部署的比例持续减少,已经和AWS的市场占有比例相去不远。

开发者在不同云计算平台以不同的方式部署Go工作负载,将工作负载部署到AWS和Azure的受访者,有很大比例直接使用虚拟机,分别为65%和51%,而部署到GCP的受访者,则有64%的人使用Kubernetes平台,几乎是虚拟机35%的两倍。受访者使用GCP和Azure的无服务器平台比例低,仅有17%和7%,而AWS却有33%。

图片来源/Go Team

大致所有的受访者,对于三大主要云计算供应商的Go使用体验都感到满意,排序分别是AWS有80%的满意度,GCP也有78%,而Azure较低只有57%,受访者反应,Azure并没有优先支持Go,也就是说没有持续支持最新的Go版本,使得开发人员无法使用到最新的功能。

图片来源/Go Team

针对Go的痛点,有79%的受访者认为Go缺乏关键功能泛型(Generics),而有22%的受访者认为官方应该继续改进Go的调试功能,另外还有13 %的人要求更多的函数程序语言功能,特别像是map、filter和reduce等,官方特别指出,当Go提供了这些关键程序语言功能,则开发者将能够更广泛地使用Go。

在开源的表现上,Go虽然是一个开源项目,但是不代表Go的开发者也都会用Go来开发自由或是开源项目,从问卷的资料看起来,Go社群参与开源项目的比例正在缩小,不常与不曾参与开源项目的受访者百分比,从2016年的71%逐年增加,到2019年达到75%;而受访者中,仅有约7%到8%的受访者,是稳定的开源项目贡献者,会每天参与开源贡献,每周与每月开源贡献者比例皆逐年降低。

Go开发者主要在Linux和macOS上开发Go程序,分别有66%与53%,而Windows只有20%,而在编辑器选择上,GoLand增长非常快速,从24%的使用率上升到34%,虽然VS Code增长速度减缓,但仍然位居Go开发者最爱IDE,有41%受访者使用,第3与第4名分别为Vim和Emacs,前四名使用率占受访者四分之三,且除了前两名,其他编辑器使用率都在衰退。

官方提到,根据这次的调查,受访者对于泛型、组件管理和工具三个领域最不满意,因此在今年,这三个领域将会是Go团队的重点关注项目,接下来几个月内,他们会大幅改善模块、工具和开发者入门的体验。