问答|当你选择编程语言时你在选择什么
在“问答|我适合做软件开发吗”中提到了“我是否适合做软件开发”和“怎样开始行动”两个问题,这次我们来回答这个问题:我应该学哪种语言?
编程语言流行度在说什么
TIOBE编程语言社区排行榜是编程语言流行趋势的一个指标,每月更新,这份排行榜排名基于互联网上有经验的程序员、课程和第三方厂商的数量。TIOBE的排名很值得参考,但请注意这个排行榜只是反映某个编程语言的热门程度,并不能说明一门编程语言好不好。下面是2015年TIOBE的编程语言排行:
Stack Overflow是最火、最专业、最有效的IT技术问答网站,很多机构或个人通过它的标签来分析编程语言的流行趋势,也具有很强的可参考性。
Stack Overflow 2015年的开发者调查结果中最受欢迎的技术如下:
最被喜爱的语言如下:
Github是全球最火最流行的开源代码托管站点和社区,下图是其2015年8月份的数据,包含了最热的10大编程语言,以及2008—2015年热门语言的变化趋势:
关于编程语言和技术的流行度排名有很多,它们在说什么?我们能否根据它们来选择学习哪门语言?
编程语言的流行度说明了:
●哪些语言当下一段时间内比较流行。
●比较近的将来(2~3年)哪些语言比较有生命力。
●语言的就业难度。
所以,在选择语言时,编程语言排行榜有一定的参考价值。编程语言的热门程度在很大程度上决定了你能够进入什么样的公司,获得什么样的项目。
选择语言时你在选择什么
对还没入行的人来说,要选择一门编程语言,确实要考虑很多因素。在这里,我把我知道的列出来,供初学者参考。
1.技术图谱
当你选择一门编程语言时,你不仅仅选择了语言本身,还有围绕着这门语言产生的各种各样的应用框架。比如你选择C++,将来就可能接触到这些框架:
Boost、Qt、Silicon、TuFao、TreeFrog、WTL、STL、libev、Cocos2d-x、Dlib、Ultimate++、Asio、TinyXML、libxml++、CEGUI、FLTK、wxWidgets、Ogre 3D、Cairo、Skia、OpenCV、CxImage、Json++、Json11、CppUnit、OpenSSL、Crypto++、C++React、OpenCL、OpenAL、Vorbis、Memcached、libcurl、SQLite……
除了直接与你所选语言相关的技术框架,还有一些可能经常会与你所用语言搭配的其他语言,比如你选择C++,那么Java、C、Python、JavaScript就是与它搭配使用比较频繁的语言。像Node.js,就是混合体了;JNI也在Java和C之间搭建了桥梁……
你最终会根据你选择的语言构建出自己的技术图谱,你的技术图谱决定了你将来的发展和你在企业眼中的价值。
从这一点讲,应当关注流行度高、应用广泛、有大公司参与的语言。
2.行业
有机构通过分析与C++语言相关的招聘信息得出的结果,使用C++语言的前三个行业是:金融、银行和游戏。然后是:Front Office、通信、电子、投行、市场、制造业、零售业。
你选择了某种语言,就可能到该语言应用最多的行业里去。所以,在选择语言时,有必要了解对应语言被应用最多的行业。
也有时是你想做的产品决定了你要用的语言,比如你想么做iOS上的游戏,那么选择Objective-C就比较靠谱,而如果你想做跨平台的游戏,支持Android和iOS,可能C++和Cocos 2d-x会比较适合。
3.薪水
技术本身无优劣,应当根据特定场景下适合不适合来选择和看待。打个比喻,产品和需求是脚,技术是鞋子。但,不可否认的是,在你择业时,不同的语言,薪水起点是不同的。
比如你选择Objective-C、JavaScript、Android,起点是不同的,到招聘网站搜索一下对应岗位用人企业给出的薪水范围就可以看出来。
职业规划公司Gooroo通过仔细查看了美国、英国和澳大利亚的超过50万份的IT职位空缺,统计出了需求热度排名前10的语言对应的职位的薪水(http://www.sitepoint.com/best-programming-language-learn-2015-job-demand-salaries/,下面表格中的比率指某种语言在招聘广告中出现的比率,年薪指平均年薪,单位是美元):
语言有地区性差异,上面的数据可能更偏向美国。国内我没找到这样的数据,但语言与薪水有相关性,这是毋庸置疑的。
4.同行多寡
不同语言使用的人数不同,你选择语言时还会选择和哪些人同行、和多少人同行。搞技术无人切磋是寂寞的。所以,使用人数多少也是一个考虑因素。有时一门语言的绝对使用人数并不能影响你,相对的,你身边有多少人使用这门语言可能会对你有很大影响。此时地理因素又很重要,比如Scala,可能在北京有一些人用,在西安则找不到几个人使用,你要在西安使用Scala,就很少能找到同伴来沟通。
如果你的身边有很多和你一样学习该语言的人,那么在遇到困难的时候能够及时地寻求帮助。这一点也很重要。
2015年4月15日JetBrains发布了CLion,一个跨平台的C/C++ IDE。还捎带着统计了C/C++程序员及其他程序员的数量。以下数据是全球范围内的学习相关语言的程序员的数量统计。
●Java有900万人。
●C#大约780万人。
●JavaScript大约760万人。
●PHP将近600万人。
●C++大约440万人。
●Python有400万人。
●Objective-C大约330万人。
●C大约190万人。
●Ruby大约180万人。
5.气质
语言有性格,会与人的气质相互影响。有人就喜欢C不喜欢Java,有人就喜欢Java讨厌C#,有人就喜欢C#憎恶PHP……
为什么有时你对一种技术会有“相看两不厌,唯有敬亭山”的感觉?那是因为,你和这门技术气质相近,和创建者气质相近……
总结
回顾一下,其实选择编程语言时经常考虑下面几个因素:
●应用范围,即行业和产品所需。
●薪资多少。
●同行多寡,和语言有关,有时也和地理属性有关。
●热门程度。
这些都可以通过互联网信息检索、整理得出,所以,你可以自己决定选择哪一门语言。