Go 官方博客昨日公布了[ 2019 年 Go 语言调查报告]。本次调查收到的回复达到 10,975 份,约为去年的两倍。 这些受访者的反馈意见将被选取用于改进 Go 语言的发展。

以下是 2019 年度的调查报告摘要:

  • 此调查中,受访者的受众特征与 Stack Overflow 的受访者相似,因此这些结果在某种程度上可以代表更广泛的 Go 开发人员。
  • 大多数受访者每天都要用到 Go 语言,并且该数字在逐年上升。
  • Go 的使用仍集中在技术公司,但它同时也被用于越来越多的行业,例如金融和媒体。
  • Go 最常见的用途仍然是编写 API/RPC 服务和 CLI 工具。
  • 模块在 Go 生态系统中的使用率很高,与此同时,围绕软件包管理的一些问题仍然存在。
  • 有待改进的重点领域包括 debug、模块和云服务的体验。
  • VS Code 和 GoLand  依然最受开发者欢迎,有 3/4 的受访者都喜欢它们。

有关调查报告的详细内容请继续往下阅读。

开发者背景

调查结果显示,在工作中使用 Go 语言的受访者比例与去年相当,均为 72%,这一数值几乎每年都在增长。在工作之余使用 Go 语言的人数比例则有所下降(70%→62%)。

从使用年限上来看,56% 的受访者使用 Go 语言进行开发的经验不足两年,相对来说算是新手。而有着较长时间 Go 开发经验的“老手”,多拥有 C/C++ 背景,对 JavaScript、TypeScript 和 PHP 则相对没有那么熟悉。另外,无论是 Go 的新手老手,大多数受访者最熟悉的语言还属 Python。

▲ 使用 Go 的时长

▲ 使用其他语言的经验

有意思的是,Go 是一个成功的开源项目,但大多数使用它的受访者却“很少”或“从不”为基于 Go 的开源项目做贡献。不过,随着 Go 社区的扩展,为它做贡献的受访者比例在缓慢上升中。

开发领域

在去年的调查中,多数受访者都集中在技术公司(包括软件、互联网等)。今年的受访者则来自更为广泛的开发领域。尤其是金融行业占比显著增加(8%→12%),来自技术行业的相对受访者比重从 52% 下降至 43%。

具体来讲,在 Go 的使用方面,最常见的领域是 Web 开发(66%)。在数据库相关领域使用 Go 的受访者数量显著增加,所占比例由去年的 29% 上升至 45%,排位也从第五跃升第二。其他常见领域还包括网络编程(42%)、系统编程(38%)和 DevOps(37%)。

Go 的主要用途依然是编写 API/RPC 服务和开发 CLI 应用程序,这两项分别占比 71% 和 62%。其次是库和框架方面,增长量巨大,所占比例从 30% 飙升至 48%。

开发环境

与往年一样,绝大多数被调查者表示在 Linux(66%)和 macOS(53%)系统上使用 Go。 这是本调查与 StackOverflow 调查存在很大差异的一个地方,后者有 45% 的受访者将 Windows 作为主要开发平台,而关于 Go 的调查中,这一数据只占 20%。

另外,受访者中有 38% 的人使用多操作系统应用这门跨平台语言,相较去年(41%)略有下降。

开发工具方面,VS Code、GoLand 和 Vim 仍占据编辑器排行榜前三位,并且这三位的使用份额占总数据的 3/4。其中 GoLand 的使用量在 2019 年增长最多(24%→34%),VS Code 的增长速度有所放缓。

今年的调查中新增了一个有关内部 Go 文档工具的问题。从总体数据来看,少数受访者(6%)表示所在的公司有运行自己的 Go 文档服务器。但如果仅查看大型组织(至少有 5,000 名员工)的数据,这一比例几乎翻了一番(11%)。

云开发

今年的问卷扩展了一些关于云开发的问题,可以看出,选择将 Go 应用部署到云上的开发者越来越多。其中,选择 AWS 的受访者数量(42%)几乎快要追上选择本地部署的受访者数量(44%)。

三大全球云提供商(Amazon Web Services、Google Cloud Platform 和 Microsoft Azure)的采用率均呈上升趋势,且牢牢占据绝大部分市场份额。

在满意度方面,受访者对在三大云提供商上使用 Go 感到总体满意。AWS 和 GCP 分别以 80% 和 78% 占有最高满意度,而 Azure 的满意度较低,为 57%。

对 Go 语言的态度

该问卷包含一个“你有多大可能将 Go 推荐给朋友或同事?”的问题,以此来计算净推荐值(Net Promoter Score, NPS)。最终 Go 在 2019 年调查中的净推荐值是 60 分(67% 的倡导者 - 7% 的贬低者),去年的调查中这一分数为 61 分。

长期被 Go 使用者诟病的包管理和缺少泛型这两个问题,依然是很多开发者使用 Go 时所面临的最大挑战。今年,提出工具存在问题的受访者比例也有所增加。Go 团队表示这些也是他们重点关注的领域,并表示希望在未来几个月中能够改善开发人员的体验,尤其是在模块、工具和入门经验方面。

Go 语言社区氛围

受访者对于 Go 社区的看法与往年相比有较大波动。认为自己在社区中有受到关注的人数比例从 82% 降至 75%。

另一方面,受访者对于这一问题的回应朝着两极分化的方向发展。选择“强烈同意”或“强烈反对”的比例都相对增加。Go 团队计划对此进行进一步研究。

Go语言 2019 调查报告发布的更多相关文章

  1. StackOverflow发布年度开发者调查报告:JavaScript备受欢迎

    StackOverflow刚刚发布了年度开发者调查报告,访问了来自173个国家的56033名编程人员,发现几乎所有开发者都精通于JavaScript.具体说来就是,超过85%的全栈开发者.超过90%的 ...

  2. final发布48小时用户调查报告

    小组名称:飞天小女警 项目名称:礼物挑选小工具 小组成员:沈柏杉(组长).程媛媛.杨钰宁.谭力铭 调查问卷标题:用户调查报告 调查目的:在final版本发布后的用户调查报告 调查问卷的数量:11 问卷 ...

  3. RightScale发布2017年度云调查报告

    RightScale最近发布了他们的年度云报告(RightScale 2017云现状报告,RightScale 2017 State of the Cloud Report),这份报告包括了云计算在采 ...

  4. Rust 2017 调查报告:学习曲线是最大痛点(最大的问题是这门语言太偏底层了,现在做底层的少了。还有C这个绕不过去的存在)

    Rust 官方在社区上做了一次调查,以了解用户如何看待 Rust 的发展.调查共收到 5368 份回复,其中有 大约 2/3 的是 Rust 用户,剩下的 1/3 是非 Rust 用户,调查结果如下. ...

  5. 足球运动训练心得及经验分析-c语言学习调查

    在准备预备作业02之前,我参考娄老师的提示,阅读了<[做中学(Learning By Doing)]之乒乓球刻意训练一年总结>一文. 在文章描述的字里行间,给予我的印象是系统.负责,娄老师 ...

  6. 2014年全球SEO行业调查报告

    前言: 1.该调查报告是MOZ每两年一度针对SEO行业的数据分析报告. 2.随着SEO的进化,该报告已不仅仅是SEO行业,今年的调查数据更多分析网络营销行业,可以称作"网络营销行业调查报告& ...

  7. 【译】JavaScript 开发者年度调查报告

    截至目前有超过了 5000 人参与了(该次调查),准确的说是 5350 人.我迫不及待的想要和大家分享一下这次调查的细节.在分享之前我想要感谢参与调查的每一个人.这是 JavaScript 社区一个伟 ...

  8. Scrum已经俘获中国开发者的心? ——从《2017年开发者调查报告》看真相!

    云栖社区通过为期两个月,对7032份有效调查问卷分析统计,2017年12月发布了首份<2017中国开发者调查报告>.报告显示,37.3%的开发者表示,协作工具主要来自企业内部自研的协作工具 ...

  9. 2017年IT行业测试调查报告

    在刚刚过去的2017年, 我们来一起看一下2017年IT行业测试调查报告 还是1到5名测试工程师最多 Test Architects 在北上广一线城市已经出现 https://www.lagou.co ...

随机推荐

  1. Oracle 11g服务端的安装和配置

    1.双击Oracle11g_database安装目录下的Setup.exe. 2.选择“基本安装”,设置“安装位置”,填写“数据库名”和“口令”,点击“下一步”. 3.点击“下一步”. 4.一般会出现 ...

  2. springboot集成通用mapper详细配置

    通常,我们利用mybatis写持久层方法.要么按照传统定义mapper方法,定义xml文件的方式,全部手写.要么需要通过mybatis-generator逆向工程插件生成大量的xxxExample文件 ...

  3. 教你用Cobra开发类似docker的命令行

    目录 前言 一.安装 二.初始化应用 gomod初始化 创建入口文件cmd/root.go 创建主程序main.go 三.生成Command 创建hello子命令 创建version子命令 四.如何设 ...

  4. Java并发基础05. 传统线程同步通信技术

    先看一个问题: 有两个线程,子线程先执行10次,然后主线程执行5次,然后再切换到子线程执行10,再主线程执行5次--如此往返执行50次. 看完这个问题,很明显要用到线程间的通信了, 先分析一下思路:首 ...

  5. Appium自动化 - 设置unicodeKeyboard: True运行脚本后,手机输入时无法调出软键盘

    问题背景 做appium自动化的时候,使用了UiAutomator1驱动,然后设置了UnicodeKeyboard 执行自动化脚本之后,玩手机的时候发现平时用的输入法键盘没法调出来了 'automat ...

  6. 听说这个 IP 和子网掩码异常难算

    IP地址格式 每个Internet主机或路由器都有IP地址.所有的IP地址包括网络号和主机号(就像是手机号,前几位是区号,后几位是序列号). 说明如下 A类地址用于主机数目非常多的网络.A类地址允许有 ...

  7. 路由与交换,cisco路由器配置,浮动静态路由

    设置浮动静态路由的目的就是为了防止因为一条线路故障而引起网络故障.言外之意就是说浮动静态路由实际上是主干路由的备份.例如下图: 假如我们设路由器之间的串口(seria)为浮动静态路由(管理距离为100 ...

  8. 路由与交换,cisco路由器配置,静态路由

    网络是一个大型的拓扑结构,在路由表中,最重要的是管理距离和度量值 管理距离 管理距离用来确定路由的优先级.管理距离的范围是0-255之间的整数值.值越低代表优先级越高.0代表最高优先级.并且只有直连路 ...

  9. day01-课后作业

    #1.写一个登陆的程序,最多登陆失败3次#2.输入账号 密码,如果登录成功,程序结束,提示 欢迎 xx 登录,今天的日期是 xx#3.登录失败,重新登陆#3.要判断输入是否为空,什么也不输入,输入空格 ...

  10. Struts2-学习笔记系列(10)-自定义类型转换

    注意name=user和对应action中的实例名称一致 这些代码是写在HTML文件中的 <s:form action="login"> <s:textfield ...