当前位置: 首页 > 科技观察

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

时间:2023-03-17 19:31:59 科技观察

如果你打算学习写代码,你会发现编程语言的数量之多,多得惊人。你应该学习哪种语言?本文比较了与不同编程语言相关的薪水、受欢迎程度和工作前景。我希望它能帮助你。  编程语言概述  在开始比较编程语言之前,我们先来看一下将要涉及到的几门语言。  动态类型语言  动态类型语言通常被认为对于非程序员来说更容易学习,因为它们很灵活。您无需编写多行代码即可从头开始快速构建应用程序;关于如何编写代码以使其按照您想要的方式运行,没有硬性规定。动态类型语言通常是解释型的(不是编译型的),这意味着正在运行的应用程序可以快速反映您所做的更改,从而节省您的时间。  一般来说,Web应用程序通常是用动态语言编写的。  JavaScript  不要将JavaScript与Java混淆;JavaScript主要是一种用于前端开发的客户端脚本语言。JavaScript兼容所有浏览器,通常通过jQuery等代码库和AngularJS、Ember.js、React等前端框架来构建交互式Web应用程序。  JavaScript现在也可以通过Node.js平台作为服务器端语言使用。尽管Node.js相对较新,但社区发展势头强劲。您还可以使用PhoneGap等框架使用JavaScript构建混合移动应用程序,而Facebook的ReactNative旨在让您使用JavaScript构建本机移动应用程序。  顺带一提,Facebook的React也支持JSX,这是一种像JavaScript一样编译的JavaScript语法扩展。  Ruby  Ruby旨在让开发人员在享受乐趣的同时提高工作效率,它因RubyonRails框架而得到普及,RubyonRails框架是一个经过优化的全栈Web框架,可让编程变得有趣。由于Ruby与英语语法相似,并且Rails的工具“默认”使常见的开发任务更容易,因此许多人会推荐Ruby作为您的首选编程语言。  Ruby最常用于后端开发;Airbnb、Shopify、Bloomberg、Hulu、Slideshare等热门网站都是使用RubyonRails构建的。  Python  Python是又一门极力推荐给初学者的语言,也是美国名校最受欢迎的入门语言。开发人员使用Python构建桌面和Web应用程序,它还具有出色的数据挖掘工具。此外,Python在学术界特别受欢迎,它被用于科学计算、数据分析和生物信息学等领域。  Google、Dropbox、Pinterest、Instagram、Reddit、BitTorrent、CivilizationIV等都是使用Python构建的。  PHP  PHP是一种服务器端脚本语言,通常被认为对初学者友好,因为它很容易概念化PHP代码试图完成的任务。大多数网站都是用PHP构建的,因为这种语言专门面向网络。  Facebook、维基百科、雅虎、Tumblr、WordPress以及更多网站都是使用PHP构建的。  静态类型语言  众所周知,使用静态类型语言构建的应用程序更具可扩展性、稳定性和可维护性。静态语言通常更严格(类型检查以捕获错误)并且需要将更多代码写入原型。游戏引擎、移动应用程序和企业级后端通常使用静态类型语言构建。  Java  作为一种通用语言,Java用于构建Android应用程序、桌面应用程序和游戏。Java也常用作企业级后端开发的服务器端语言:《财富》90%的财富500强企业都使用Java。  此外,Hadoop是一种基于Java的流行框架,用于存储和处理大数据,由雅虎、Facebook和亚马逊网络服务(AWS)等知名企业实施。  C  C常被用来编写系统软件,是很多操作系统的通用语。  C几乎影响了我们在本文中介绍的所有编程语言,尤其是Objective-C和C++。所以,如果你熟悉C,其他流行的语言学起来可能不难。因为C需要编写更复杂的代码来执行简单的任务,所以如果初学者选择它作为第一语言,他们可能很难保持动力。但是,掌握C的知识对于编程工作肯定是有帮助的。  Objective-C/Swift(用于iOS开发)  Objective-C是C语言之上的一层,使其成为静态的,但它也可以用于动态类型。Apple的Swift是一种静态语言,旨在与Objective-C兼容,但其静态类型使其更容易出错。  Swift的灵感来自Python,旨在让初学者易于学习和使用。由于Swift相对较新,因此我们将在本文中重点介绍Objective-C。  C++  C++是一种基于C的强大语言。它专为编写系统软件而设计,但也用于构建游戏/游戏引擎、桌面应用程序、移动应用程序和Web应用程序。C++功能强大、速度快,所以连Facebook都用它开发了几个高性能、高可靠的组件。  许多软件都是用C++构建的,包括Adob??eSystems、Amazon、Paypal、Chrome等。C++与C非常相似,一般认为初学者很难自学。  C#  C#是为与Microsoft的.NETFramework一起使用而开发的,该框架目前主要在MicrosoftWindows上运行。  C#用于网络开发、游戏开发和一般微软开发。虽然微软过去并不以跨平台兼容性着称,但初创公司Xamarin也在开发一个名为Mono的开源项目,旨在将C#移植到其他平台,为Linux开发人员带来更好的开发工具。最近,您还可以使用C#通过Xamarin为iOS和Android构建本机移动应用程序。  其他语言  SQL  SQL(结构化查询语言)是一种用于与数据库进行通信的查询语言。虽然SQL不能用于构建应用程序,但它可用于使用关系数据库管理系统(RDBMS)管理应用程序中的数据。  就业机会  好了,现在你对编程语言有了一点了解,大概也了解了它们所谓的难度。然而,并非所有语言都有相同的需求或薪水。如果你学习编程的目的是为了找工作,并且你不会因为某种语言的学习难度而气馁,那么这里有一些东西可以帮助你确定你应该学习哪种语言。  从indeed.com网站招聘广告的薪资估算分析,我们基本上可以将编程语言分为六个等级:Java、Ruby、Python、C++、C也是不错的选择。此外,如果您关心薪水,JavaScript、C#、SQL和PHP似乎也不是理想的选择。  平均工资受需求(有多少工作岗位)、供应(有多少开发人员懂这门语言)、资历(初级开发人员的薪水自然低于高级开发人员)等多种因素影响,所以有A在得出任何结论之前,有必要对这些因素进行更深入的分析。  就业趋势  用自己熟悉的编程语言找到工作的可能性有多大?下面简单分析一下indeed.com的就业趋势:  可以看出Java、JavaScript、SQL这三类开发人员供不应求。尤其是JavaScript,多年来发展非常迅速,在2010年超过了C#,现在与Java并驾齐驱。  与其他语言相比,C#开发人员的工作机会仍然很多;对其他开发商的需求似乎也差不多。对C++开发人员的相对需求已经减少。  但是,如果您打算为一家初创公司工作,那么来自indeed.com的就业趋势并不是准确的指标。AngelList可以说是创业公司发布职位的最佳网站,所以我们根据AngelList上的软件开发者广告分析了对编程技能的需求。  同样,JavaScript是最受欢迎的技能,但初创公司似乎更喜欢Python和Ruby(onRails),而不是Java、C、C++或C#。  开发者供应市场  看看在线编程辅导平台Codementor上的教练擅长哪些语言:  当然,这绝不是对实际市场的正确反映,但它应该给你一个想法。如您所见,Objective-C专家非常稀缺,但移动应用行业已经蓬勃发展了一段时间。由于优秀的Objective-C开发人员供不应求,他们的薪水自然会更高。  另一方面,PHP方面的人才供应似乎充足,这意味着雇主有更多选择,因此在薪资方面有更大的议价能力,但我们发现它不像Java、SQL或JavaScript变大了。因此,PHP开发人员的薪水较低。  JavaScript是一个特例。虽然它拥有最多的人才供应,但并不是薪资表的垫底。我们将在本文后面分析JavaScript。  薪酬范围  既然您已经了解了每种语言的供求关系,那么根据招聘广告中的薪资信息,看看您可能期望获得的潜在薪资。数据基于gooroo.io的数据,薪水通常是每个招聘广告提供的薪水范围的平均值。  在这里可以看到,熟悉Python、Ruby、C++或ObjectiveC的开发者起薪似乎更高,但涨薪空间也比较有限。Python和C++往往处于潜在薪资范围的高端。  Java和JavaScript在黑客获得报酬和黑客获得报酬之间存在巨大差异。特别是,截至2015年4月,JavaScript为熟练开发人员提供的潜在薪水***目前为188,168美元。  特例:JavaScript框架  从上面的数据,我们知道JavaScript开发人员的需求量很大,有巨大的潜在薪水,因此JavaScript开发人员之间的标准差相当大。因此,简单地将JavaScript语言与其他编程语言进行比较,并不能准确反映掌握JavaScript能赚多少钱。  编程语言概述中提到,JavaScript是一个大类。许多框架都是为了方便前端网站开发而开发的,所以如果你只知道JavaScript和jQuery,你可能不会像其他熟悉JavaScript框架的JavaScript开发人员那样获得报酬。  看看美国不同JavaScript框架开发者的平均工资(React和Backbone是库,不是框架):  当然,这只是给你一个概况,indeed.com估计不同轻微地。但是,我们可以在这里看到熟悉这些框架的开发人员的平均工资超过102,000美元。只有掌握了JavaScript才能学习这些框架,所以掌握JavaScript是一项非常赚钱的技能。  看看对掌握这些框架的开发者的需求:  Node.js是一个后端平台,如果只说前端框架,可以看出AngularJS是明显的赢家,需求量直线上升。所以,如果你想做前端JavaScript开发,也许你应该学习AngularJS。  另一方面,React是一项相当新的技术,因此它仍处于起步阶段,可能会变得更受欢迎。根据indeed.com的数据,React开发人员的平均工资为117,000美元。  编程资源  如果您对开发世界有所了解,您可能知道从其他开发人员那里获得帮助非常重要和有帮助,特别是如果您打算自学。  加入一个互相帮助的社区,无疑会让你以后的开发工作变得更加轻松。  StackOverflow  StackOverflow是最大的开发者社区,全世界的开发者都用它来帮助或者得到其他程序员的帮助,所以我们自然而然地分析一种编程语言有多流行,同时也会分析对应的社区对这些语言的帮助有多大是。  语言流行度  从StackOverflow上的tagfollowers,我们可以看出一门语言目前的总流行度:  我们在分析就业趋势后已经知道Java和JavaScript开发人员是最需要的,所以他们拥有最多的标签追随者也就不足为奇了。特别是,Java仍然是StackOverflow上最常用的标签,尽管JavaScript似乎有望超越它。  SQL、Ruby和Objective-C的追随者数量最少。自从Apple发布了Swift之后,Objective-C在未来几年内可能发展有限。  StackOverflow回答率  StackOverflow有个不成文的规定:你的问题一定要“措辞得当”,否则别人懒得回答。考虑到这一点,让我们来看看你的问题对于每种语言的回答可能性有多大:  从上面的信息来看,虽然较少的StackOverflow用户关注C、SQL和C++,但60%的以上相关问题有得到答复。知情者可能认为C和C++是高级语言,这意味着提出问题的用户可能更有编程经验,知道如何用更恰当的术语提出问题。另一方面,SQL不用于构建应用程序。  值得一提的是,StackOverflow上的Python专家非常乐于助人。每个人都知道初学者正确提问是多么困难;如上所述,Python通常是初学者推荐的语言。尽管如此,尽管Python是一种更受欢迎的语言,但它在30天内的回答率仍然超过60%。(Python最佳答题者MartijnPieters也是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#,Microsoft并不以其开源实践而闻名。  各种编程语言的前景  未来编程语言有多重要?从我们目前看到的趋势来看,我们可以得出以下结论:可以构建原生移动应用程序(通过ReactNative)。JavaScript继续以相当快的速度获得更多工具和更新,因此可以预期它在未来仍然非常重要。  Ruby  初创公司喜欢RubyonRails。许多知名网站(如Airbnb、Twitch和Hulu)都是使用Rails构建的,这意味着它们需要Ruby开发人员。此外,Rails将继续受到编程新手的欢迎,因为开发人员喜欢使用它,而且它很容易上手。  话虽如此,Node.js的强势崛起肯定会对RubyonRails的流行产生影响——Node.js在Github上已经超过了Rails。虽然这并不是Node.js将超越Rails的绝对迹象,但我们应该指出,几年前Rails也超越了Python领先的后端开发Web框架Django,并且Rails比Django拥有更多的明星。  此外,“同构”应用程序的新趋势可能会影响Rails的采用,因为据说这种开发方法可以提高Web应用程序的性能。同构应用程序基本上需要运行在Node.js平台上,它是用JavaScript编写的。只精通一种语言(JavaScript)的好处可能会阻止一些潜在的新手学习Ruby。Google的Go是另一种受到关注的后端语言。  然而,随着Rails不断得到频繁更新,它将在一段时间内保持相关性,尤其是因为它拥有忠实的社区和数以千计的有用工具,有助于简化开发。因此,尽管受欢迎程度下降,Ruby仍将占据一席之地。  Python  Python很受学术研究人员和数据科学家的欢迎;如前所述,许多学校选择使用Python供初学者学习编程。这意味着Python将继续稳步发展,并且仍然很重要。因此,虽然Python不会像JavaScript那样腾飞,也不会经历同样的流行度和需求的急剧上升,但它仍然很强大——不用说,谷歌是建立在Python之上的。  PHP  过去几年,后端开发趋势逐渐远离PHP,但世界上80%的网站仍然是用PHP构建的,PHP毕竟是一门专为网页设计的语言。  不过如果你上网搜索一下初学者应该学习哪种编程语言,你会发现开发人员一般不建议学习PHP。事实上,许多开发人员显然讨厌它。  PHP社区一直在努力摆脱其臭名昭著的形象,引入新的指导方针,教人们如何正确编写PHP代码,并开发新工具,但总的来说,截至2015年,PHP的未来似乎停滞不前(至少在美国)。  Java  Android在Java继续成为最流行的编程语言方面发挥了很大的作用,大多数企业也喜欢Java,因为它更稳定,更容易扩展。  随着Spark(使用Scala语言)和Cassandra(支持其他语言)这两个大数据管理框架的崛起,很难说Hadoop还能在多长时间内保持大数据管理框架第一的地位。企业往往不愿意改变,Hadoop也不会消失。Java编程语言也是如此。  所以Java会保持强势,会在未来几年成为最重要的编程语言之一。  Objective-C  自从Apple发布Swift后,Objective-C仅在Apple产品中使用,预计Objective-C未来不会继续流行。然而,这并不意味着你今年不应该学习Objective-C,因为大多数用于iOS开发的开源项目仍然是用Objective-C编写的。通常,使用您不懂的语言不是一个好主意。  C  C与其他编程语言相比是相当低级的,但由于它是操作系统的通用语言而继续流行,因为许多开发工具都是用C编写的,Linux也是用C编写的.  SQL  SQL是一种几乎为数据库管理员所熟知的语言。有一段时间,随着MongoDB和Redis等NoSQL服务风靡一时,以及使用Hadoop、Spark和Cassandra等大数据计算平台的非SQL服务,SQL似乎处于边缘地位。许多人哀叹SQL将消亡。  显然已经不是这样了。因此,即使是NoSQL,也不得不将自己定位为“NotOnlySQL”。  由于大数据的兴起和管理的难度,SQL比以往任何时候都更热(你已经从工作趋势中知道这一点)。谷歌最近还更新了它的BigQuery服务,现在每个表每秒最多可以摄取100,000行,而且BigQuery使用SQL。从1.3版本开始,Spark也有一个SparkSQL模块。  总之,SQL再次重要,因为管理(而不是存储)大数据与它密不可分。因此,不仅SQL无处不在,而且可以说SQL在未来一段时间内将继续发挥重要作用。  C++  C++在性能和功能方面仍然被认为是最大的语言(甚至与Rust相比),并且它可能在某些领域继续发挥重要作用,例如那些需要高性能的领域(例如游戏引擎)。预计2017年将对***标准(C++14)进行重大修订,因此它仍然是一种不断发展的语言。  在未来,Rust可能会在系统编程的某些方面取代C++,因为Rust旨在能够开发出比C++更安全的软件。这里(https://www.codementor.io/rust/tutorial/steve-klabnik-rust-vs-c-go-ocaml-erlang)进一步介绍了Rust与其他语言的比较。现在也是学习Rust的好时机。  C#  过去,C#受限于Microsoft平台并且是一种闭源语言,这对C#不利,但Mono基本上解决了这些问题(尽管Mono存在性能问题,在最近的更新中得到了改进).  使用过C#的开发者似乎很喜欢C#编程语言,所以它有一个强大的社区。不用说,C#是Unity3D的主要语言,这个流行的游戏引擎也可以在iOS和Linux等操作系统上使用。  在这一点上,C#在美国以外(例如英国)也很流行用于企业开发。显然,微软打算让C#存活一段时间,确保它对.NET平台很重要。  结语  初学者应该学习哪种编程语言?显然,如果你想从事Web开发工作,就无法避免学习JavaScript,无论你喜不喜欢。  另外,如果你想挖掘网络分析数据,或者如果你有兴趣成为一名数据科学家,Python是一种很好的学习语言。如果您想为大型企业工作,那么Java是显而易见的选择。如果您不是真正对构建应用程序感兴趣,而是对工作机会更感兴趣,那么SQL可能是一个不错的起点(尤其是如果您喜欢数学)。  总之,今年学什么编程语言,最终要看你想做什么。