哪种编程语言最流行?而这到底又意味着什么
王练 2017年01月07日

哪种编程语言最流行?而这到底又意味着什么

王练 王练 发布于2017年01月07日 收藏 30 评论 18

程序员,这个春节要过得有料>>>»  

经常有人问哪个编程语言最流行?这问题很简单,但是回答起来可没那么简单。

首先,我们要知道,为什么人们会问这样的问题?

一般问这样的问题是人大多是学生,他们想知道这个问题的答案是因为他们想要找份工作,所以寻求一种可以增加面试成功率的技能。对于大多数人来说,进入一个新的领域时了解什么是最流行的,是很有意义的。

而对于其他人来说,比如说已经掌握了一种或几种编程语言的程序员,他可能在想要掌握一门新的编程语言时,会考虑一下当前最流行的编程语言作为参考。而对于要开发一个产品的程序员来说,也希望了解当前最流行的编程语言是因为他们希望所开发的产品能够迎合客户的环境和需求,显然支持流行的语言的 API 会被更多人使用。

甚至,就算是你想启动一个项目时,你也需要考虑是否选择一个流行的编程语言。虽然你首先要考虑的是这种语言能够满足你的需求,比如说如果用一个流行的编程语言你需要花费更多的时间和成本,而不那么流行的编程语言或许会更快捷和轻松,显然你还是会选择那个不太流行的——但是如果各个方面都差不多,不用说你会选择流行的那个,因为这样你可以找到更多的程序员,遇到问题也有更多的解决方案。

怎么才算是流行?

那么,哪个语言是最流行的?其实回答这个问题并没有你想象的那么简单。关键是,你该怎么定义这个“流行”?

这个问题并没有固定的答案,不过在维基上有一篇文章提到了如何测量编程语言的流行度。在这篇文章中,列出了几个测量流行度的因素:

  • 该语言在搜索中提及的次数,比如在谷歌趋势中

  • 在招聘广告中提及该语言的次数

  • 传授和介绍该语言的书籍销售量

  • 以该语言编写的现存代码的行数,不流行的语言在公开搜索中可能根本就找不到

  • 在 GitHub、Freecode 上使用该语言的项目数量

  • 在论坛和新闻组中讨论该语言的帖子数量

此外,你还可以考量如下指标:

  • 编程培训班里面该语言的培训课程销售数量

  • 编程培训班里面学生的数量

  • 视频网站里面关于该语言的视频数量

  • Stack Overflow 和 Reddit 里面关于该语言的帖子数量

甚至,你还可以增加一些其它的统计维度,比如根据国家和城市来统计,你知道在北京哪种编程语言最流行么?上海呢?

所以,这个问题的回答并不是一个简单的答案。

统计数据来源的不同

即使我们知道了流行度取决于多种因素,但是人们还是希望能够了解到底哪个语言比较流行,以此来指导他们的培训和公司的决策。

有一些网站依据不同的标准,公开发布了一些语言流行度指标。IEEE Spectrum 对这些指标做了一个有趣的整合,它可以让你通过自行设置不同因子的权重来得到你自己的编程语言流行度排行榜。

Coding Dojo 也有一个图表,聚合了工作搜索引擎 Indeed.com 的数据;而有名的 Tiobe 排行榜一直使用搜索引擎聚合来计算流行度; PyPl 则是根据谷歌来查看语言的流行度。 

然而,这并没什么大用。如果你想知道你该学习那种语言,或者是你需要支持的语言,最困难的还是你并不知道这里的哪个图表才是适合你的。

好吧,我明白了,那么到底那种编程语言是流行的?

为了帮助你找到方向,我组合了上述提及的几种数据源,包括三种 IEEE 分类:“趋势”代表语言的增长度,“工作”代表 Dice.com 和 CareerBuilder 上的招聘量,“开源”代表开源项目数量。

排名结果如下表: 

但是问题是,上图并不能告诉我们重点所在。要解决这个问题,我们需要做一点数据分析。我聚合了这六个数据源中的五个(我去掉了 Coding Dojo 是因为它仅显示了前九),然后我根据编程语言出现在图表中的位置和次数进行加权,这样我得到了如下的前十排名。

如你所见,这些语言分成了三大类。第一梯队包括 Java、C、Python 和 C++,毫无疑问,你肯定经常听到它们的名字。第二梯队包括 JavaScript、C#、PHP 和 Swift。剩下的两个是 Objective-C 和 R。

这给我们带来什么启发?

第一梯队的语言 Java、C、Python 和 C++ 都是非常通用的语言,它们并不局限于特定的编程平台或用途。

最值得关注的是第二梯队,它包括 JavaScript、C#、PHP 和 Swift。JavaScript 和 PHP 是主要的 Web 开发语言。C# 是微软的编程语言,而 Swift 是苹果新推出的主力语言。基本上来说,第二梯队是平台相关的。

那么这反映了什么?如果你懂一点现代编程,你就知道编程其实不仅仅是使用这种语言,而更重要的是开发一些什么,比如说嵌入式系统、iPhone 应用、Web 应用或者微软的服务器端应用等等。

对语言的熟悉程度其实只是一小部分。举个例子说,不管你是多么的喜欢 Python 或者古老而常青的 C,但如果你要为 WordPress 开发插件或主题,你只能使用 JavaScript 和 PHP。这无关于哪个语言更流行。

字里行间的发现

或者你会注意到一些有趣的地方。

首先,Coding Dojo 的编程语言排行榜的第一名是 SQL,只有它一家是这样。你很少会单独在 SQL 里面编程,通常都是在其它的语言里面使用它来管理数据。所以,学会 SQL 是很有用的,甚至是必要的。然而,去上一门 SQL 的培训课程并不能帮你找到一份工作,也不会多挣多少钱。

其次,苹果特有的语言在排行榜中排名很低,这或许和你的预期不同,因为 iOS 的应用是如此的流行。不过确实是这样的,如果你不是要开发你自己的应用的话,那学它们其实不如学习别的语言,因为其实没有那么多的公司雇佣苹果应用开发人员。这就是 Swift 语言掉到了榜尾的原因,而 Objective-C 正在被  Swift 所替代,在前面也看到了它也处于榜单的后面。

C 家族的语言仍然是主流。Java、C++、C、C#,甚至 Objective-C 都是基于 C 的语言。如果你只想学一门语言,你可以从其中选择一个。我推荐你选择 Java 或 C++,它们可以为你打开进入 C 语言家族的大门。

以我的职业生涯的经验来看,不是特别复杂的场景的话,我大概能用 20 来种语言来编程,通常我只用几天就可以学会一门新的语言。这是因为我在学校的专业就是语言设计,我也教编程超过了 20 年了。掌握这么多的语言对我很有帮助,因为我总是根据我要做的事情选择一种语言,而不是专门去上课学习一种语言。这听起来好像有点难,但是其实你也能做到的。

我的建议就是,如果你要编程,那么就去学习多种编程语言和各种框架吧。用编程语言去做点东西出来,编程不仅仅是一种智力锻炼,而且你可以实际用它做点什么出来。

掌握多种语言和框架是重要的,因为计算机行业变得太快了。C 语言依然历久弥新,而 Swift 虽然出现才几年就登上了排行榜。你今天学习到的或许不够你整个职业生涯挥霍,所以“怎样学习语言”要比“学习语言”更重要,最好的办法就是多学几门。

我的推荐非常简单,无论是 C++ 还是 Java,选一个学习就好了。然后是 JavaScript,越来越多的基于 Web 的应用需要良好的 JavaScript 技能。再然后是 PHP、Swift 或 Python 中选一个,这要看你的工作种类了。当你在这三个梯队中都学会一门后,你就可以根据你的情况学习更多的语言和框架了。

好了,努力吧,学习一些编程语言,做点漂亮的成绩出来。如果你有什么想法,欢迎在下面和我们分享。

英文:Which programming languages are most popular?

翻译:Linux中国/wxy

链接:https://linux.cn/article-8069-1.html

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:哪种编程语言最流行?而这到底又意味着什么
分享
评论(18)
精彩评论
2
JS+PHP+C/C++
前端:Web(HTML, CSS, JavaScript),移动端(Android[Java],iOS[Swift, OC]。

后台应用系统:Java/PHP/C#/C++/C/Python/…。

后台数据库:SQL。
话说学Java做网站的人都不会JavaScript的吗?
最新评论
0
不赞同,如果各种语言都学。你就很尴尬了
0
java+js+sql
0
不是js 就是java 哈哈
1
前端:Web(HTML, CSS, JavaScript),移动端(Android[Java],iOS[Swift, OC]。

后台应用系统:Java/PHP/C#/C++/C/Python/…。

后台数据库:SQL。
0
最近做的项目中,使用了榜单中的7种语言来实现不同的部分。
0

引用来自“游客”的评论

php 只能做web吗? 比如工业领域 可以使用吗?
http://www.swoole.com/
PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。

除了异步IO的支持之外,Swoole为PHP多进程的模式设计了多个并发数据结构和IPC通信机制,可以大大简化多进程并发编程的工作。其中包括了并发原子计数器,并发HashTable,Channel,Lock,进程间通信IPC等丰富的功能特性。

Swoole2.0支持了类似Go语言的协程,可以使用完全同步的代码实现异步程序。PHP代码无需额外增加任何关键词,底层自动进行协程调度,实现异步。
Swoole可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。 使用PHP+Swoole作为网络通信框架,可以使企业IT研发团队的效率大大提升,更加专注于开发创新产品。

https://www.oschina.net/p/ohsce
OHSCE(Open HI-REL Signal Communication Engine): 面向嵌入式开发的高可靠性的PHP通信框架
1. PHP以太网(TCP/UDP/ICMP)、RS232、RS485通信,可广泛直接或桥接各种网络工程通信。
2. 特别合适于对可靠性要求较高、上位机与末端协同工作的场景。如物联网设备通信、智能化系统、工业与自动化系统、可靠网络服务器。
3. 可运行于Windows、Linux、OS X。对Windows提供了全项功能支持,与自动化生态亲和。
0
目前做的新项目混入了排行前五的多种语言, javascript(node/angular), python/flask和java/lucene,一下要学好多东西. 其它两种排前五的语言c/c++基本和web不粘边, 不太可能碰到.
0
php 只能做web吗? 比如工业领域 可以使用吗?
0
GO/C/PHP/Node.js
2
JS+PHP+C/C++
0
好文。
0
我认为最基本是学习一门后端语言,SQL知识熟练,前端语言按需学按需用,有兴趣搞搞服务器,了解下app,网站等全配置流程,业务流程,对需求,制作,测试,生成发布都有大致了解,让我们有掌控一个项目的能力才是最重要的,我认识几个朋友,比较多年都只会做一个个模块,一个个小功能,对于自己不负责的东西就一概不管,任务发下来就埋头做,不思考,这是不正确且严重阻碍他们发展的。语言很多种,我们学不完,试着接触新事物比一直想着哪个语言热来得实用,纯粹个人建议,不喜勿喷。
话说学Java做网站的人都不会JavaScript的吗?
0
HTML上榜了,我觉得输入法也是语言!
php虽然不是最流行的语言,但是是最好的语言
0
C+PHP+HTML才是王道!
0
左手C++右手javascript,坐着Java轿车,走遍天下。
0
哦 ,是吗
顶部