2015年编程语言“钱途”盘点

2018-07-20    来源:编程学习网

容器云强势上线!快速搭建集群,上万Linux镜像随意使用

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

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

  编程语言概述

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

  动态类型语言

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

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

  JavaScript

173936dkuk7gahqu5dh773

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

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

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

  Ruby

173937i64bj7svo9d1jl9z

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

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

  Python

173937qn4skk45hx54ff9h

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

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

  PHP

173938bcq5mf2x52ggm4kf

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

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

  静态类型语言

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

  Java

173938p8r5wbffmrdr5t56

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

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

  C

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

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

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

173938ufxv2icaxudi7g7i

  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

173938hpriz31fi15prnr2

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

  就业机会

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

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

173938ricmahybaucmhcyj

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

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

  就业趋势

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

173938zlsvnxkmrvon6kff

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

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

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

173939ox5zkxagkykl9f89

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

  开发员供给市场

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

173939f1vn0nrat1axw7i0

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

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

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

  薪水区间

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

173939x3jj1syjdbypoaz1

  你在这里可以看到,熟悉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是库,而不是框架):

173939v491pss64ztsuo0g

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

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

173939narrrpa8i0r0nr1r

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

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

  编程资源

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

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

  StackOverflow

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

  语言的人气

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

173939okqabeog0o0q2gal

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

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

  StackOverflow回答率

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

173939pgnhzz80nwb8wgr0

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

  值得一提的是,StackOverflow上的Python专家非常乐于助人。谁都知道初学者正确地提问题有难度;如上所述,Python常常是推荐初学者上手的语言。不过,尽管如此,尽管是一种比较受欢迎的语言,Python在30天内的回答率仍超过60%。(Python的头号回答者Martijn Pieters也是Codementor编程教练。)
另一方面,虽然PHP是一种受到广泛关注的语言,却是回答率最低的语言之一。这意味着,许多人在提PHP方面的问题,但不是很多人的问题得到了回答。

  Github

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

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

173940vdl9z6d4g326zf64

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

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

173940zzktdxtyk9bdxktv

  此外,用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。实际上,许多开发员显然很讨厌它。

173940gicc319ck3k3k9x3

  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可能是不错的起点(如果你喜欢数学更是如此)。

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

标签: linux 安全 处理大数据 大数据 代码 服务器 服务器端 谷歌 脚本 开发者 数据分析 数据库 搜索 网络

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:提高 ASP.NET Web 应用性能的 24 种方法和技巧

下一篇:编程认知:多思考、多编码、多测试