哪种编程语言最有“钱途”?
3382
2016-05-31 16:43
文章摘要:  科学技术工程数学(STEM)人才供不应求、薪水丰厚,这早已不是什么新闻。2007年至2012年,美国网上发布的软件工作岗位增加了31%,增长速度是总体工作岗位的近3倍。美国劳工统计局估计,从2012年至2022年,软件开发员岗位会继续以22%的速度增加,截至2014年5月,应用软件开发员的中位数年薪就达到95510美元。   如果


  科学技术工程数学(STEM)人才供不应求、薪水丰厚,这早已不是什么新闻。2007年至2012年,美国网上发布的软件工作岗位增加了31%,增长速度是总体工作岗位的近3倍。美国劳工统计局估计,从2012年至2022年,软件开发员岗位会继续以22%的速度增加,截至2014年5月,应用软件开发员的中位数年薪就达到95510美元。




  如果你打算学习如何编写代码,会发现编程语言的绝对数量多得惊人,到底该学习哪门语言呢?本文比较了与不同编程语言有关的薪水、人气和就业前景,希望对你有一些帮助。




  编程语言概述




  在我们开始比较编程语言之前,不妨先看一下将要介绍的几门语言。




  动态类型语言




  通常认为动态类型语言对非编程人员来说更容易学用,因为它们很灵活。你不需要编写太多行代码,就能迅速从头开始构建起一个应用程序;也没有硬性规定表明如何编写代码,才能让代码以你想要的方式运行。动态类型语言常常是解释型(非编译),这意味着运行中的应用程序可迅速体现你所作的变化,可以为你节省时间。




  一般来说,Web应用程序通常是用动态语言编写的。




  JavaScript




  别将JavaScript
与Java混为一谈;JavaScript
主要是一种客户端脚本语言,用于前端开发。JavaScript
在所有浏览器之间相互兼容,用来构建交互式Web应用程序,常常通过代码库(比如jQuery)和前端框架(比如AngularJS
、Ember.js
、React及更多框架)来构建。




  JavaScript
现在还可以通过Node.js
平台,用作一种服务器端语言。虽然Node.js
比较新,但社区的发展势头很猛。你还可以通过使用PhoneGap之类的框架,借助JavaScript
来构建混合移动应用程序,而Facebook的React Native旨在让你可以借助JavaScript
来构建原生移动应用程序。




  捎带提一下,Facebook的React还支持JS
X,这种JavaScript
语法扩展可以像JavaScript
那样编译。




  Ruby




  Ruby旨在让开发员在高效工作的同时享有乐趣,它因Ruby on Rails框架而流行起来,这种全堆栈Web框架经过了优化,确保编程过程中不失乐趣。由于Ruby与英语语法很相似,Rails又有让常见开发任务“在默认情况下”更容易完成的工具,许多人会建议将Ruby选为你的第一种编程语言。




  Ruby最常用于后端开发;像Airbnb、Shopify、彭博社(Bloomberg)、Hulu、Slideshare及更多热门网站就是用Ruby on Rails构建的。




  Python




  Python是强烈建议初学者上手的另一种语言,它也是美国知名大学最流行的入门语言。开发员使用Python来构建桌面应用程序和Web应用程序,它还有用于数据挖掘的优秀工具。此外,Python在学术界尤其备受欢迎,用于科学计算、数据分析和生物信息学等领域。




  谷歌、Dropbox、Pinterest、Instagram、Reddit、BitTorrent、Civilization IV及更多网站就是用Python构建的。




  PHP




  PHP是一种服务器端脚本语言,通常被认为适合初学者上手,因为PHP代码要完成的任务比较容易概念化,所以学起来不难上手。大多数网站是用PHP构建的,因为这种语言专门面向Web。




  Facebook、维基百科、雅虎、Tumblr、WordPress及更多网站就是用PHP构建的。




  静态类型语言




  众所周知,用静态类型语言构建的应用程序更易于扩展、更稳定、更易于维护。静态语言通常比较苛严(通过类型检查来发现错误),需要编写更多的代码来构建原型。游戏引擎、移动应用程序和企业级后端通常是用静态类型语言构建的。




  Java




  作为一种通用语言,Java用来构建安卓应用程序、桌面应用程序和游戏。Java还常常用作一种服务器端语言,面向企业级后端开发:《财富》500强公司中90%使用Java。




  此外,Hadoop是一种广为流行的基于Java的框架,用来存储和处理大数据,雅虎、Facebook和亚马逊网络服务(AWS)等知名企业实施了该框架。




  C




  C常常用来编写系统软件,是诸多操作系统的通用语。




  C影响了我们在本文中要介绍的几乎所有编程语言,尤其是Objective-C和C++。所以,如果你很熟悉C,其他流行语言学起来恐怕难度不大。由于C需要编写更复杂的代码来执行简单任务,如果初学者选择它作为第一种语言,可能很难保持十足的劲头。不过,掌握C方面的知识对于编程工作肯定大有帮助。




  Objective-C / Swift(面向iOS开发)




  Objective-C是基于C语言上的一层,让它具有静态性,但它也可以用于动态类型。苹果的Swift是一种静态语言,旨在与Objective-C兼容,但其静态类型让它对错误有更强的适应性。




  Swift的灵感源自Python,旨在让编程新手易学易用。由于Swift比较新,我们在本文中主要介绍Objective-C。




  C++




  C++是一种基于C的强大语言。它是为编写系统软件而设计的,不过也用来构建游戏/游戏引擎、桌面应用程序、移动应用程序和Web应用程序。C++功能强、速度快,所以连Facebook也用它开发了几个高性能高可靠性的组件。




  许多款软件是用C++构建的,包括Adobe Systems、Amazon、Paypal、Chrome及更多软件。C++酷似C,通常被认为初学者自学起来比较难。




  C#




  C#是为了用于微软的.NET框架而开发的,这种框架主要在微软Windows上运行。




  C#用于Web开发、游戏开发和一般的微软开发。虽然微软在过去并不以跨平台兼容出名,不过初创公司Xamarin也在开发一个名为Mono的开源项目,旨在将C#移植到其他平台上,为广大Linux开发员带去更好的开发工具。最近,你还可以通过Xamarin,使用C#来构建面向iOS和安卓的原生移动应用程序。




  其他语言




  SQL




  SQL(结构化查询语言)是一种用来与数据库进行联系的查询语言。虽然SQL无法用来构建应用程序,但可以用来管理使用关系数据库管理系统(RDBMS)的应用程序中的数据。




  就业机会




  好了,现在你对编程语言有了一点了解,可能对它们所谓的难度也有了一点了解。不过,并非所有语言都有一样的需求或薪水。如果你学习编程的目的是获得就业机会,也不会被别人说某种语言学起起来多难打消念头,下面这些可以帮助你弄清楚应该学哪种语言。




  从来自indeed.com网站分析招聘广告的薪水估计数来看,我们基本上可以将编程语言分为六档:




  从这个结果来看,似乎Objective C的吸金能力最强,而Java、Ruby、Python、C++和C也是不错的选择。此外,如果薪水是你关注的方面,那么JavaScript
、C#、SQL和PHP似乎不是理想的选择。




  平均薪水会受到许多因素的影响,比如需求(有多少工作岗位)、供给(有多少开发员掌握该语言),以及资历(初级开发员的薪水自然低于高级开发员),所以有必要在下任何结论之前,更深入地分析一下这些因素。




  就业趋势




  凭借你熟悉的那种编程语言,找到工作的可能性有多大?这里简要分析了来自indeed.com的就业趋势:




  我们可以从中看到,Java、JavaScript
和SQL这三类开发员供不应求。尤其是,JavaScript
在这几年的发展相当迅猛,它在2010年超过了C#,如今与Java不相上下。




  相比其他语言,面向C#开发员的工作岗位仍很多;对其他开发员的需求似乎相差无几。C++开发员的相对需求有所减少。




  不过,如果你的目的是供职于初创公司,那么来自indeed.com的就业趋势不是准确的指标。AngelList可以说是初创公司发布工作岗位的首选网站,于是我们根据AngelList上的软件开发员广告,分析一下对编程技能的需求。




  同样,JavaScript
是需求量最大的技能,但初创公司似乎更青睐Python和Ruby(on Rails),而不是Java、C、C++或C#。




  开发员供给市场




  不妨看一下在线编程教练平台Codementor上的教练们擅长哪种语言:




  当然,这绝对无法正确反映实际市场,但是应该让你可以大致了解情况。如你所见,Objective-C专家非常稀缺,不过这一段时间来,移动应用程序行业一直很火爆。由于优秀的Objective-C开发员供不应求,他们的薪水自然比较高。




  另一方面,PHP方面的人才似乎供给充足,这意味着雇主们会有更多的选择,因而在薪水方面有更大的议价能力,但是我们发现它的需求量不如Java、SQL或JavaScript
来得大。因此,PHP开发员的薪水较低。




  JavaScript
的情况比较特殊。尽管人才供给最多,但它在薪水档次中并非垫底,我们会在文章后面分析一下JavaScript




  薪水区间




  你已大致了解了每种语言的供需情况,不妨根据来自工作广告的薪水信息,看一下你有望获得的潜在薪水。数据基于来自gooroo.io的数据,薪水通常作为每份工作广告提供的薪水区间的平均值而获得。




  你在这里可以看到,熟悉Python、Ruby、C++或Objective C的开发员似乎有更高的起薪,但是涨薪空间也比较有限。Python和C++往往处于潜在薪水区间的较高端。




  Java和JavaScript
的最低所出薪水与最高所出薪水之间的差异都很大。尤其是,截至2015年4月,JavaScript
为熟练开发员提供的潜在薪水最高,目前为188168美元。




  特殊情况:JavaScript
框架




  从上述数据来看,我们知道,JavaScript
开发员需求量很大,他们也有最高的潜在薪水,所以JavaScript
开发员之间的标准差相当大。因而,仅仅拿JavaScript
语言与其他编程语言作一番比较无法准确反映出如果你掌握JavaScript
,能拿多少薪水。




  正如在编程语言概述中提到的,JavaScript
是一个大类。许多框架是为了便于前端网站开发而开发的,所以如果你光知道JavaScript
和jQuery,所拿的薪水可能不如熟知JavaScript
框架的其他JavaScript
开发员。




  不妨看一下美国不同JavaScript
框架开发员的平均薪水(React和Backbone是库,而不是框架):




  当然,这仅仅供你了解概况,indeed.com的估计数略有不同。不过,我们可以从这里看到,熟知这些框架的开发员的薪水平均超过102000美元。只有掌握了JavaScript
才能学习这些框架,因而掌握JavaScript
是一项相当有“钱途”的技能。




  再不妨看一下对掌握这些框架的开发员的需求:




  Node.js
是一种后端平台,如果如果仅仅说到前端框架,你能看到AngularJS
显然是赢家,需求猛增。因而,如果你想从事前端JavaScript
开发,也许应该学习AngularJS




  另一方面,React是一项相当新的技术,所以它仍处于起势的阶段,可能会变得更抢手。从indeed.com来看,React开发员的平均薪水为117000美元。




  编程资源




  如果你对开发界有所了解,那么可能知道得到其他开发员的帮助确实很重要、很有帮助,如果你打算自学的话更是如此。




  加入相互帮助的社区无疑会你让未来的开发工作变得更轻松。




  StackOverflow




  StackOverflow是全球广大开发员使用的最大的开发者社区,旨在帮助其他编程员或得到他们的帮助,所以我们自然会分析一种编程语言有多流行,同时也会分析这些语言的相应社区帮助有多大。




  语言的人气




  从StackOverflow上的标签关注者(tag follower)来看,我们能看出一种语言在当下的总人气:




  我们在分析就业趋势后已经知道,Java和JavaScript
开发员的需求量最大,所以它们的标签关注者最多也就不足为奇。尤其是,Java仍是StackOverflow中使用最多的标签,不过JavaScript
似乎很有希望超过它。




  SQL、Ruby和Objective-C的关注者数量最少。由于苹果发布了Swift,Objective-C在今后几年可能发展有限。




  StackOverflow回答率




  StackOverflow有一条不成文的规定:你提出的问题得“措辞得当”,否则别人懒得回答。考虑到这一点,不妨看一下就每种语言而言你的问题被回答的可能性有多大:




  从上述信息来看,虽然较少的StackOverflow用户关注C、SQL和C++,但60%以上的相关问题得到了回答。那些懂行的人可能认为,C和C++是高级语言,这意味着提问题的用户可能在编程方面比较有经验,知道如何以更适当的措辞提问题。另一方面,SQL并不用来构建应用程序。




  值得一提的是,StackOverflow上的Python专家非常乐于助人。谁都知道初学者正确地提问题有难度;如上所述,Python常常是推荐初学者上手的语言。不过,尽管如此,尽管是一种比较受欢迎的语言,Python在30天内的回答率仍超过60%。(Python的头号回答者Martijn Pieters也是Codementor编程教练。)




  另一方面,虽然PHP是一种受到广泛关注的语言,却是回答率最低的语言之一。这意味着,许多人在提PHP方面的问题,但不是很多人的问题得到了回答。




  Github




  一旦你从事开发工作,最终会明白:尽量最好为你自己的项目使用现有的解决方案。你通常可以从开源项目得到现有解决方案,而Github就是绝佳去处。用户可以启动自己喜欢的项目,项目的星数越多,它可能越有用。




  因而,分析来自Github的数据后,我们还能确定使用不同类型的语言开发项目的相对容易程度。我们还了解了一种语言在多快地推出创新的新技术。言归正传,下面这个简单图形可以表明Github流行项目的分布情况:




  很显然,JavaScript
是最耀眼的新工具,即使你不考虑所有的风格指南和教程。众所周知,JavaScript
是一种发展极快的语言,就框架和新技术而言流失率很高,以至于开发员可能觉得难以跟上JavaScript
不断创新的步伐。此外,除了Node.js
平台外,JavaScript
主要用于前端开发,所以它与Ruby、Python、Java和PHP之类的其他后端语言并不直接“竞争”。有鉴于此,难怪JavaScript
与其他编程语言之间会存在如此大的差距。




  另一方面,Ruby和Objective-C也有许多开发工具和资源。有意思的是,我们在 StackOverflow比较中可以看出,这两种语言都不如Java之类的语言来得流行,但开发员通常觉得开源项目更有用。如果你仔细看一下用每种语言编写的总体项目,这对Objective-C来说尤为如此:




  此外,用C/C++编写的大多数开源项目并非面向C/C++开发本身――它们就是为了帮助普通开发而编写的工具(比如说,最常用的Python解释器是CPython,它是用C编写的)。正如在编程语言引言部分中提到,C/C++用来开发系统应用程序,所以Github上的开源项目是系统应用程序有其道理。不过,你可以从开源项目中学到好多东西。




  最后,尽管是一种广泛使用的语言,但PHP在可用资源方面处于落后。至于C#,微软并不以开源做法出名。




  各种编程语言的前景




  一种编程语言在未来有多重要?从目前已了解的趋势来看,我们可以得到下列结论:




  JavaScript




  毫无疑问,JavaScript
只会变得越来越流行,尤其是鉴于它可用于后端开发,甚至有可能构建原生移动应用程序(通过React Native)。JavaScript
继续以相当快的步伐获得更多的工具和更新版,所以可以预计它在将来仍会极其重要。




  Ruby




  初创公司钟爱Ruby on Rails。Airbnb、Twitch和Hulu等许多知名网站都是用Rails构建的,这意味着它们会需要Ruby开发员。此外,由于开发员以使用Rails为乐,又很容易上手,Rails会继续受到编程新手们的追捧。




  话虽如此,强势崛起的Node.js
肯定会对Ruby on Rails的人气有所影响――Node.js
在Github上已经赶超Rails。虽然这并不绝对表明Node.js
会赶超Rails,但是我们应该指出,几年前,Rails同样赶超了Python最大的后端开发Web框架Django,而Rails的星数多过Django。




  此外,“同构”(isomorphic)应用程序这股新趋势可能会影响Rails的采用,因为据说这种开发方法可改善Web应用程序的性能。同构应用程序基本上需要在Node.js
平台上运行,这个平台是用JavaScript
编写的。只要精通一种语言(JavaScript
)的好处也许会让一些潜在的新手不学Ruby。谷歌的Go也是得到一些人关注的另一种后端语言。




  然而,由于Rails继续经常得到更新版,它在一段时期内仍然很重要,尤其是由于它有一个忠诚的社区,成千上万的实用工具有助于简化开发工作。因而,尽管人气下降,但Ruby仍会坚守地盘。




  Python




  Python颇受学术研究人员和数据科学家的欢迎;如前所述,许多学校选择通过Python让初学者学习编程知识。这意味着,Python会继续稳步发展,依然很重要。因此,虽然Python不会像JavaScript
那样迅猛发展,或者在人气和需求方面迎来同样的迅猛增长,但是它继续很强大――不用说,谷歌是建立在Python上的。




  PHP




  这几年来,后端开发趋势一直离PHP渐行渐远,可是世界上80%的网站仍是用PHP构建的,这毕竟是一种为Web设计的语言。




  不过,如果你上网搜索一下初学者应该学哪种编程语言,会发现开发员一般不推荐学PHP。实际上,许多开发员显然很讨厌它。




  PHP社区在竭力摆脱名声欠佳的形象,为此推出了新的准则,教人们如何正确编写PHP代码,并开发了新工具,但总的来说,截至2015年,PHP的未来似乎相当停滞不前(至少在美国是这样)。




  Java




  安卓对于Java继续是最受欢迎的编程语言起到了很大的推动作用,而大多数企业也喜欢Java,因为它比较稳定、比较容易扩展。




  随着Spark(使用Scala语言)和Cassandra(支持其他语言)这两种大数据管理框架日渐崛起,很难说Hadoop保持最流行的大数据管理框架这个头号还会多久,不过考虑到大企业通常不太愿意求变,Hadoop不会消失。Java编程语言同样如此。




  因此,在未来几年,Java会依然很强大,将是最重要的编程语言之一。




  Objective-C




  由于苹果发布了Swift,Objective-C只用于苹果产品,预计Objective-C在将来不会继续流行。不过,这并不意味着你在今年不该学Objective-C,因为大多数面向iOS开发的开源项目仍是用Objective-C编写的。通常来说,使用你不了解的语言可不是什么好主意。




  C




  相比其他编程语言,C相当低级,但由于它是操作系统的通用语,仍会继续流行,因为许多开发工具是用C编写的,Linux也是用C编写的。




  SQL




  SQL是数据库管理员几乎普遍知道的语言。曾经一度,随着MongoDB和Redis等NoSQL服务大行其道,non-SQL使用大数据计算平台(比如Hadoop、Spark和Cassandra),SQL似乎沦为边缘化。许多人哀号SQL将消亡。




  显然不再是这样。因而,连NoSQL也不得不将自己定位成“不只是SQL”(Not Only SQL)。




  由于大数据的兴起,加上管理大数据有难度,SQL比以往更炙手可热(你已经从就业趋势中知道这一点)。谷歌最近也更新了其BigQuery服务,所以现在每秒每张表最多能消化吸收100000行,而BigQuery就使用SQL。自版本1.3以来,Spark也有Spark SQL模块。




  总之,SQL再次体现其重要性,因为管理(不是存储)大数据离不开它。因而,不仅SQL无所不在,可以说SQL在未来一段时间会继续很重要。




  C++




  从性能和功能方面来看,C++仍被认为是最强大的语言(即使相比Rust),它在某些领域可能会继续很重要,比如需要高性能的(比如游戏引擎)。最新标准(C++14)的重大修订版预计会在2017年发布,所以它仍是一种不断发展的语言。




  将来,Rust在系统编程的一些方面有可能会取代C++,因为Rust旨在能够开发出比C++更安全的软件。此处(https://www.codementor.io/rust/tutorial/steve-klabnik-rust-vs-c-go-ocaml-erlang)进一步介绍了Rust与其他语言相比如何。眼下也是学习Rust的大好时机。




  C#




  在过去,局限于微软平台和作为闭源语言对C#很不利,但是Mono基本上解决了那些问题(不过Mono存在性能问题,最近的更新版有所改进)。




  用过C#的开发员似乎很喜欢C#编程语言,所以它有强大的社区。不用说,C#是Unity 3D的主要语言,这种颇受欢迎的游戏引擎还可以用在iOS和Linux等操作系统上。




  关于这一点,C#在美国之外的国家(比如英国)也比较受欢迎,用于企业开发。很显然,微软会让C#存活一阵子,确保它对.NET平台来说很重要。




  结束语




  编程初学者应该学习哪种语言?很显然,如果你想从事Web开发,免不了要学习JavaScript
,不管你喜不喜欢它。




  此外,如果你想挖掘网站分析数据,或者你有兴趣成为数据科学家,那么学Python这种语言很不错。如果你想供职于大企业,那么Java是不二的选择。如果你对构建应用程序其实不是很感兴趣,而对就业机会比较有兴趣,那么SQL可能是不错的起点(如果你喜欢数学更是如此)。




  总之,你在今年应该学习哪种编程语言最终将取决于你想要做什么。


版权声明:

凡本网内容请注明来源:T媒体(http://www.cniteyes.com)”的所有原创作品,版权均属于易信视界(北京)信息科技有限公司所有,未经本网书面授权,不得转载、摘编或以其它方式使用上述作品。

本网书面授权使用作品的,应在授权范围内使用,并按双方协议注明作品来源。违反上述声明者,易信视界(北京)信息科技有限公司将追究其相关法律责任。

评论