知名开发者社区 Stack Overflow 每年都会进行年度开发者调查。在最新一期调查中,有超过65000名来自全球的程序员参与,其地域分布如下图所示:

从地图上的标记点来看,美国、印度、加拿大、西欧各国以及巴西的参与者众多。相比之下,中国的参与者数量比预期要少,甚至不及伊朗、土耳其、巴基斯坦等国。这或许与语言障碍及网络环境有关。
调查中有几个关于编程语言的有趣指标,分别是“最喜爱”、“最畏惧”和“最想学习”的语言。程序员们通过投票表达了自己的真实态度。
最受喜爱的编程语言 Top 10
首先来看“最喜爱”的编程语言排名。这里的百分比含义是:在使用某种语言的开发者中,有多少比例的人希望继续深入学习和使用它。

结果令人意外,Rust 以高达86.1%的比例位居榜首。这门语言竟有如此大的魅力?笔者曾写过文章吐槽其严苛的语法(《自从我学了Rust,就开始了受虐之旅,连编译都没成功过!》)。不过,Rust 确实有其不可替代的优势:
- 性能极快。
- 运行时(Runtime)非常小(相比之下,JVM这类虚拟机就是一个庞大的Runtime)。
- 能直接、安全地访问内存。
传统的 C/C++ 能满足前两点,但内存安全性不足;而 Java、Python、Ruby 等语言除了内存安全,前两点表现一般,更适用于应用层开发。Rust 则同时满足了系统级编程的这三个核心需求。尽管其概念有些独特,但从调查来看,它依然赢得了大量开发者的青睐,愿意持续投入学习。
TypeScript 和 Python 分别以67.1%和66.7%紧随其后,这可以理解。前者是JavaScript的静态类型超集,对追求类型安全的开发者吸引力巨大;后者则因编写小工具快捷方便、生态丰富而备受推崇。
最令开发者畏惧的编程语言 Top 10
接下来是“最畏惧”的语言排名,其百分比含义是:在使用该语言的开发者中,有多少比例的人不想再继续学习它了。

VBA 以80.4%的“劝退率”高居榜首。Objective-C 以76.6%位列第二,或许是因为开发者群体正向 Swift 迁移。Perl、PHP、C++ 等常年被吐槽的语言上榜并不意外。
但令人惊讶的是,Java 和 Ruby 也进入了前十,分别排名第九和第七。具体来说,有55.9%的Java 开发者表示想“抛弃”Java。
这不禁让人疑惑:Java 不是常在 TIOBE 等编程语言排行榜上位列第一吗?它拥有庞大而丰富的生态,海量的开源框架与工具,世界上无数关键系统由其构建,再加上强大的 JVM。尽管语法略显冗长,但 Java 在保持向后兼容的同时一直在稳步进化。为何会沦落到被过半使用者“嫌弃”的地步?
O‘Reilly 的 Mike Loukides 曾在一篇文章中总结了几个可能的原因:
- 基数效应:Java 的使用者基数巨大,其中总会有一部分人不喜欢它。正如 C++ 之父 Bjarne Stroustrup 所言:“世界上有两种编程语言,一种是被人吐槽的,一种是没人用的。”
- 坏味道的编码习惯:围绕 Java 形成了一些令人不悦的编码风格,例如 excessivelyLongClassNameBecauseThatsHowWeDoIt(过度冗长的类名),以及滥用设计模式产生的 FactoryFactoryFactory。这类代码容易引起反感。
- 遗留系统的负担:Java 已诞生二十余年,并自诩为企业级应用语言。因此,Java 开发者更常面对大型、处于维护状态的遗留系统。这些系统采用老旧的技术和框架,代码质量可能堪忧,且文档匮乏甚至缺失。长期在“屎山”代码中穿行,会极大消耗开发者深入钻研技术的热情。
Ruby 的式微
同样,调查显示有57.1%的 Ruby 开发者不再想深入学习它。在笔者的印象中,大多数用过 Ruby 的程序员都会爱上它的简洁、优雅以及强大的元编程能力,能写出令人惊叹的代码。
Ruby 的崛起与 Ruby on Rails (RoR) 框架密不可分,RoR 曾是 Web 2.0 时代开发的神器,堪称 Web 编程的 DSL。然而,如今早已进入移动互联网时代,移动端是 iOS 和 Android 的天下,后端则更追求高性能和强大的扩展性,Ruby 在这些方面显得力不从心。因此,许多后端开发转向了 Go、Node.js 等语言。
当然,Ruby 社区也在求变,例如 Elixir 语言便是由 Ruby 社区的人创建,旨在用 Ruby 的风格编写 Erlang 风格的代码,并运行在 Erlang VM 上以获得高性能。这是一个非常巧妙的组合,可惜生不逢时,面对众多强大的竞争者,难以再现当年 RoR 的革命性影响力。
本文仅从个人角度对 Stack Overflow 的这项调查结果进行解读。该调查还包含了最受欢迎框架、开发者年龄分布等更多维度的数据。感兴趣的朋友可以前往 Stack Overflow 官网查看更多详情:https://insights.stackoverflow.com/survey/2020
技术潮流变迁迅速,开发者的偏好也在不断流动。无论你是坚守 Java 生态,还是尝试拥抱 Rust 等新锐语言,保持学习与开放的心态至关重要。欢迎来到云栈社区与更多开发者交流技术趋势与实战心得。