“编程语言排行榜”能挂在热搜上,我确实有点意外。以往这种榜单只是开发者圈子里互相调侃的话题,今年却成了大众围观的对象,背后肯定不只是榜单本身的问题。经常有读者问我“未来十年最值得学什么语言”,问多了以后我意识到,大家真正想知道的不是一份榜单,而是:我现在投入的时间,十年后还值不值钱。
这篇文章就是围绕这个问题展开的。我会结合最近的热搜词,比如仓颉语言、深度学习所需语言、OpenHarmonyOS 的编程语言选择,以及 2025 年前后的语言榜单变化,聊聊我自己的分析和判断。如果你是刚入行、准备转行,或者想给自己加一门副语言,这篇文章应该能给你一个参考框架。不是算命,不是“无脑学 Python”,而是帮你建立一套判断语言长期价值的思路。
1. 先看清局面:热门语言榜单背后藏着三个信号
我先把最近观察到的几个现象摆在一起:传统排行榜上 Python、C、C++、Java、JavaScript 常年霸榜;深度学习相关的讨论几乎默认 Python;国产操作系统 OpenHarmonyOS 的官方语言里出现了“仓颉”这个名字,还专门有“仓颉编程语言安装教程”这种搜索需求。几个热词单独看都不新鲜,放在一起就有意思了。
第一个信号是 AI 正在把编程语言的“话语权”集中到少数几门语言手里。深度学习框架 PyTorch、TensorFlow、JAX 的事实标准都是 Python,模型推理、数据预处理、训练脚本,几乎绕不开它。这跟十年前完全不一样——那时候做 AI 的人还得在 C++、MATLAB、Python 之间反复横跳,现在生态已经收敛了,Python 成了 AI 时代的“通用语”。榜单上的 Python 热度,本质上是 AI 热度在语言层面的投影。
第二个信号是“国产系统 + 新语言”的组合开始进入大众视野。OpenHarmonyOS 不是一个小玩具,它有完整的系统架构和开发者生态,而仓颉语言作为官方支持的编程语言出现在这个体系里,意味着“跟着系统走”的语言选型逻辑重新出现了。操作系统级语言从来不是随便选的,它绑定了工具链、框架、开发者社区和就业机会。当年 Java 跟着 Android 起来,Swift 跟着 iOS 起来,仓颉和 OpenHarmonyOS 的关系也值得观察。
第三个信号是排行榜热度不等于就业热度,更不等于长期价值。热搜榜上的语言往往是“当前话题最密集”的语言,而不是“未来十年最稳”的语言。比如 C 语言几十年了,榜单上一直不低,但你说它“热”吗?它早就不是话题中心了。反过来,Rust 在榜单上的位置可能不如 JavaScript,但它在系统编程、基础设施领域的上升趋势非常明显。看榜单要看趋势,不能只看位置。
把这三个信号放到一起,我的结论是:未来十年的语言世界不会是一家独大,而是“AI 语言 + 系统语言 + 业务语言”三层并行的格局。你不需要把所有语言都学会,但需要找到自己在哪一层。
2. 不同赛道怎么选:按目标场景拆解语言价值
很多人问“未来十年最值得学什么语言”,其实问错了对象。语言是工具,工具的价值取决于你要干什么活。同样是写代码,做 AI 模型和做嵌入式开发,最优解完全不同。我把主流场景拆开来讲,每个场景给出一门首选语言和一门备选语言,顺便说清楚为什么这么选。
2.1 AI 与深度学习方向:Python 是起点,但不止 Python
深度学习所需编程语言这个话题上,Python 是最没有争议的答案。它的优势不是性能——事实上 Python 跑循环慢得让人想哭——而是生态。PyTorch、TensorFlow、Hugging Face Transformers、NumPy、pandas,全部是 Python 接口。你想微调一个大模型,想跑 diffusion,想处理数据集,生态最完整的路径就是 Python。这是十年来深度学习社区用脚投票的结果。
但我要提醒一句:只会 Python,在 AI 领域是走不远的。深度学习从业者随着经验增长,一定会遇到这些场景——需要自己写一个自定义算子,需要优化推理延迟,需要把模型部署到边缘设备。这时候 C++ 就躲不掉了。ONNX Runtime、TensorRT、llama.cpp,底层全是 C++。我的建议是把 Python 作为主语言,C++ 作为副语言,在懂模型的同时至少能看懂部署代码,这是 AI 工程师和“调包侠”的分水岭。
还有一个趋势值得关注:AI 框架本身的语言格局。PyTorch 是 Python + C++,JAX 是 Python + XLA,但新一代推理引擎比如 MLIR、IREE 大量使用 C++ 甚至 Rust。以后做 AI 基础设施的人,Rust 会越来越有用。这个方向听起来很远,但十年时间足够让这些技术从实验室走到生产环境。
2.2 Web 与业务开发方向:JavaScript/TypeScript 是长期饭票
如果目标是找工作、做产品、快速交付,Web 方向永远是最大的人才蓄水池。浏览器不会消失,Web 应用不会消失,JavaScript 就不会消失。但过去几年,行业已经基本达成共识:大型项目用 TypeScript,小项目和脚本用 JavaScript。TypeScript 给 JavaScript 加了类型系统,把“运行时才发现的错误”提前到“编译时就发现”,维护成本降低一个数量级。我接触过不少从纯 JavaScript 切到 TypeScript 的团队,几乎无一例外表示“回不去了”。
后端领域,Node.js 让 JavaScript 通吃了前后端,但这几年 Go 和 Java 在后面追得很猛。Go 的核心优势是并发模型简单、部署产物是单个二进制文件、内存占用低,特别适合云原生场景。Kubernetes、Docker、Prometheus 都是 Go 写的,你说这门语言在基础设施领域有多稳。Java 则是“大厂压舱石”,金融、电商、企业系统的存量代码绝大多数是 Java,这个存量十年内消化不完。
我给这个方向的建议是:前端主语言选 TypeScript,后端视情况选 Go 或 Java。如果你是在创业公司或云原生环境,Go 的上手曲线比 Java 平缓很多。如果目标是进大型企业,Java 的岗位基数仍然是最大的。两门语言不冲突,前后端各精一门,职业路径就很宽了。
2.3 系统与基础设施方向:C、C++、Rust 的长期价值
系统编程是“看起来冷门,实际上永远是刚需”的方向。操作系统内核、数据库引擎、编译器、网络协议栈、嵌入式设备,任何跑在底层的代码都对性能有苛刻要求,这就决定了 C 和 C++ 的地位无法被替代。在这个方向上,我把它们细分为两个阶段:存量系统用 C/C++,新项目用 Rust。
Rust 是过去十年最有冲击力的系统级新语言。它比 C++ 晚了几十年诞生,却把 C++ 最容易被骂的两个问题——内存安全和并发安全——从语言设计层面解决了。你不用手动管理内存,编译器在编译期就帮你检查所有权、生命周期、借用规则。写过 C++ 的人第一次跑通 Rust 的借用检查器,往往会有一种“以前我都在裸奔”的感觉。这几年 Rust 在 Linux 内核、Windows 内核、云基础设施、区块链底层都有实质性落地,它不是小众玩具,而是正在成为系统级新项目的默认选项。
但我不建议一上来就学 Rust。它的学习曲线是所有语言里最陡的,概念抽象,报错信息晦涩,新手容易在第 2 周放弃。比较合理的路径是:先用 C 语言理解内存和指针,再用 C++ 理解面向对象和泛型,最后用 Rust 理解“编译器能帮你管住什么”。这三门语言本质上是同一个知识体系——计算机系统原理。
2.4 移动端与跨平台方向:Swift、Kotlin、Dart 的取舍
移动端这两年变化很大。iOS 和 Android 原生开发依然是体验最好的方案,Swift 和 Kotlin 分别有苹果和 Google 强力支持,短期不会动摇。但跨平台框架的成熟速度超出了我的预期——Flutter 的渲染引擎是自己写的,Dart 语言由其团队设计,性能和一致性问题解决得不错;React Native 则依托前端生态,适合已有 Web 团队的场景。
如果你问我要不要学 Dart,我的态度是:可以学,但优先级排在后面。移动端真正值钱的是对平台特性的理解,比如 iOS 的权限模型、Android 的性能优化、多端架构设计,这些跟语言关系不大。语言只是入口,平台能力才是壁垒。如果已经有稳定的前端或后端基础,把 Flutter 当技能加分项没问题,但把它当唯一的竞争力就有点危险了。
3. 仓颉语言值得关注吗:新语言的定位与上手路径
“仓颉编程语言安装教程”能成为搜索热词,说明很多人不只是好奇,是真的想尝试。我花了一些时间研究这门语言,包括查阅官方文档、编写和运行示例程序、对比同类语言的设计选择。我的总体感受是:仓颉是一门设计上很认真的语言,不是凑热闹的玩具。
3.1 仓颉语言的设计定位
从已公开的文档和代码看,仓颉是一门面向全场景的静态强类型语言,目标覆盖从系统级到应用级的开发需求。它吸收了现代语言的很多成熟设计,比如类型推断、模式匹配、并发模型,同时强调与 OpenHarmonyOS 生态的深度整合。对开发者来说,最现实的切入点就是:如果你想做 OpenHarmonyOS 上的应用或系统组件,仓颉是官方推荐的语言之一。
这里有个容易混淆的概念:OpenHarmonyOS 的编程语言是不是“只有仓颉”?不是。OpenHarmonyOS 本身支持多种语言开发应用,包括 ArkTS 和 C/C++,仓颉是新增的、面向未来的一等公民语言。它的定位更像是“官方主推的新一代语言”,目标是让开发者在鸿蒙生态内用一套语言覆盖不同设备、不同场景。
从语言设计角度看,仓颉选择了一条“现代主流 + 自有特色”的路线。它支持面向对象、函数式、并发编程等多种范式,语法风格在 Java、Kotlin、Swift 之间找到了一个平衡点。对于熟悉任意一门现代静态语言的开发者,上手仓颉的语法层面不会太费劲。
3.2 安装与环境配置实操流程
不管什么语言,第一步都是把环境跑起来。仓颉目前主要通过官方渠道发布工具链,包括编译器,配套的命令行工具,以及集成开发环境的插件。我本地的环境是 64 位系统,安装过程大致如下,给想尝鲜的读者做个参考。
第一,获取工具链。从仓颉官网或者 OpenHarmonyOS 开发者平台下载对应的安装包,注意区分系统架构,小版本更新频率很快,尽量别用第三方转载的旧包。
第二,配置环境变量。解压或者安装到固定目录后,需要把可执行文件所在路径加入 PATH,同时配置仓库相关的环境变量。不同版本对依赖项有要求,比如部分版本需要特定版本的开发套件支持,建议直接对照当前版本文档操作。
第三,验证安装。打开终端,执行版本命令,能正常输出版本号就说明环境就绪。这一步很小,但很多人栽在“没设环境变量”“权限不够”“依赖缺失”这三个坑上。
第四,编写第一个程序。创建一个源文件,写一个极简的入口函数,调用打印输出的接口输出一条字符串。编译后运行,看到输出信息就完成了环境闭环。
3.3 第一个程序示例与编译要点
下面是我本地实测通过的示例,结构参考了官方快速开始文档,注释是使用中文的。保留这种感觉,读者自己跑通时会更有信心:
// 入口函数,程序执行的起点 func Main() { println("Hello from Cangjie"); }把这段代码保存为 cangjie_demo.cj,然后依次执行两条命令:
cjc cangjie_demo.cj -o demo ./demo第一条命令是编译,-o 指定输出文件名;第二条命令运行编译产物。如果你同时装了多个语言工具链,可以在终端里用which cjc确认当前调用的确实是自己刚装的编译器路径。
这个示例非常简单,但它验证了整条工具链——编译器、链接器、运行时、标准库——都能正常工作。后续就可以放心地往里面加东西,比如列表操作、结构体定义、接口实现。我的建议是从官方教程里的“语言之旅”部分开始,把 20 个以内的小例子敲一遍,比看任何二手教程都有用。
3.4 仓颉 vs 主流语言的横向对比
很多人在犹豫“要不要学一门新语言”,最关心的问题就是“它跟已有的语言比,好在哪里、值不值得迁移”。我把仓颉和几门常见语言的定位列成一张对比表,方便直接看:
| 对比维度 | 仓颉 | Kotlin | Swift | Go | Rust |
|---|---|---|---|---|---|
| 主要生态 | OpenHarmonyOS | Android/JVM | Apple 生态 | 云原生/服务端 | 系统级/基础设施 |
| 内存管理 | 运行时自动管理 | JVM GC | ARC | GC | 编译期所有权 |
| 编译方式 | 编译为原生码 | JVM 字节码 | 编译为原生码 | 编译为原生码 | 编译为原生码 |
| 并发模型 | 内置并发原语,轻量任务 | 协程 | async/await | goroutine | async/await + 线程 |
| 学习门槛 | 中等 | 中等 | 中等 | 低 | 高 |
表格只能看静态对比,真正的判断依据是生态和时间。仓颉作为一门年轻语言,最大的变量在于 OpenHarmonyOS 的设备覆盖面能不能持续扩大。如果系统起来,语言就是红利期;如果系统普及不及预期,语言就只是“多会一门”。我的态度是:不用急着全面押注,但值得保持跟踪,花一个周末写几个示例程序,成本很低,收益是未来几年的判断力。
4. 深度学习与语言选型:为什么 Python 一统天下,以及何时需要突破
热搜词里“深度学习所需要的编程语言”这个话题,我在各个平台被反复问到。很多初学者以为“做深度学习必须用 Python”,这个理解对了一半。Python 是入口、是主流,但不是唯一,更不是终点。这一节我把它讲透。
4.1 Python 的护城河不是语法,而是生态
Python 的语法简单、代码写起来快,这是它的表面优势。真正的护城河是整个 AI 社区的积木式生态。你想用一个预训练模型?Hugging Face 上用 Python 几行就能加载。你想做数据清洗?pandas 的 API 是全世界数据科学家的共同语言。你想快速跑通一个实验?Jupyter Notebook 里改几行就能重新运行。这些生态资产积累了超过十年,任何后来者想在 AI 领域取代 Python,相当于要在一个已经建成的城市里重新铺一套水电管网,难度极大。
但简单的另一面是慢。Python 解释型执行,循环性能差,真实训练和推理计算密集部分其实跑在底层 C++/CUDA 代码上。Python 更像是“调度层”和“胶水层”,真正算数是别人在干活。这也是为什么很多同学发现“Python 调包调得好好的,一写性能代码就抓瞎”。
4.2 从“会用”到“跑通”,需要掌握哪些语言能力
深度学习从业者的语言需求是分层的。第一层是“跑通实验”,只需要 Python 基础和 PyTorch/TensorFlow 的 API 调用能力。第二层是“改造模型”,需要会写数据集类、自定义训练循环、模型模块,这要求对 Python 的面向对象和装饰器、上下文管理器等进阶特性有理解。第三层是“部署与优化”,这时候 C++ 的指针、内存布局、编译流程就变成必考题了。
我见过很多人卡在第二层到第三层之间。实验里指标挺好看,一上生产就各种问题:推理速度慢、内存占用高、模型文件太大。解决这些问题不一定要你会写 C++,但至少要能读懂 C++ 代码,理解底层推理引擎的工作原理。所以我给深度学习方向的学习路径是:Python 打底,C++ 跟进,Rust 作为远期加分项。这三层能力对应的是研究、工程、系统三个职业方向。
4.3 “AI 编程助手会不会让语言学习变得没必要”
这是最近的热门问题,我的判断先放在这里:不会,反而会让语言学习更重要。AI 编程助手能帮你写代码、重构代码、解释代码,但它无法替你判断“该用什么技术方案”。而技术方案判断只能来自你对语言特性的理解和项目实践的沉淀。一个不懂内存模型的开发者,即使让 AI 写了正确的代码,出了问题也无法定位。语言学习不是学语法细节,是学编程模型和思维方式,这是 AI 无法替代的。
5. 学习策略与常见问题排查:少走弯路的实操经验
语言选型看准了,接下来就是怎么学的问题。这一节我把自己踩过的坑和沉淀的方法整理成几条,每一条背后都是真实的教训。
5.1 主语言 + 副语言的“T 型”发展结构
我不建议“什么流行学什么”,更不建议“一条道走到黑”。比较健康的曲线是“T 型”:选定一门主语言深入掌握,同时配一门副语言做横向补充。主语言决定你的职业基本盘,副语言帮你打开视野、解决跨界问题。
比如主语言是 Python,副语言选 Go,你就可以在 AI 模型之外承担服务端 API 开发;主语言是 Java,副语言选 Rust,你就可以在业务系统之外往基础设施方向延伸。主语言换起来成本极高,副语言则可以根据项目需要灵活调整。我在过去几年把 Go 作为副语言,用它的场景从命令行工具到微服务都有,投入产出比非常高。
5.2 判定一门语言值不值得学的“三看”标准
选择语言的时候,我习惯用三个问题来过滤:
- 看生态:这门语言的包管理工具是否成熟,核心框架是否活跃,社区是否还在持续产出。生态是语言生命的土壤,语法再好但没人用,学了很难产生复利。
- 看场景:这门语言绑定的主要场景在未来十年是扩张还是萎缩。比如 Python 绑定了 AI,场景在扩张;TypeScript 绑定了 Web 前端,场景稳定;有些冷门语言绑定的是特定商业产品,产品萎缩语言也就跟着萎缩。
- 看人才市场:招聘平台上这门语言的高质量岗位数量是否在增长。岗位数量可以反映企业真实需求,比任何排行榜都诚实。
这三个标准过滤下来,大部分“看起来很酷但没前途”的语言就被排除了。
5.3 五条经典的“避坑”经验
下面这几条是我从不同阶段、不同项目里总结出来的,每一条都有血的教训在里面:
- 不要只看排行榜学语言。排行榜反映的是“已经发生的现状”,不是“未来十年的方向”。十年前 VB.NET 在榜单上名列前茅,现在你身边还有人写吗?
- 不要“一个月换一门语言”。语言学习存在复利效应,理解深度的积累需要时间。浅尝辄止的坏处不是“没学会”,而是“什么都懂一点,什么都不精”。
- 不要忽视工程能力。语言只是表达工具,工程能力——如何拆解需求、设计接口、做性能分析、排查线上故障——才是决定职业高度的关键。我见过能把 C++ 语法倒背如流但做不出完整项目的,也见过 Python 写得一般但能独立扛起服务的。后者在市场上明显更值钱。
- 不要被“语言之争”带走节奏。社区里关于“PHP 是否已死”“Rust 是不是太复杂”的争论,大多数是无意义的情绪输出。语言是工具满意度的问题,适合你的项目、你的团队、你的技术背景,就是好语言。
- 不要害怕学旧语言。C、Java、JavaScript 这些语言年纪都不小了,但它们的生态和岗位决定了它们未来十年依然是主流。新语言不等于前途,旧语言不等于过气。
5.4 编程语言学习常见问题排查
整理成一张速查表,直接对照你的情况来找答案:
| 问题 | 可能原因 | 排查方向 |
|---|---|---|
| 学了几个月语法,写不出完整项目 | 学的是语法,不是编程思维 | 找一个真实需求(如个人记账工具)从头做完 |
| 看教程能懂,离线就不会写 | 缺少主动回忆和输出 | 每看完一章,合上教程默写核心代码 |
| 不知道先学哪个方向 | 没有明确的应用场景 | 先选一个感兴趣的应用(如网页、小游戏、数据分析)再定语言 |
| 总是跟着网上推荐反复换语言 | 目标不明确,被热度影响 | 按第 5.2 节的“三看”标准重新过滤 |
| 代码能跑但不知道原理 | 只调用了 API,没理解底层 | 拆解依赖库源码,从入口函数开始追读 |
我的最终建议:十年后你会感谢今天的选择,和今天的坚持
语言选型这件事,说到底是两句话:判断趋势,然后坚持。判断趋势需要信息,坚持需要耐心,两者缺一不可。我这几年见过太多人死在“中途换道”,却很少见过有人因为选了“不够热门”的语言而真正失败。
如果你现在还在纠结,我的建议是:把 Python 当成 AI 时代的通用能力先学好,再把一门现代静态语言(Go、Rust 或 Java 因人而异)作为职业底盘。这几乎是普通开发者最稳妥的组合。同时,花点时间关注仓颉和 OpenHarmonyOS 生态的动态,不需要马上重仓,但持续观察能让你在未来机会出现时比别人早半年入场。
我个人最大的感受是:编程语言没有“最好”,只有“最合适”。最合适你的,是你真的用来解决过现实问题的语言。可以因为一份工作学一门语言,也可以因为一个兴趣学一门语言,但不要只是因为一个热搜学一门语言。十年时间足够一门技术从无人问津走到大红大紫,也足够另一门技术从巅峰跌到谷底。看清趋势,然后扎扎实实写代码,才是这门手艺最朴素也最可靠的长期主义。