Go 开发者认为错误处理 (Error Handling) 带来许多挑战
Go 博客发布了 2023 年第一季度 Go 开发者调查。共 5,844 名开发者参与了本次调查,分享了他们有关如何使用 Go、在使用 Go 时遇到的最大挑战、以及他们首要考虑的改进方向等方面的内容。
今年的调查引入了一个基于自我认定的经验水平的新细分。基于受访者对"你的 Go 经验水平如何?"这一问题的回答,细分成以下几个选项:
- 意识 Awareness:知道 Go,但在没有帮助的情况下无法编写简单的 Go 程序
- 新手 Novice:可以用 Go 完成简单的编程项目,可能需要帮助
- 中级 Intermediate:可以在一些帮助下完成重要的 Go 编程项目
- 高级 Advanced:可以在没有帮助的情况下完成重要的 Go 编程项目
- 专家 Expert:可以提供指导、故障排除和回答其他工程师与 Go 相关的问题
调查的主要发现有:
- Go 新手开发者对使用 Go 进行 Web 开发表现出了更大的兴趣。
- 错误处理和学习是受访者面临的最大挑战。历史上,缺乏泛型是最常被提及的问题;但自从引入泛型以来,相关的评论正在减少。关于错误处理(关于可读性和冗长)的评论和学习最佳实践的困难成为了现在最常报告的挑战。
- 优化指南是提高 Go 性能的最有价值的方法。当被问及如何将资源用于 Go 编译和运行时的各种改进时,受访者表示在优化指南上花费最多,而不是具体的性能改进。公告称,这表明了该文档的价值性。
- 管理依赖关系和版本控制是开源 Go 模块维护者面临的最大挑战。开源模块维护者在保持其依赖项最新,并避免因版本控制和破坏性变化而造成的中断方面面临挑战。官方表示,其将计划进一步探索该领域,以帮助维护者提供稳定健康的生态系统。
与以往的调查结果一样,Go 还是主要用于科技行业,约 80% 的受访者表示他们在工作中使用 Go 编程。总体而言,调查受访者在过去一年中对 Go 趋于满意,92% 的人表示他们比较满意或非常满意。还有 4% 不满意,4% 持中立态度。
不同经验水平的人目前如何使用 Go(以及他们希望使用的其他领域)
经验丰富的 Gophers 倾向于将 Go 用于更多类型的应用程序。例如,专家至少在四个领域使用 Go,而新手仅在两个领域使用 Go。不过无论如何,构建 API/RPC 服务和编写 CLI 仍然是两个最常见的用例。
GUI 和 Website / Web services (returning HTML) 方面也展现了一些有趣的趋势。所有经验水平的人都以大致相同的速度将 Go 应用于 Desktop/GUI 应用程序。“这给了我们证据,对 GUI 的渴望不仅来自寻找有趣的入门项目的新 Gophers,而且来自整个经验范围。”
Websites / services returning HTML 也显示出了类似的趋势。报告认为,一种解释可能是这是某人 Go 之旅早期的常见用例(因为它是新手最常见的前 3 名),或者新手更有可能在 websites or web services returning HTML 上工作。
在被问及“想使用但还没有使用 Go 的领域”时。有 29% 的受访者表示,他们已经在任何所想的领域使用了 Go 语言,但扩大使用量的前两个领域分别是 GUI / Desktop 和 AI / ML 应用;且在不同组织规模和工作角色的群体中都是这样。但就经验水平而言,新手更愿意使用 Go 的第一个领域是 websites / web services returning HTML。
报告还指出,在一个开放性文本问题中,29 名受访者中有 12 名表示希望将 Go 用于 websites / web services returning HTML;而他们没有付诸行动的原因是,其他语言有框架可以更好地支持此用例。可能是更有经验的 Go 开发人员不会尝试或期望将 Go 用于此用例,而其他语言已经拥有满足这些需求的框架。“用其他语言(如 PHP 或 Ruby)通常更容易做到这一点。部分原因是这些语言中存在的优秀框架。”
此外,新手对 Web 开发感兴趣的另一个解释可能与他们使用 JavaScript / TypeScript 有关。新手比更有经验的受访者花更多的时间用 JavaScript / TypeScript 写作。对 Web 的较高兴趣可能与新手受访者目前使用其他语言的工作有关,或者可能表明对 Web 技术的普遍兴趣。“将来,我们希望了解有关此用例的更多信息,以及如何帮助新 Gophers 在对他们最有用的领域开始使用 Go。”
部署 Go 代码时面临的最大挑战
“易于部署”通常被认为是 Go 的一大优势,但在最近的一项研究中,Go 团队收到了一些相互矛盾的反馈,“这促使我们在部署 Go 代码时探索潜在的问题”。在开放式文本回复中,目前为止所反馈的最常见的问题是:难以与 cgo 交叉编译(16%),其次是对 WebAssembly 或 WASI 的支持(7%)。
其他一些发现还包括:
- 大约有三分之一的受访者维护一个开源 Go 模块。
- 作为最受欢迎的开发平台,Linux 和 macOS 几乎并驾齐驱。新手比经验丰富的 Go 开发者更喜欢 Windows。
- 30% 的受访者使用 Go 语言两到四年,19% 的人使用该语言五到七年,8% 的人使用它超过八年。
- Visual Studio Code 依然是 Go 开发者编写代码的主流选择。
结论
- 新手 Go 开发人员比其他经验水平的受访者更喜欢 Web 开发。这是 Go 团队想要进一步探索的领域,以确保满足新的 Go 开发人员的需求。
- 安全默认值、有关安全和优化的最佳实践指南以及 IDE 中更多的重构帮助将对社区产生有价值的补充。
- 错误处理是社区的一个高优先级问题,并且在冗长性和可调试性方面带来了挑战。Go 团队目前没有公开提案可以分享,但正在继续探索改进错误处理的选项。
- Onboarding 和学习最佳实践是受访者面临的最大挑战之一,将成为未来研究的领域。
- 对于 Go 模块维护者来说,保持依赖关系最新、模块版本控制以及识别或避免破坏性变更是最大的挑战。帮助维护者提供一个稳定和健康的生态系统是另一个值得进一步研究的用户体验话题。
更多详情可查看完整报告。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
微软将允许未登录用户使用 Bing Chat
目前,微软的 AI 服务 Bing Chat 需要登陆 Microsoft 帐号才能正常对话。但据外媒 Ghacks报道,微软即将提供“无需身份验证”的 Bing chat 功能 —— 用户即使不登陆 Microsoft 帐号,也可以在 Edge 浏览器中与 Bing 进行对话。 Microsoft Bing 副总裁 Michael Schechter 已在 Twitter 上证实了匿名 Bing Chat 功能的真实性: 一些人已经注意到,我们已经开始在 Bing 上推出无需身份验证的聊天。 但不登录的会话只有 5 个聊天轮次,登录可以进行更长时间的对话。 上文的一个“聊天轮次”包含用户的提问和 AI 的回答,据小编的使用经验,5 个聊天轮次其实啥也问不出来。如果正常登录了 Microsoft 账号,单次对话可以进行 20 个聊天轮次,才能稍微深入地获取所需的内容。 回想 Bing Chat 功能初推出时,还需要对 Microsoft 账号进行漫长的“候补”过程,小编大概等了半个月的时间。随着 OpenAI 不断降低 ChatGPT 的成本和负载优化,微软 Bing Chat 功能在...
- 下一篇
GOTC | “基础设施与软件架构”专题论坛议程出炉
全球开源技术峰会(Global Open-source Technology Conference,简称 GOTC)是由开放原子开源基金会、 Linux 基金会亚太区、上海浦东软件园和开源中国联合发起的,面向全球开发者的一场盛大开源技术盛宴。 GOTC 2023 将于 5 月 27 日至 28 日在上海张江科学会堂召开。大会将以行业展览、主题发言、特别论坛、分论坛的形式展现,与会者将一起探讨元宇宙、3D 与游戏、eBPF、Web3.0、区块链等热门技术主题,以及开源社区、AIGC、汽车软件、AI 编程、开源教育培训、云原生等热门话题,探讨开源未来,助力开源发展。 其中,基础设施与软件架构专题论坛由阿里云程序语言与编译器团队负责人李三红担任出品人,将于 5 月 28 日举行。GOTC 2023 报名通道现已开启: https://www.bagevent.com/event/8387611,来吧,一起深入探讨底层技术。 大会亮点: 10 位大咖深入探讨底层技术 Java 静态编译技术与 Java 应用安全 从 ESB 到 Kafka 到 DaaS 操作系统、消息与事件、图数据库、微服务...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7