在“问答 | 我适合做软件开发吗”一文中,提到了“我是否适合做软件开发”和“怎样开始行动”两个问题,这次我们来回答这个问题:我应该学哪种语言?
编程语言流行度在说什么
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++和Cocos2d-x会比较适合。
3. 薪水
技术本身无优劣,应当根据特定场景下适合不适合来选择和看待。打个比喻,产品和需求是脚,技术是鞋子。但,不可否认的是,不同的语言,在你择业时,薪水起点是不同的。
比如你选择Objective-C、JavaScript、Android,起点是不同的,到招聘网站搜索一下对应岗位用人企业给出的薪水范围就可以看出来。
职业规划公司Gooroo通过仔细查看了美国、英国和澳大利亚的超过50万份的IT职位空缺,统计出了需求热度排名前10的语言对应的职位的薪水(http://www.sitepoint.com/best-programming-language-learn-2015-job-demand-salaries/,下面表格中的比率指某种语言在招聘广告中出现的比率,年薪指平均年薪,单位美元):
排名 | 语言 | 比率 | 年薪($) |
---|---|---|---|
1 | Java | 18% | 100,000 |
2 | JavaScript | 17% | 90,000 |
3 | C# | 16% | 85,000 |
4 | C | 9% | 90,000 |
5 | C++ | 9% | 95,000 |
6 | PHP | 7% | 75,000 |
7 | JPython | 5.5% | 100,000 |
8 | R | 3% | 65,000 |
9 | Scheme | 3% | 65,000 |
10 | Perl | 3% | 100,000 |
语言有地区性差异,上面的数据可能更偏向美国。国内我没找到这样的数据,但语言与薪水有相关性,这是毋庸置疑的。
4. 同行多寡
不同语言使用的人数不同,你选择语言时还会选择和哪些人同行、和多少人同行。搞技术无人切磋是寂寞的。所以,使用人数多少也是一个考虑因素。而一门语言的绝对使用人数有时并不能影响你,相对的,你身边有多少人用可能会对你有很大影响。此时地理因素又很重要,比如Scala,可能北京有一些人用,西安则找不到几个,你要在西安用Scala,就很少能找到同伴来沟通。
如果你的身边有有很多和你一样学习该语言的人,那么在遇到困难的时候能够及时的寻求帮助。这一点很重要哦。
2015年4月15日 JetBrains(牛B公司,各种IDE)发布了 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……
为什么有时你对一种技术会有“相看两不厌,唯有敬亭山”的感觉?那是因为,你和这门技术气质相近,和创建者气质相近……
这里有一张使用不同语言的程序员的气质图:
能参考?能参考?真的能吧……
总结
回顾一下,其实选择编程语言时经常考虑下面几个因素:
应用范围,即行业和产品所需
薪资多少
同行多寡,和语言有关,有时也和地理属性有关
热门程度
这些都可以通过互联网信息检索、整理得出,所以,你可以自己决定选择哪一门语言喽。