对于程序员来说,熟悉多种语言和框架很重要,原因是这个行业发展太快,技术淘汰的速度也很快,3年不学新东西就可能落伍了。
我在加州大学伯克利分校学编程的学生们经常问我哪种编程语言最流行。这个问题很简单,但回答起来可一点也不简单。
不妨先说说为什么人们想知道答案。通常对于学生来说,他们问哪种语言最流行,是因为他们想学习有职业前景的编程语言。并且对大多数人来说,从事并不吃香的行业领域没有多大意义。其他的情况,就是已经拥有娴熟技能的程序员想了解目前的技能是否很重要,或者是不是该关注其他语言,因为流行指数的变化可能意味着是时候该学习一种新语言了。
如果,你启动一个项目,就要选择用哪种语言来构建。你的第一个标准应该始终是使用一种能高效完成任务的语言。如果一种语言很流行,可是要花两年时间才编出程序,而另一种语言不太流行,但是只要两个月就能开发出应用程序,你显然会选择不太流行的那种语言。但是在所有情况一样的场合下,一种更流行的语言通常意味着可以获得更多的程序员和资源,所以这也是个重要的考虑因素。
1.什么决定流行指数?
那么,哪种语言最流行?这个问题回答起来不如你想象的那么轻松。关键是要确定什么决定流行指数。
这是个极其开放性的问题,以至于维基百科有一篇文章专门衡量编程语言的流行指数。该文章表明了衡量流行指数的许多可能的因素,包括如下:
某种语言的名称在网络搜索中提到的次数,比如谷歌趋势表明的结果。
连上面这些都不完整。你可以添加其中一些衡量标准:
想必你也明白了。如果你考虑在不同国家的流行指数,这个问题会变得更复杂。某些语言在印度是不是更流行?在美国?在俄罗斯?
结论就是,流行指数并不是唯一的决定性答案。
2.不同的衡量来源
这时问题来了。即便明白流行指数要结合诸多不同的因素来衡量,但是学生和专业人员仍想知道自己是否在引领职业生涯及公司往正确的方向发展。
有许多网站发布语言流行指数衡量指标,每一份遵循不同的标准。IEEE Spectrum采用了值得关注的一种方法,因为它的交互图形让你可以权衡不同的因素,比如求职网站上的招聘广告或开源项目。
来源:IEEE Spectrum
Coding Dojo有一个图形,它整合了来自求职搜索引擎Indeed.com的统计数字。Tiobe长期以来使用搜索引擎的整合结果来估算流行指数。PyPl关注谷歌上语言教程的流行指数。
遗憾的是,这其实毫无帮助。如果你看一下要学习哪些语言,或者想支持哪些语言,很难决定哪个图形是值得信赖的。
3.那么,哪种是最流行的语言呢?
为了帮助你厘清头绪,我结合了上面提到的各个来源。就IEEE的三个类别而言,趋势(IEEE Trending)意味着会是有流行趋势的语言的排名,工作(IEEE Jobs)体现了Dice.com和CareerBuilder上的岗位空缺的排名,而开放(IEEE Open)体现了开源项目的数量的排名。
语言流行指数衡量指标的合并图:
可是问题是,这其实无法告诉你着重关注哪种语言。为了深入问题的核心,我对数据进行了一番分析。我整合了来自六个来源中五个的数据(我摈弃了Coding Dojo,因为它只显示十种语言)。然后,我根据它在每个图形上出现的名次、出现了多少次给每种语言加权。我拿来前十名结果后制作了下面这张语言分类聚合图形。
David Gewirtz基于IEEE、 Coding Dojo、PyPl和Tiobe的加权后的合并分析。
正如你所见,有三类语言。第一大类包括Java、C、Python和C++。毫无疑问,你应该熟悉这四种语言。下一大类包括JavaScript、C#、PHP和Swift。剩余两种语言是Objective-C和R。
4.结果告诉了我们什么?
第一大类中的语言:Java、C、Python和C++是很普遍的语言。它们并不与某一种特定的编程平台相关联。
最值得关注的线索是第二大类,包括JavaScript、C#、PHP和Swift。JavaScript和PHP主要是Web开发语言。C#是一种以微软为中心的语言。Swift是苹果新的主要编程语言。从根本上来说,第二大类针对特定的平台。
同样,这告诉了我们什么?如果你了解现代编程,就认识到不仅仅使用语言。你始终为某个对象从事开发,无论该对象是嵌入式系统、iPhone、Web应用程序还是微软服务器应用程序。
语言熟悉程度只是其中的一个方面。比如说,不管你有多喜欢Python或很普通但仍然管用的C,如果你编写WordPress插件或主题,就会用JavaScript和PHP来编写。其他语言有多流行并不重要。如果你的雇主是微软技术开发商,那么你最好了解C#。
5.从字里行间体会言外之意
我希望你注意到几个比较有意思的方面。首先,Coding Dojo的头号语言是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,具体要看你想完成哪一种类型的工作。一旦你熟练掌握了这三种语言中的某一种,就能够比较轻松地选择你所需要的任何其他语言或框架。
放手干吧,去学几种语言,并构建出色的产品。欢迎留言交流!
原文标题:Which programming languages are most popular (and what does that even mean)?,作者:David Gewirtz
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】