前面的文章分析了当前环境下的编程行业,提供了一些入行建议,接下来聊聊当你决定入行后,编程语言的选择。
据不完全统计,全世界目前有八千余种编程语言,而自然语言是七千余种。而且编程语言随着计算机行业的发展在每年增加,而自然语言却因为政治文化等因素在每年减少,可见标题所言非虚了。
不过我们完全没必要被这个数量吓到,正如自然语言虽多,我们平时接触的也就几种一样,常用的编程语言也就十种左右。

下面结合我的工作经历和感悟,与大家一块分析下。
语言的作用是什么呢?是为了交流。人类可以通过"嘴说耳听" 完成交流,但计算机既没有嘴也没有耳,怎么跟人类交流呢?或者换一种问法,两个语言不通的人类,应该怎么交流呢?有没有全世界通用的交流方式呢?有的,那就是肢体语言,其中最不容易产生歧义、最便于理解、最典型的就是"点头yes,摇头no"。
当然了,人类使用这种方式虽然能沟通,但只能沟通是和否,很难完成有效的沟通。但计算机不一样,计算机的速度非常快,可以把巨量的"是"和"否"组合成其他完整的信息,实现人类与计算机的沟通。这个"是"和"否",就是计算机二进制的 "1" 和 "0",这就是为什么计算机会选用二进制的一个基本原因了。
所以,计算机其实只认识两个"字",就是 "1" 和 "0"。但人类显然无法提供计算机需要的那巨量 1 和 0 来传递自己的信息,所以还需要一个桥梁,把人类的语言转化成那巨量的 1 和 0,这就诞生了编程语言。所有的编程语言都会将人类的语言转换成机器码(1 和 0 组成的编码),再发送给计算机,传递人类给计算机的指令,也就实现了人类与计算机的交流。

有了这个认识,就不难理解编程语言的"编译型"和"解释型"之分了。
编译型就好比将一本书整体翻译成另一门语言,虽然翻译的过程很繁琐耗时,但阅读的过程是很流畅的,所以"编译型"语言普遍编译较慢,运行较快,也就是我们说的性能较强。
解释型就好比是请了一位翻译,可以将一门语言实时翻译成另一门语言,虽然不用前期繁琐耗时的翻译过程,但实时翻译的过程难免会有疏漏和语法不通畅的地方,给理解造成一定的障碍,所以"解释型"语言普遍编译很快,运行较慢,也就是我们说的性能较差。
至于他们孰优孰劣,就是要看具体的场景和需求了。
有了以上对编程语言的基本理解,我们来看看编程语言应该怎么选择。
首先来看下权威榜单 TIOBE(这个榜单统计的是全球编程语言的使用情况,并不能代表国内的市场环境,千万不要只根据榜单选择编程语言 ):

这是截止到 2025 年 4 月的全球编程语言流行度排行榜。
可以看出,虽然编程语言高达八千多种,但前 20 名的编程语言就已经占据了 83.56%,可以说占据了编程语言的"大半江山",20 名之后的语言大多数人使用较少,就不在这里讨论了。
前 20 名的语言中,在国内流行的也只有 Python、C++、C、Java、C#、JavaScript、Go、SQL、PHP、Rust 这 10 种。下面按照榜单顺序来挨个分析。
Python
Python *些年一直占据榜单的第一名,原因很简单:人工智能。
Python 是一种"胶水语言",其本身非常简单,但它有非常多的扩展库,而且这些扩展库不是为编程开发服务的,而是为科研、数据分析、机器学*、办公自动化等服务的,人工智能依赖于机器学*,*些年人工智能大火,自然就带动了 Python 的火爆。
但一定要注意,Python 不等于人工智能。
Python 之于人工智能,好比计算器之于会计师,会计师都需要使用计算器,但计算器本身只是工具,不是技术,衡量一个会计师的水平也不会是计算器的熟练程度,而是会计的专业技能。
以我目前工作的公司为例,我们公司是做工业巡检机器人的,其中有一个算法部门,里面基本全是数学专业的硕士,他们很多完全没学过编程,只是工作要做人工智能才顺带学了 Python。
由此可见,人工智能需要的是数学,Python 只是用来实现数学目的的工具,所以如果想从事人工智能,应该把精力放在数学学*上,并尽量取得硕士学位(人工智能行业对学历要求很高),至于 Python,完全可以等专业技能学*完毕后再学*。
至于爬虫,很多无良培训机构会以爬虫的低门槛、高收入作为 Python 的亮点进行宣传,但爬虫需要掌握的知识其实很多,前后端都得会,门槛并不低,高收入或许是事实,但风险也是同样高的,因为爬虫本身就是"灰色地带",现在的政策对爬虫越来越严厉,市场也越来越小,要是现在还一门心思做爬虫,很可能是"面向监狱编程"了。
C++
C++ 的应用场景很多,比如大型游戏开发、客户端、3D 引擎、音视频处理等,在国外比较流行,但这些方向在国内都比较小众,相应的岗位也比较少,再加上其难度较高,不推荐非科班转行学*。
不过科班出身的在当下越来越卷的编程市场是值得考虑的,因为其较高的门槛注定了人才不会过剩,就造就了比较良性的市场环境,而且其较高的难度也对应了较高的薪资。
C
C 语言一般用于操作系统开发和嵌入式开发,都是很不错的方向。
但操作系统目前基本被国外独揽,所谓的国产操作系统也都是基于开源的 Linux 操作系统改的,没有真正意义上的自主研发,所以市场很小(期待这块的市场能大起来,不被国外操作系统卡脖子)。
而嵌入式其实应用场景挺多的,比如数控机床、机械臂、无人机、车机、机器人,从这些应用场景可以看出,嵌入式就是"软件控制硬件",但这些方向在国内同样市场有限,岗位较少,还是只推荐科班出身的考虑。
Java
Java 是我这些年工作中使用的语言。在我入行的 2016 年,Java 还是 TIOBE 的第一名,我也是因为这样选择的 Java(当时对编程一无所知,很盲目,觉得第一名肯定好,幸好 Java 发展得还不错,不然就惨了)。
虽然现在 TIOBE 的第一名常年被 Python 占据,但国内后端开发市场一直还是 Java 的天下,至于原因,我个人觉得一方面是 Java 在服务器端开发确实有独到之处,比如可以跨平台、性能强、生态完善,适合大型项目。
还有一个原因就是:国内的编程市场比较保守。国内的软件公司大多处于发展阶段,抗风险能力较差,所以一般会跟风选择大多数公司都用的语言,再加上很多大厂带头使用,造就了国内 Java 开发岗位遍地开花的现象。
但也正因为这些原因,造成了现在越来越卷的 Java 市场(具体情况在我上一篇的文章从一个普通程序员的角度,聊聊当前环境下,是否还适合做编程?有详细介绍)。不过 Java 虽然卷,其巨大的市场也造就了 Java 十分迅速的发展,现在基本半年就会推出一个新版本,不过这也造成了越来越高的学*成本。
*些年一直有唱衰 Java 的声音,主要是因为 Go、Rust 这些新兴语言的崛起,在很多方面领先了 Java(比如并发能力,Go 遥遥领先 Java)。但以我从业 9 年的观察来看,国内编程市场短时间内 Java 是很难被取代的,原因还是前面提到的保守策略。
现在大量的系统已经用 Java 开发好了,是不会有多少公司愿意额外花费时间和人力切换到其他语言的,哪怕这个语言确实性能更强,确实能解决一些沉疴。而新的系统大多数公司还是愿意选择更普遍的 Java,因为更好招聘开发人员。
所以,如果现在想在国内做后端开发,首先语言依然是 Java。只是基于现在"卷成麻花"的市场,不建议非科班出身的转行做 Java,很难有出路。
C#
C# 是微软模仿 Java 研发的一门编程语言(所以它的语法跟 Java 非常像),早期只用于 Windows 平台上的开发,但由于 Windows 的不开放性,导致 C# 的程序在很长一段时间只能运行在 Windows 系统上,极大限制了它的发展。
虽然现在已经有了 .NET 这样跨平台的框架,但市场已经失去,是很难再夺回来的,再加上这些年 B 端(浏览器端)的流行,使得大量的系统不再需要 C 端(软件客户端),进一步压缩了 C# 的市场。
C# 还有一个很大的市场是小型游戏开发,比如大名鼎鼎的游戏引擎 Unity,就是用 C# 开发的。但就在本月 7 日,Unity 官方宣布:Unity 6 将不再向中国用户提供。如此一来 Unity 在国内的市场必将萎靡,所以也不推荐因为小型游戏开发而选择 C# 了。
JavaScript
这里先说明一下,JavaScript 与 Java 没有任何关系,就好比牛顿和牛、雷锋塔和雷锋,之所以叫这个名字,只是因为当年 Java 很火,蹭它的热度罢了。JavaScript 是"前端"的核心语言(编程语言有前后端之分,榜单中除了 JavaScript 都是后端语言)。
前端就是用户看到的界面,以网页为例,它们都由三个部分组成:结构、样式、逻辑。结构由 HTML 编写,样式由 CSS 编写,逻辑由 JavaScript 编写,这就是大名鼎鼎的"前端三剑客"。不管什么前端框架,最后都会编译成这三种文件,因为浏览器只认识这三种文件。其中 HTML 和 CSS 逻辑固定,相对简单,难点在于 JavaScript,因为网页的所有数据来源都依赖于 JavaScript 与后端的数据交互。
最*这几年被称为"大前端时代",因为出现了 Node.js 这个 JavaScript 运行环境,它可以为前端提供独立的服务端,使得前端不依赖后端也能独立开发,促进了"前后端分离",极大提升了前后端的工作效率。而且它还能连接数据库、缓存等中间件,可以完全不依赖后端独立开发系统,大前端时代由此而来。然而这其实更多是噱头,Node.js 虽然可以连接中间件,但其数据处理效率远远不如后端语言,所以现在基本不会用 Node.js 开发后端。
前端是一个大方向,最大的特点是"所见即所得",也就是写的代码可以直接看到效果,比较直观。而且它重点在于数据展示,没有后端那么复杂的处理逻辑,而且经过这些年的发展,薪资与后端已经相当,如果喜欢这种开发模式,是值得考虑的。
Go
Go 语言算是一个比较新的编程语言,于 2009 年由 Google 发布。发布之后发展得很快,截止到当前,已经在 TIOBE 榜单排名第 7,作为一个只有 16 年历史的编程语言来说是非常不错的。
Go 的主要优势是语法简洁、性能高、并发能力强,编程界大名鼎鼎的 Docker 和 K8s 就是使用 Go 开发的,它是非常适合写这样的一些中间件的,这些年国内的一些大厂也在转向使用 Go 开发服务端(比如字节跳动和 B 站 ),可以说 Go 是一个很有潜力的语言,其在榜单中的上升速度也可以体现这一点,目前来看 Go 是最有希望取代 Java 的。
3 月 11 日,微软宣布使用 Go 语言重构 TypeScript 编译器,性能提升高达10倍;4 月 1 日,国内主流前端框架 Vue 的作者尤雨溪宣布,使用 Go 重写 Rolldown 和 Oxc。可见 Go 的渗透力度和发展趋势。
不过目前国内的后端开发市场依然是 Java 占主导,如果现在想从事后端开发,还是建议选择 Java,可以把 Go 当作自己的第二编程语言持续学*,如果后面市场广阔了,Java 转 Go 是比较轻松的。
SQL
SQL 是数据库专用的语言,主要用于对数据进行新增、修改、删除、查询等操作。数据往往是一个程序的基础,因此几乎所有的编程语言都需要使用 SQL 操作数据库,也因为这一特性它能与众多语言产生交集,流行程度很高。除了前端语言,后端不管哪门语言都建议熟练掌握 SQL。当然了,SQL 的难度并不低,尤其是查询语句,想要实现快速准确的查询是相当考验 SQL 功底的,这也是后端开发岗位一个非常重要的竞争力。
SQL 还有单独催生的岗位,就是 DBA(数据库管理员)。DBA 负责设计和管理数据库,技术要求较高,相应的薪资也较高,但市场岗位相对较少(因为很多中小公司都舍不得请人专门维护数据库,一般都是找后端开发代劳),不过相应的竞争也较小,如果对数据库有独特兴趣,是值得考虑的。
PHP
到"世界上最好的语言"了。从这个排名也看得出,这个"最好"是对它的调侃。但在我入行的 2016 年,它确实配得上这样的名号。当时国内的编程市场,最流行的就是 PHP 和 Java,它的热度甚至高于 Java,要不是看到 TIOBE 上排第一的是 Java,我应该就会选择 PHP(还好没有选择,感谢 TIOBE)。
PHP 其实本身没有什么不好,它语法简单,也很轻量,且前后端都能写,学*成本和开发成本都不高,特别适合写一些小型网站(淘宝最早的网站就是用 PHP 写的),不过也正是这一特性限制了它的发展。在互联网发展的初期,网站基本以静态页面为主,就算有页面交互逻辑也很简单,涉及的数据量也很小,不需要频繁的与后端交互。但随着互联网的发展,网站的功能越来越多,数据量越来越大,特别是电商时代到来后,网站复杂程度大大提高,需要频繁的与后端交互,PHP 这样的轻量级语言根本承受不住,就越来越少被使用了。
Rust
Rust 与 Go 一样,也是一门比较新的语言,于 2010 年由 Mozilla(火狐浏览器的研发机构)发布。发布后的这些年也发展得很快,15 年间就排到了第 10 名。
Rust 的主要特点是安全性。如今程序的功能已经基本完善,随着数据量的增长和用户量的增大,安全性变得越来越重要,Rust 在此方面做了很多设计和考量,因此对安全性要求高的程序会考虑使用 Rust 开发,之前用其他语言开发的程序也会考虑使用 Rust 重构。
2024 年 2 月,白宫发文希望软件开发人员尽量使用 Rust 这样的内存安全编程语言,并放弃 C 和 C++等安全性薄弱的语言。
如今 Rust 的发展非常迅速,也很有取代 C 和 C++ 的潜力。但正如 Go 短时间难以取代 Java 一样,Rust 短时间也是难以取代 C 和 C++ 的,后面的发展如何,还得交给时间和市场。
以上就是对现在主流编程语言的一些分析和建议。至于具体选择哪门编程语言,还是要看需求:
-
如果是为了工作,前端就学 HTML、CSS 和 JavaScript;后端优先推荐 Java,其次是 C 和 C++,如果想"战未来",也可以选择 Go 或者 Rust。
-
如果只是有兴趣想学一下,其实学哪门编程语言都可以,如果实在拿不定主意,就选择方便入门的 Python 吧。
最后,还得说一句,编程是一件非常枯燥的事情,编程语言的学*更是如此。选择好了编程语言,就要拿出决心和毅力坚持学下去,这比什么都重要。同时也不要贪多,编程语言看似五花八门,其实本质是大同小异的,学好了一门再学其他编程语言是很容易的。
程序的世界为每一个纯粹和热爱的人敞开。