哪种编程语言最流行?而这到底又意味着什么
经常有人问哪个编程语言最流行?这问题很简单,但是回答起来可没那么简单。
首先,我们要知道,为什么人们会问这样的问题?
一般问这样的问题是人大多是学生,他们想知道这个问题的答案是因为他们想要找份工作,所以寻求一种可以增加面试成功率的技能。对于大多数人来说,进入一个新的领域时了解什么是最流行的,是很有意义的。
而对于其他人来说,比如说已经掌握了一种或几种编程语言的程序员,他可能在想要掌握一门新的编程语言时,会考虑一下当前最流行的编程语言作为参考。而对于要开发一个产品的程序员来说,也希望了解当前最流行的编程语言是因为他们希望所开发的产品能够迎合客户的环境和需求,显然支持流行的语言的 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 中选一个,这要看你的工作种类了。当你在这三个梯队中都学会一门后,你就可以根据你的情况学习更多的语言和框架了。
文章转载自 开源中国社区 [http://www.oschina.net]

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android 曝重大安全漏洞,手机瞬间变砖
——安全专家连带发现Google Play应用商店存DoS漏洞 近日安全专家在Google的Android操作系统中发现重大安全漏洞,恶意APP可以让设备进入无限循环重启死循环并抹除所有数据。 上周安全研究人员Ibrahim Balic在博客中 指出恶意应用可以利用多个Android版本(2.3、4.2.2、4.3等)的漏洞发起移动DoS攻击。攻击者可以利用Android底层的一个内存泄 露bug,将攻击代码隐藏在合法APP中,并在安装完成后才激活。该应用可通过生成一个超长的Android应用程序名称(超过38.7万字节),导致设 备进入无限重启死循环。 趋势科技威胁分析师Veo Zhang认为,Android系统的这个漏洞可以被网络犯罪分子用来销毁犯罪证据,在完成对手机的攻击后利用一个时间触发器激活隐藏活动,让用户的设备瞬间“变砖”。这时候只有通过恢复boot loader来硬重启,但这意味着移动设备中所有的数据都将丢失。 有趣的是,Balic在测试Android漏洞的时候发现恶意应用可以触发对Google Play应用商店的DoS攻击。Bouncer是谷歌用来扫描Google Pl...
- 下一篇
Banana PI 开源硬件项目启动
Banana PI M1是为了配合Elastos.org 开源OS推广而推出开源硬件平台,BananaPI M1是一款比树莓派更强悍的双核Android4.2产品。BananaPI 支持 Android系统,,Debian linux系统,Ubuntulinux系统, Raspberry Pi 系统and cubieboard 系统.可以作为媒体播放器,智能路由交换器,中继器,工控机,机顶盒,网络播放器,开发板,个人娱乐学习编程软件等。 Elastos将协调多CPU形成基于“软件/硬件服务”的家庭云生态环境。Banana Pi 外型类似树莓派,但它性能却比树莓派更加强焊,并且可以运行树莓派image. Banana PI 硬件:硬件基于ARM架构,1Ghz ARM7双核处理器,1GB DDR3内存,千兆以太网口,SATA Socket,流畅运行Android4.2.2。Banana PI M1体积如信用卡大小,轻松运行《雷神之锤三:竞技场》这样的游戏,支持1080P高清视频输出,GPIO兼容Raspberry Pi并直接运行其ROM Image. 文章转载自 开源中国社区 [http:...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7设置SWAP分区,小内存服务器的救世主
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS关闭SELinux安全模块