这个问题很简单,但回答起来可一点也不简单。不妨先说说为什么人们想知道答案。通常问哪种语言较流行,是因为想学习有职业前景的编程语言,即便是已经拥有娴熟技能的程序员。
一、什么决定流行指数?
那么,哪种语言较流行?这个问题回答起来不如你想象的那么轻松。关键是要确定什么决定流行指数。
这是个极其开放性的问题,以至于维基百科有一篇文章专门衡量编程语言的流行指数。该文章表明了衡量流行指数的许多可能的因素,包括如下:
某种语言的名称在网络搜索中提到的次数,比如谷歌趋势表明的结果。
提到某种语言的招聘广告的数量。
教授或介绍某种语言的图书的销量。
用某种语言编写的现有代码的行数(估计值),这可能低估了不常出现在公共搜索中的语言。
SourceForge、Freecode和GitHub上使用某种语言的项目数量。
论坛和新闻组上关于某种语言的帖子数量。
连上面这些都不完整。你可以添加其中一些衡量标准:
编程培训班销售的课程数量。
-报名编程课的学生数量。
YouTube上关于某种语言的视频数量。
Reddit或StackExchange上关于某种语言的帖子数量。
想必你也明白了。如果你考虑在不同国家的流行指数,这个问题会变得-复杂。某些语言在印度是不是-流行?在美国?在俄罗斯?
结论就是,流行指数并不是*的决定性答案。
二、不同的衡量来源
这时问题来了。即便明白流行指数要结合诸多不同的因素来衡量,但是学生和专业人员仍想知道自己是否在引领职业生涯及公司往正确的方向发展。
有许多网站发布语言流行指数衡量指标,每一份遵循不同的标准。
IEEESpectrum采用了值得关注的一种方法,因为它的交互图形让你可以权衡不同的因素,比如求职网站上的招聘广告或开源项目。
求职网站上的招聘广告或开源项目
CodingDojo有一个图形,它整合了来自求职搜索引擎Indeed.com的统计数字。Tiobe长期以来使用搜索引擎的整合结果来估算流行指数。PyPl关注谷歌上语言教程的流行指数。
遗憾的是,这其实毫无帮助。如果你看一下要学习哪些语言,或者想支持哪些语言,很难决定哪个图形是值得信赖的。
三、那么,哪种是较流行的语言呢?
为了帮助你厘清头绪,我结合了上面提到的各个来源。就IEEE的三个类别而言,趋势(IEEETrending)意味着会是有流行趋势的语言的排名,工作(IEEEJobs)体现了Dice.com和CareerBuilder上的岗位空缺的排名,而开放(IEEEOpen)体现了开源项目的数量的排名。
语言流行指数衡量指标的合并图:
语言流行指数衡量指标的合并图:
可是问题是,这其实无法告诉你着重关注哪种语言。
为了深入问题的核心,我对数据进行了一番分析。我整合了来自六个来源中五个的数据(我摈弃了CodingDojo,因为它只显示十种语言)。然后,我根据它在每个图形上出现的名次、出现了多少次给每种语言加权。我拿来前十名结果后制作了下面这张语言分类聚合图形。
前十名结果后制作了下面这张语言分类聚合图形
DavidGewirtz基于IEEE、CodingDojo、PyPl和Tiobe的加权后的合并分析。
正如你所见,有三类语言。较好大类包括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来编写。其他语言有多流行并不重要。如果你的雇主是微软技术开发商,那么你较好了解C#。
五、从字里行间体会言外之意
我希望你注意到几个比较有意思的方面。首先,CodingDojo的头号语言是SQL。这既合理,又不合理。你很少只用SLQ编程。你使用SQL来访问数据,但用另一种语言管理那些数据查询。所以有必要知道SQL。然而,仅仅上SQL课无法保证你有工作、有丰厚薪水或过上好日子。
其次,考虑到iOS应用程序的流行指数,针对苹果的语言在图形上的排名比你预计的要低。但是这有其道理。如果你想构建自己的应用程序,应该学习那些语言。但是招聘苹果应用程序开发人员的公司数量并不是很多。这就是为什么Swift在图形上的排名相对较低。Objective-C已被Swift取代,我们眼睁睁地看着它的名次下滑。
C家族语言仍是主导者。Java、C++、C、C#甚至Objective-C都是基于C的语言。如果你只想学习一种语言,那么应该从中挑选一种。我会建议Java或C++,因为学会这两种语言后,C家族的其余语言学起来很轻松。
在我职业生涯的现阶段,我可以用20种语言来编程。我通常可以在几天内学会一种新语言。那是由于我在工程学校的论文就是以语言设计为主题,而且20年来我一直断断续续地在教编程。通晓多种语言对我大有帮助,因为我几乎总是可以为当前的工作选择一种语言,不是由于我只上了一门课,我就无所不知了。这听起来难度很大,但是你也能做到。
我给你的忠告就是,学习多种语言和多种框架,如果你想从事编程行业-是如此。用语言来构建产品。编程不仅仅是一种心智的运用,你还得开发实际的东西。
通晓多种语言和框架很重要,因为计算机行业在发生天翻地覆的变化。当然,C的历史比数字手表和Pong还长,但是Swift问世才短短几年,却已经跻身前十名。你今天所学的语言可能不足以满足整个事业生涯的要求。所以学会如何学习语言就跟学一种语言一样重要,而较好的办法就是学不止一种语言。
我的建议很简单。选择C++或Java,好好学。然后学JavaScript。越来越多的基于Web的应用程序需要良好的JavaScript技能。然后选择PHP、Swift或Python,具体要看你想完成哪一种类型的工作。一旦你熟练掌握了这三种语言中的某一种,就能够比较轻松地选择你所需要的任何其他语言或框架。
免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。