到底开发者需要3个月掌握一门语言多少门语言

2016年,有哪些适合你学习的编程语言?
译者:张天军
原文:What Programming Language Should a Beginner Learn in 2016?
本文为极客学院Wiki组织翻译,转载请注明出处。
众所周知,理工类的人才一直是很紧缺并且有不错收入的。而且,从2007年到2012年,美国的在线招聘对软件方面的工作的需求涨了31%,这几乎是平均水平的3倍。美国劳工部的数据预计,软件开发的工作从2012年到2022年要继续涨22%,软件开发者的年收入中位数在2014年5月达到95,510美元。
如果你正考虑学习编程,各种编程语言的介绍可能让你难以招架 — 到底应该学哪门编程语言呢?希望这篇文章能从各种编程语言的收入,流行度,未来的前景方面给你一些启发。
以下是一个有趣的问答,也许能帮助你选择哪种语言是2016年适合你学习的语言。
编程语言一览
在我们对比各种语言之前,首先让我们来看一下包含了哪些语言。
动态语言通常被人们认为更加适合初学者学习,因为它们更加多样化也更加有趣。你可以很快地用相对少的代码构建一个应用程序,在你希望用代码实现某个你想要的功能时,没有太多的强制规则限制。
由于动态语言通常是很高级的语言,你只需要话很少的时间去掌握编程语言的细节,从而让更多的精力集中于学习编程概念上,由于初学者对于能让学习成果立竿见影感到很有动力,这也是动态语言在初学者中很流行的另一个原因。
JavaScript
别和Java搞混淆了,JavaScript是一门主要在客户端运行的脚本语言,用来做前端开发的。Javascript兼容所有的浏览器,一般通过使用比如jQuery的库和一些比如AngularJS,Ember.js,React等的前端框架来创建web应用。
由于Node.js平台的出现,Javascript 现在也可以作为一门服务器端语言了,虽然Node.js相对来说比较新,但该社区正在获得更多的关注。你也可以通过JavaScript的框架(比如:phonegap)来构建混合的移动应用,Facebook的React Native旨在让开发者通过JavaScript开发本地语言的移动应用。
然而,由于JavaScript的 untyped ,导致debug很困难,所以也被认为是一门很难的语言。它也有一些有类型的语言版本,比如:微软的TypeScript,或是React使用的JSX。
为了让开发更加开心和高效地开发而设计的语言,Ruby因Ruby on Rails框架而流行,Ruby on Rails 是一个一站式的 Web 开发框架,为了开发者开发的便利而优化。Ruby代码阅读起来更像是在读英语,Rails的工具使得日常的开发任务更简单(这些工具方便使用,无需繁琐配置)。
Ruby 主要被用来做后端的开发,一些很流行的网站比如 Airbnb,Shopify,Bloomberg,Hulu,Slideshare,和更多的网站开始用Ruby on Rails构建后台。
Python 是另一门被强烈推荐给初学者的编程语言,是美国大学里入门编程语言最流行的。开发者可以用它来编写桌面端和服务器端的应用,它也有用来数据挖掘的很好的工具。另外,Python在科学计算,数据分析,生物信息等学术领域也非常流行。
Google,Dropbox,Pinterest,Instagram,Reddit,BitTorrent,Civilization IV 和更多的公司已经开始用Python构建软件了。
PHP是一门服务器端的脚本语言,由于易于其代码掌握而通常被认为是对初学者友好的语言,PHP入门并不难。大部分网站曾经用过PHP构建,因为很大程度上这就是一门专门为Web开发设计的语言。
Facebook, Wikipedia, Yahoo!, Tumblr, WordPress等更多的网站曾用过PHP构建。
用静态的类型的语言构建的软件通常以更易扩展,更稳定也更加好维护而著称。静态语言通常在通过类型检查而捕获错误方面更严格,需要更多的代码来构建一个原型。游戏引擎,移动应用和企业级的后台一般都是用静态的类型语言构建的。
作为一门通用功能的语言,Java被用来构建Android应用,桌面应用和游戏。Java也通常被用作服务器端的开发语言用来开发企业级的后台-90%的世界500强企业使用Java。
而且,Hadoop 也是一个基于Java的很流行的存储和处理大数据的框架,它也被Yahoo,Facebook,and Amazon这样的企业用于Web服务。
C 通常被用于系统软件的开发,也是操作系统的通用语言。
C语言几乎影响了所有我们介绍的编程语言,尤其是Objective-C和C++。所以如果你很了解C语言,你在学习其他语言时就不会有什么困难。由于使用C完成一个简单任务需要更复杂的代码,初学者也许会发现如果他们如果把C作为入门语言,会很难保持学习的动力。然而C语言的有关知识会使一个程序员受益匪浅。
Objective-C / Swift (for iOS development)
Objective-C 是在C语言上进行了一层封装,使得它变成静态,但同时也能用于动态类型。苹果的Swift是一门设计成与Objective-C兼容的的静态语言,但它的静态类型使得他更不容易出错。
受Python的启发,Swift是想成为编程新手易于掌握的语言,也是按照能修复一些Objective-C的问题的方向设计的。
C++是一门基于C的强大语言。它是设计用来编写系统软件的,但也用来编写游戏或者是游戏引擎,桌面应用,移动应用和web应用。C++非常强大和快速,所以以至于Facebook用它开发了一些高性能的,可靠的组件。
许多软件的部分是用C++来构建的,包括Adobe系统,Amazon,Paypal,Chrome等等。想C一样,C++通常被认为是初学自学比较难的,所以如果你决定把C++作为你学习的第一门百年城语言,最好是通过在一些分享会上找个好的导师,或是找一个C++的编程老师教导一下。
C# 是被设计成在.NET框架在开发的一门语言,主要在微软的Windows上运行。
C# 被用来进行web开发,游戏开发和一些微软通用的开发。尽管微软在过去并不提倡跨平台兼容,Xamarin一直致力于一个名为Mono开源项目,这个项目目的是把C#移植到其他平台上和给Linux开发者提供更好的开发工具。你现在也可以通过Xamarin使用C#为iOS和Android构建本地移动应用。
SQL,也叫结构化查询语言,是一种和数据库交流的查询语言。尽管SQL不能被用来构建应用,但它被用来管理应用中的关系型数据管理系统的数据。
现在你对编程语言有了一点了解,也许还稍微有些难懂。但不是所有的编程语言都有同样的需求和薪水。如果你学习编程的目标是寻找工作机会,你是不会轻易因这中语言难学而被别人劝阻的,以下几点也许能帮你搞清你应该学习那种语言。
来自的招聘广告基于薪水的数据,我们大概能把编程语言分为9个梯度:
基于这些结果,显示出Swift能给你最多的收入,然而Java,Ruby,Python,C++也是不错的选择。另外,如果你考虑的是收入,那似乎JavaScript,C#,SQL和PHP不是理想的选择...不是吗?
平均工资会受到很多因素,比如的需求(工作的招聘有多少),比如供给(有多少开发者了解这门语言)和经验(一个初级开发者比高级开发者挣的少)的影响。所以在我们得出结论之前多考虑这些因素不失为一个好主意。
你有多大可能用你知道的这门语言找到工作?一下是一些提供的工作趋势图。
我们能从此图看到Java,JavaScript和SQL开发者的需求量很高。JavaScript尤其在过去的几年里有着明显的增长,由于它在2010年的增长,如今已经和Java并驾齐驱了。
关于C#开发者的招聘海报相对于其他语言还是很多的,对其他语言的开发者的需求似乎很接近。C++开发者会发现其相关需求有所下降。
但是,如果你的目标是在一家创业公司工作,那么也许来自的有关工作趋势的数据并不能给你一个好的建议。AngelList是一个获得关于工作信息更好的去处,那么让我们来看一下AngelList发布的关于不同编程语言的软件开发者的市场需求吧。
JavaScript再一次地成为需求最大的编程语言,但是相比于Java,C,C++,C#而言,创业公司似乎更加青睐Python和Ruby(on Rails)。
软件开发者的市场供应情况
让我们看一下Codementor提供的开发者所掌握的语言种类的数据吧:
当然,这绝不是对实际市场的准确描述,但这也能给你一个关于市场上具体情况的大概了解。我们可以发现,虽然移动应用开发已经爆炸式增长了一段时间,但精通Objective-C的专家却寥寥无几。由于市场上缺乏好的Objective-C的开发者,他们的薪水也就自然水涨船高了。
另一方面,市场上的PHP开发者似乎有着一个健康的供应数量,这就意味着雇主可以有更多的选择,并且能在薪水方面有讨价还价的余地,但我们也发现它并没有如同Java,SQL或是JavaScript一样的市场需求。因此PHP开发者挣的相对少一些。
JavaScript是一个特例。尽管供给最大,但它并不在收入最低的梯队里,文章后面我们会对JavaScript进一步观察。
现在你已经对每种语言的市场供需有了大概了解,让我们基于招聘广告薪水的有关信息,再来看看你的薪资潜力有多大。这个数据来自于 gooroo.io ,从中我们了解到一种语言的薪水高低是从该语言的单个招聘广告的薪水演化而来。
从这我们能发现那些会Ruby,C++或者Java的开发者似乎有着更高的起薪。Python和Ruby的薪水潜力似乎是最大的,这也就意味着优秀的Ruby/Python开发者更加稀缺,需求量也更大。JavaScript在薪水潜力方面似乎经历了一个大下滑,在2015年4月的时候它高达188,168美元的年薪,但是现在只有大约124,000美元的年薪。然而JavaScript保持了一个特例,我们稍后会加以阐述。
特例:JavaScript框架
仅仅比较把JavaScript开发人员挣的收入同其他编程语言做比较的这种行为其实好比管中窥豹。
如同我们在编程语言一览众提到过的,JavaScript是一个大类。许多框架被开发出来用于网站的前端开发,所以你如果仅仅了解JavaScript和jQuery,你可能就比那些会开发JavaScript框架的开发者挣的少。
让我们看看在美国不同的JavaScript框架的开发者的平均薪水情况吧(React和Backbone是库,而非框架,Nodejs更像是一个开发环境);
平均工资现在看起来并不糟糕。特别是React,有着一个非常漂亮的数据。当然这只是为你提供一个想法,提供的数据可能略微不同,平均至少105,000美元。但你必须会JavaScript才能学习这些技术,这也使得JavaScript成为一种收入不错的技能。
让我们看看有关这些框架的相应的开发者的需求吧:
Node.js是做后端开发的,所以如果仅仅是对前端框架而言,你会发现AngularJS是需求最旺盛的赢家。因此,如果你想做前端开发,你应该学学AngularJS。
另一方面,React是一门相对新的技术,发展势头很猛,早期和AngularJS分庭抗礼。它可能仍在以迅猛的势头发展,有可能以后会需求更广,这是由于React的性能总体比AngularJS要好。
如果你对开发者的世界有一些了解,那么你很可能知道其他开发者对你的帮助是至关重要的,尤其是如果你打算自学编程。
如果你成为开发者社区的一员,这绝对会使你开发的过程更加顺畅。
StackOverflow
StackOverflow 是全世界开发者所使用的最大的能互相取得帮助的开发者社区,所以我们自然会对于一门编程语言的流行度和体量做一个检测,也会关注这门语言的社区能给开发者有多大的帮助。
语言的受欢迎程度
基于StackOverflow上的关注者,我们能断定一门语言的大体受欢迎程度:
我们已经可以从职位需求趋势中了解Java和JavaScript开发者的需求量最高,所以它们的关注者最多也不足为奇。JavaScript是StackOverflow上关注量最多的,已经超过Java。
SQL,Ruby和Swift的关注着最少,很可能是因为Ruby主要是只能用于web开发,而Swift是一门相对新的开发语言。
StackOverflow的问题回答率
StackOverflow有一个不成文的规定,那就是你必须措辞“正确”地提问,否则人们就不会回答你的问题。牢记这条原则,让我们看看每种语言的提问的回答率:
基于以上信息,尽管只有相对少的StackOverflow的用户关注C,SQL和C++,但超过60%的相关问题也得到了答案。那些知情者可能会争论说C和C++是很先进的语言,从而问问题的用户很可能是更有编程经验的,也知道怎样措辞提问。另一方面来说,SQL并不是用来构建应用的一门语言。
值得一提的是那些Python和Ruby的开发者在StackOverflow上得到了很多的支持。初学者一般都不太会正确地提问,如果之前提到的那样,Python和Ruby的是初学者的最佳入门语言。然而,除了这两门语言是相对流行的语言之外,他们大概都有接近30天内60%的问题回答率。(Python的头号问题回答者是Martijn Pieters,他也是一个很好的编程导师。)
另一方面,PHP作为一门被广泛关注的语言,却有着最低的问题回答率。这意味着很多人问有关PHP的问题,但能得到答案的人却不多。
一旦你进入开发者的行当,你将不可避免地发现到:最好是尽可能地在你的项目中使用已经存在的解决方案。你一般从一些开源的项目中或者这些解决方法,GitHub是获取这些开源项目的一种途径。用户可以给他们所喜欢的项目打分,越多的分数意味着这个项目可能越有用。
因此,可以从GitHub存在的数据中我们也可以决定使用不同种类的语言来使得开发相对容易一些。我们也能对一门语言在一些新技术的改革方面的速度有个了解。不用大费周章,这里既有一个相对简单的图表来展示GitHub上的流行项目;
很明显,JavaScript有着最新最亮的工具,即使你不考虑各种文档,学习手册和入门教程。JavaScript还是以极度的快速变化著称的语言,它的框架变化率很高,一些新的技术会使开发者觉得很难跟上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#,微软已经在为它的开源服务而加大力度了,所以在不久的将来,我们很可能会在GitHub上看到C#更多的出现。
每种语言的未来前景
到底一门编程语言在未来将会导致多大的关系呢?首先,一门语言的未来很大程度上取决于它的社区的成长情况,因为新鲜血液的注入率和吸收率是保持这门语言流行并且持续获得资源的关键。因此,让我们来看看人们对那些语言的学习最为关注:
似乎Python, JavaScript, C#和 Swift的受关注度增长最为迅速。基于现阶段我们了解的趋势,我们可以得出以下结论:
JavaScript
毋庸置疑,JavaScript的关注度即将增长,尤其是现在它也可以用来开发后台,甚至能用来构建本地语言的移动应用(通过使用React Native)。JavaScript将持续地获得更多的开发工具,并且以相当快的速度升级着,所以你可以料想到它将在仍然会极度的重要。
创业公司喜爱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,GitHub上Rails比Django的评分更高。
甚而有之,一种新的“同态”应用软件的趋势很可能会影响到Rails的普及,这种趋势提倡改善web应用的性能。同态应用需要在Node.js的平台上运行-这就是要使用同样在前端使用的JavaScript语言。这样只需要通晓一门语言(JavaScript)的要求可能会使一些想学Ruby的新人转而学JavaScript。Google的Go语言也是另一门后端的开发语言,它也正在得到越来越多的关注。
然而,既然Rails能持续获得更新,它仍将保持关注度,尤其是因为他有一个忠实的社区提供海量且有用的开发工具来使得开发变得更容易。因此,抛开受欢迎成都不谈,Ruby也将在未来一段时间内榜上有名。
Python在学院派学者和数据科学家中很流行,如同之前提到的,许多学校向初学者推荐Python。这意味着Python将持续稳定增长并且保持相关度。然而Python的进化速度并不快,也没有JavaScript那样的爆炸性的需求增长,所以它讲持续的稳健自己的地位,尤其是在数据科学家们的高要求之下。
这些年后端开发的趋势已经从PHP转到别的语言上了,但是如今80%的线上网站仍然是用PHP构建的-它毕竟是一门专为web开发设计的语言。
然而,如果你用Google搜索初学者应该学哪门语言,你也许会发现那些开发者一般不推荐你学习PHP。事实上,许多开发者显然很讨厌PHP。
PHP社区正试图用新的关于“怎样正确地使用新的开发工具编写PHP程序的教程”来摆脱它的坏名声,但是总体来说PHP的未来似乎相对停滞不前,至少在2015年的美国是这样。希望PHP7能使它的社区重新焕发活力,即使众所周知这个社区相对分散。
Android 使得Java在流行语言中有了大爆发,大多是企业因Java的稳定和扩展性而对它钟爱有加。
随着Spark(用Scala语言)和Cassandra(支持其他语言)处理大数据的框架的崛起,将很难说Hadoop作为最流行的大数据系统还能统治多久了,但是根据企业出来的数据大小,Hadoop并不会消亡。同样的情况也适合Java,由于Java有一些极佳的后台开发工具并且Java更多的为企业开发着想。
因此,Java在未来几年将继续作为最流行的编程语言而坚挺下去。
Objective-C/Swift
由于苹果发布的Swift和Objective-C仅仅只服务于苹果的产品,我们不能期望Objective-C在未来能坚持多久。然而只要你继续使用苹果的产品,Swift就必然将在来未来流行。
然而,这也不意味着你在2016年就不应该学习Objective-C,由于大部分的iOS的开源项目都仍是用Objective-C编写的。所以总体上来看,使用一些你不了解的东西并不是一个明智的选择,如果你会了Swift,那么学习Objective-C并不是难事,反之亦然。
C相对与其他编程语言来说是一门相对低级的编程语言,但既然它是操作系统的构建语言,它就依然会存在下去,因为许多开发工具仍然是用C写的,Linux也是用C写的。
SQL 几乎是所有的数据库管理员都了解的语言。一段时间里,SQL似乎在例如MongoDB和Redis这种NoSQL服务兴起的时候被遗忘了,随着大数据计算平台如Hadoop,Spark和Cassandra的non-SQL的使用,许多人叫嚣着说SQL语言将要灭亡了。
很明显并不是这样。其实,即使NoSQL仍然需要重新定位自己为“不仅仅是SQL”。
随着大数据的兴起,管理大数据的难度也陡然上升,SQL比以往更加炙手可热了(你已经了解了工作机会的趋势)。Google最近也升级了它的BigQuery服务,使得它每秒每张表能处理高达100,000行的记录,BigQuery用的就是SQL。Spark自从1.3版本后也有了Spark的SQL模块。
总而言之,SQL又活跃起来了,这是因为需要用它来管理而非存储大数据。因此,虽然不是说SQL在哪都会用到,但是说SQL在相当长的一段时间内会榜上有名也不足为过。
C++仍然被认为是在性能和能力范围方面最出色的编程语言(即使是相对与Rust来说),C++很可能在一些对性能要求很高的领域(比如:游戏引擎)仍然流行。一个先今主要的标准(C++14)被认为将在2017年发布,所以它仍是一门在进化的语言。
在未来,Rust也许将会在系统编程的某些领域取代C++,由于Rust旨在相对于C++能够编写出更少缺陷的软件。如果你是一个高级的开发者,现在也许是一个学习Rust的好时机。
由于微软平台的限制和不开源,这没有给C#帮助,但是Mono几乎解决了这些问题(尽管Mono有一些性能问题,最近的更新已经解决了这些问题)。
C#的开发者似乎很喜欢C#这门语言,所以它有着很强的社区支持。更别说C#是Unity 3D的主要开发语言了,Unity 3D是一个相当火爆的游戏引擎,它可以兼容iOShe Linux等系统。Unity3D作为一个独立游戏引擎的崛起使得C#的未来更加光明,Unity3D也能用来开发虚拟现实的应用。由于虚拟现实是很有前景的,所以C#一定会有一个相当好的未来。
值得一提的是,C#在一些比如美国,英国的国家,做企业级开发也很流行。很明显微软将会是C#保持活力并且使它在.NET平台上存活,微软已经大胆地开源了这个项目,使得开发者能更容易地了解和利用这个平台。
到底编程初学者应该学哪门语言呢?很显然,如果你希望做web开发,你就不可避免地要学习JavaScript,无论你是否喜欢它。如果你希望做web的后台开发,你还必须学习一些SQL语言。
进一步说,如果你想从一些网站上爬虫数据或者你对数据科学比较感兴趣,Python可能是一个不错的选择。如果你想为企业开发工作,那么Java是一个好的去处。如果你对构建产品不是那么感兴趣,而对工作机会更加青睐,也许SQL是你不错的开始(尤其是如果你很喜欢数学的话);
总而言之,2016年应该学哪门语言将最终取决于你具体想干什么。
如果你想学习怎样编程,并且能确定你已经掌握了有关学习资料的话。可以关注Udemy的#1编程课程,该课程有一对一的专门老师教导。点击了解更多一对一编程教学来发现更多信息吧!
温馨提示如有转载或引用以上内容之必要,敬请将作为出处标注,谢谢合作!
欢迎分享Test404
我养的小白鼠
大家有时间帮我喂一喂小白鼠
& Test404 All right reserved. 版权所有
Powered by
欢迎关注本站微信公众号哦~主流软件开发语言几种主流网页开发语言的 研究_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
主流软件开发语言几种主流网页开发语言的 研究
&&主流软件开发语言几种主流网页开发语言的 研究
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩5页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢开发者们到底还得学习多少门语言?_广州达内嵌入式培训机构
开发者们到底还得学习多少门语言?
前不久的世界开发者大会上,Apple公布了它的新开发语言Swift。这是最近大型技术公司们开发的一大波新语言中的最新成员,这些新语言某种程度上都是专门应用于他们自己的平台。
对iOS开发者,Apple有Swift;而Facebook有Hack—— 一门用于后端开发的语言。与此同时,Google已经拥有了它自己的Javascript替代者Dart,以及一门新的通用编程语言Go。
这一波又一波的新语言,给开发者们带来了许多问题。
计算机语言的通天塔
目前已经存在的编程语言有数百种,同时还有更多的语言正在涌现。其中许多都是被设计用在相对较窄的应用程序范围内,大多数甚至从未走出过项目小组的范围。
与此类似,大技术公司开发的新语言其实也是伴随着公司一起成长的。通用语言的鼻祖,C语言,就源于上世纪70年代初的AT&T贝尔实验室。Java,目前作为Android app开发的主要语言,诞生于上世纪90年代Sun公司的Microsystems系统。
发展到现在,不同之处在于,公司们拥抱新语言、从而想要延伸的特定商业目标的范围不一样了—— 这一过程同时建立了一个忠心耿耿的开发者基础,他们被牢牢锁定在了某个公司的特定平台上。这类一石二鸟的战略,最早可以追溯到Sun对Java的采用,当时公司就将其作为了挑战微软PC桌面统治地位的一种手段。(事情虽然没有像Sun计划的那样发展下去,但在Google转向Android之前,Java大体上也算是在企业中间件系统中找到了自己的一席之地。)
这么看来,Apple的Swift其目标也就很明确了。Swift应该不会辜负公司前期的大肆宣传,通过磨平Objective-C那粗糙的毛边,看起来它能够成功简化iOS app开发者的开发过程。但是同样还是这些开发者,他们却需要学习一门新语言的输入和输出,而这些功能很可能在其他地方都不会用到。
大公司们为什么要重复造轮子
“不要重复造轮子”这一哲学在绝大多数开发者心中根深蒂固,大公司们对此却并不买账。那他们为何不只是修改下现有语言用于新的用途呢?
答案很简单,公司们发明他们自己的语言,是因为他们有这个能力。设计一门新语言可能很复杂,但对资源要求却并不很高。困难之处也就在对其提供支持,包括提供软件资源(共享代码库、API、编译器、文档等)以及赢得开发者的支持。大公司们在这两方面尤其擅长。
还有一个事实,现有语言通常很难硬塞进如今的复杂代码框架中。举个栗子,Facebook决定发明的Hack,就是一个普遍适用于Web开发的脚本语言PHP的超集合(superset)。
Facebook的Hack最近已经比较普遍,其主要目标就是改进代码的稳定性,针对这一目的,它强制在程序运行之前对数据类型进行检测。这样的检测确保了一个程序,比方说,不会将一个整数解析为一个字符串,这样的错误如果捕获不到很可能会导致不可预知的后果。在Hack中,这些检测会预先执行,以便程序员能够在程序上线前早早发现这样的错误。
据Facebook的Hack项目组核心成员Julien Verlaguet透露,公司之前尝试过用一门现有语言实现更高效的编程。但是Facebook的大部分代码都是由PHP编写的,公司实际上已经建立了一个支持PHP及其分支的软件架构。即使能够让PHP同其他语言编写的代码协同工作,实现的难易程度和运行速度都无法满足要求。
“比如说我们尝试用Scala重写PHP代码库,”Verlaguet说。“Scala是一门设计优秀的漂亮语言,但是它与PHP完全不兼容。每次我需要从Scala的代码库部分调用PHP的时候,都会损失性能。我们很愿意使用一门现有语言,但是对于我们来说,这条路行不通。”
于是,Facebook发明了Hack,它与PHP一样能够共用公司现有的架构。Verlaguet介绍说,Facebook的代码库主体已经从PHP迁移到了Hack,同时公司将Hack开源,希望独立开发者们能够帮公司找到Facebook以外的用途。
“你仍然可以使用PHP,”他说,“但是我们希望你有使用Hack的欲望。”
谁说了算?
公司和开发者之间有一种微妙的平衡。公司可以按照自己的喜好发明语言。但是如果开发者都不愿使用这门语言,那就没人用了,公司以外的人也就没人愿意将自己的职业生涯托付给这家公司。
公司在开发过程中同时使用不同的语言,这并不少见。例如,你可能用Objective-C开发iOS app,但却用Java开发Android app。对开发者来说,这从来都不是症结所在,因为Objective-C和Java都是通用面向对象语言。它们用途广泛适用于很多场合。
然而,Hack、Dart、Go和Swift,到目前为止,仍然只适用于严格特定公司的编程解决方案,往往和公司选择的编程环境相对应。诚然,现在下结论可能还太早。比方说Hack,就可以用在一些后端的实现中;它只是太新了,以至于Facebook还没有任何数据供人们如此使用。
不是开发者不能学习多门语言。事实上,大多数人已经掌握了多门语言。这好比罗曼斯语(一种由拉丁语演变而成的语言),如果你会说西班牙语,再去学法语就比那些不会西班牙语的人简单许多。与此类似,如果你已经会Java,再学Ruby或Perl就简单得多。如果你会PHP,基本上就已经学会了Hack。
与此相反,学习多门语言更多的是一个习惯问题。如果Java&已经解决了你的问题,你就不再有动力去学Ruby。如果你用Objective-C编写iOS app感觉很爽,你就不会有强烈的意愿去学Swift。
另外,对于一些开发者来说,封闭生态系统的语言只会使每个人的生活变得更糟。例如,自由设计师Jack Watson-Hamblin就告诉我说,像Apple这样强势推出Swift,其实是在冒险增加程序员的负担,同时将开发者社区割裂开来:
程序员掌握多门语言固然重要,但是不断强迫他们紧跟新语言,却是行不通的。如果我正在开发一个简单的跨平台app,我可不想被迫掌握四门语言再来完成它。如果真的需要,我也只想使用一门语言。
Watson-Hamblin就主张说,当每家公司都为了自家需要发明自己的语言时,程序员的注意力被分散,开发的视野也局限于一种,这只会拖慢整个开发进程。他说,“如果拿公司负责一门语言与负责一个开源社区相比较,这两者的区别就好比一家大企业与一个初创小公司的区别”。社区生来就更加灵活,适应能力更强。
当然,Apple有许多非常好的理由推出Swift从零开始,就像当初Facebook发明Hack的时候一样。我并不是说,大公司不会强迫开发者接受这种改变,在这方面,有些公司一直都很让人讨厌。
“新语言的发明,伴随着霸权的支配,”Verlaguet说,“被迫不停追赶,确实令人沮丧,但另一方面,你又多了一种解决问题的新语言。反过来想想,要是全世界的程序员都用同样一门语言做所有事情,即使啥都凑合着能干,这门语言也一定干得不怎么样”。
开发者们到底还得学习多少门语言?
前不久的世界开发者大会上,Apple公布了它的新开发语言Swift。这是最近大型技术公司们开发的一大波新语言中的最新成员,这些新语言某种程度上都是专门应用于他们自己的平台。
对iOS开发者,Apple有Swift;而Facebook有Hack—— 一门用于后端开发的语言。与此同时,Google已经拥有了它自己的Javascript替代者Dart,以及一门新的通用编程语言Go。
这一波又一波的新语言,给开发者们带来了许多问题。
计算机语言的通天塔
目前已经存在的编程语言有数百种,同时还有更多的语言正在涌现。其中许多都是被设计用在相对较窄的应用程序范围内,大多数甚至从未走出过项目小组的范围。
与此类似,大技术公司开发的新语言其实也是伴随着公司一起成长的。通用语言的鼻祖,C语言,就源于上世纪70年代初的AT&T贝尔实验室。Java,目前作为Android app开发的主要语言,诞生于上世纪90年代Sun公司的Microsystems系统。
发展到现在,不同之处在于,公司们拥抱新语言、从而想要延伸的特定商业目标的范围不一样了—— 这一过程同时建立了一个忠心耿耿的开发者基础,他们被牢牢锁定在了某个公司的特定平台上。这类一石二鸟的战略,最早可以追溯到Sun对Java的采用,当时公司就将其作为了挑战微软PC桌面统治地位的一种手段。(事情虽然没有像Sun计划的那样发展下去,但在Google转向Android之前,Java大体上也算是在企业中间件系统中找到了自己的一席之地。)
这么看来,Apple的Swift其目标也就很明确了。Swift应该不会辜负公司前期的大肆宣传,通过磨平Objective-C那粗糙的毛边,看起来它能够成功简化iOS app开发者的开发过程。但是同样还是这些开发者,他们却需要学习一门新语言的输入和输出,而这些功能很可能在其他地方都不会用到。
大公司们为什么要重复造轮子
“不要重复造轮子”这一哲学在绝大多数开发者心中根深蒂固,大公司们对此却并不买账。那他们为何不只是修改下现有语言用于新的用途呢?
答案很简单,公司们发明他们自己的语言,是因为他们有这个能力。设计一门新语言可能很复杂,但对资源要求却并不很高。困难之处也就在对其提供支持,包括提供软件资源(共享代码库、API、编译器、文档等)以及赢得开发者的支持。大公司们在这两方面尤其擅长。
还有一个事实,现有语言通常很难硬塞进如今的复杂代码框架中。举个栗子,Facebook决定发明的Hack,就是一个普遍适用于Web开发的脚本语言PHP的超集合(superset)。
Facebook的Hack最近已经比较普遍,其主要目标就是改进代码的稳定性,针对这一目的,它强制在程序运行之前对数据类型进行检测。这样的检测确保了一个程序,比方说,不会将一个整数解析为一个字符串,这样的错误如果捕获不到很可能会导致不可预知的后果。在Hack中,这些检测会预先执行,以便程序员能够在程序上线前早早发现这样的错误。
据Facebook的Hack项目组核心成员Julien Verlaguet透露,公司之前尝试过用一门现有语言实现更高效的编程。但是Facebook的大部分代码都是由PHP编写的,公司实际上已经建立了一个支持PHP及其分支的软件架构。即使能够让PHP同其他语言编写的代码协同工作,实现的难易程度和运行速度都无法满足要求。
“比如说我们尝试用Scala重写PHP代码库,”Verlaguet说。“Scala是一门设计优秀的漂亮语言,但是它与PHP完全不兼容。每次我需要从Scala的代码库部分调用PHP的时候,都会损失性能。我们很愿意使用一门现有语言,但是对于我们来说,这条路行不通。”
于是,Facebook发明了Hack,它与PHP一样能够共用公司现有的架构。Verlaguet介绍说,Facebook的代码库主体已经从PHP迁移到了Hack,同时公司将Hack开源,希望独立开发者们能够帮公司找到Facebook以外的用途。
“你仍然可以使用PHP,”他说,“但是我们希望你有使用Hack的欲望。”
谁说了算?
公司和开发者之间有一种微妙的平衡。公司可以按照自己的喜好发明语言。但是如果开发者都不愿使用这门语言,那就没人用了,公司以外的人也就没人愿意将自己的职业生涯托付给这家公司。
公司在开发过程中同时使用不同的语言,这并不少见。例如,你可能用Objective-C开发iOS app,但却用Java开发Android app。对开发者来说,这从来都不是症结所在,因为Objective-C和Java都是通用面向对象语言。它们用途广泛适用于很多场合。
然而,Hack、Dart、Go和Swift,到目前为止,仍然只适用于严格特定公司的编程解决方案,往往和公司选择的编程环境相对应。诚然,现在下结论可能还太早。比方说Hack,就可以用在一些后端的实现中;它只是太新了,以至于Facebook还没有任何数据供人们如此使用。
不是开发者不能学习多门语言。事实上,大多数人已经掌握了多门语言。这好比罗曼斯语(一种由拉丁语演变而成的语言),如果你会说西班牙语,再去学法语就比那些不会西班牙语的人简单许多。与此类似,如果你已经会Java,再学Ruby或Perl就简单得多。如果你会PHP,基本上就已经学会了Hack。
与此相反,学习多门语言更多的是一个习惯问题。如果Java&已经解决了你的问题,你就不再有动力去学Ruby。如果你用Objective-C编写iOS app感觉很爽,你就不会有强烈的意愿去学Swift。
另外,对于一些开发者来说,封闭生态系统的语言只会使每个人的生活变得更糟。例如,自由设计师Jack Watson-Hamblin就告诉我说,像Apple这样强势推出Swift,其实是在冒险增加程序员的负担,同时将开发者社区割裂开来:
程序员掌握多门语言固然重要,但是不断强迫他们紧跟新语言,却是行不通的。如果我正在开发一个简单的跨平台app,我可不想被迫掌握四门语言再来完成它。如果真的需要,我也只想使用一门语言。
Watson-Hamblin就主张说,当每家公司都为了自家需要发明自己的语言时,程序员的注意力被分散,开发的视野也局限于一种,这只会拖慢整个开发进程。他说,“如果拿公司负责一门语言与负责一个开源社区相比较,这两者的区别就好比一家大企业与一个初创小公司的区别”。社区生来就更加灵活,适应能力更强。
当然,Apple有许多非常好的理由推出Swift从零开始,就像当初Facebook发明Hack的时候一样。我并不是说,大公司不会强迫开发者接受这种改变,在这方面,有些公司一直都很让人讨厌。
“新语言的发明,伴随着霸权的支配,”Verlaguet说,“被迫不停追赶,确实令人沮丧,但另一方面,你又多了一种解决问题的新语言。反过来想想,要是全世界的程序员都用同样一门语言做所有事情,即使啥都凑合着能干,这门语言也一定干得不怎么样”。
【广州嵌入式培训机构】随着移动互联网、物联网的迅猛发展,嵌入式技术无处不在。嵌入式技术覆盖了各行各业,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。
嵌入式培训的小编给大家分享到:像我们平常常见到的手机、PDA、电子字典、可视电话、 VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。
嵌入式培训的小编今天在很多的嵌入式技术平台中看到的关于嵌入式技术方面的一些资讯和信息,在这里相应的分享给大家:(1)目前国内外这方面的人都很稀缺。一方面,是因为这一领域入门门槛较高,不仅要懂较底层软件(例如操作系统级、驱动程序级软件),对软件专业水平要求较高(嵌入式系统对软件设计的时间和空间效率要求较高),而且必须懂得硬件的工作原理,
下面就由广州嵌入式培训的小编给大家介绍一些关于嵌入式开发方面的技巧和方法,另外还有很多其他技术,例如利用良好的编码标准、位翻转的监测、执行数组和指针边界检查,及使用断言等。所有这些技术都是让设计者可以开发出可靠性更高嵌入式系统的秘诀。
Copyright (C)
All Rights Reserved
选择城市和中心
达内北京亦庄大学生实训基地
达内北京网络营销中心
达内北京会计中心}

我要回帖

更多关于 3个月掌握一门语言 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信