天问

我们首先应该学习哪种语言

大多数人学习编程的计划开始于某一天的深夜谷歌搜索。

通常就像学习 "__"

但是他们决定用哪种语言搜索呢?

“他们总是对Java在硅谷上开玩笑。我想我应该学习Java”

或者

Haskell。现在是如此之热。Haskell。

或者

这些该死的地鼠是如此的可爱。

然后是我们这些人,我们可能会寻找一些东西,像我应该优先学习哪种编程语言? 通常会问他们一些问题来获取他们的态度。比如:

图片来源(http://carlcheo.com/startcoding)

决定你第一个编程语言可能是一个有趣的过程,比如一种人格测验。但是就像你作为一个孩子喜欢玩玩具一样跑去学习Ruby之前,让我提醒你:这个赌注是相当高的。 它可能会耗费你上百个小时去练习,但你远远不会胜任你第一个编程语言。 因此,你需要考虑以下因素:

  • 语言的就业市场

  • 语言的长期远景

  • 语言是多么容易的学习

  • 当你在学习的时候你可以建立什么样的学习计划(和朋友分享,让你可以保持动力)

每年都会有新的编程语言,和这些编程语言的新学术论文,以及新的web漫画。 请看下面这篇佳作:

当你选择第一个编程语言时,这里有很多选择。为了进一步缩小选择,这里是过去12年来最常见的,与学习编程有关的谷歌搜索:

Java 有它的起起伏伏。 Python 逐渐上升为最受欢迎的选择。 但是隐藏这些的下面是勇敢的小火车头,在过去几年的流行度慢慢地上升。而这个引擎就是JavaScript。 在谈论这些编程语言之前,让我澄清:

  • 我并不是争辩任何一种语言客观地比任何其他语言好。

  • 我认为开发者们应该不仅仅学习一种语言。

  • 我认为他们首先应该学好一门语言,这个语言就是JavaScript。

让我们放下手头上的事情去探索目前编程在学校中是如何被教授的。

大多数是在计算机科学的保护伞下,传统地教授编程的,而这种方式通常被看做是数学学科的延伸,或者搭配了一个电气工程学位。

当然,现在你可能听到的是:

“计算机科学教育远远不能像学习画笔和颜料可以使人成为一个专业画家那样,使人成为一个专业的编程者。”- Eric S. Raymond

截止2016年,很多大学仍然像对待计算机科学一样对编程,以及对待计算科学就像数学。

结果是许多入门级的编程课程专注于低层次的抽象语言,如C,或数学编程聚焦于如MATLAB。

而系主任通常会指着编程语言的排行榜,如TIOBE指数,或者来源于IEEE,坚持保留这些课程。

大多数这些排行榜与10年前几乎是相同的。

但是,在学术上确实发生了变化。2014年,Python超过Java成为美国顶尖的计算机科学课程中最受欢迎的教学语言。

而另一改变也即将... 最终... 发生。 因为如果你看看工作人员实际使用的编程语言,你会发现它描绘了一个与众不同的画面:

JavaScript是迄今为止最受欢迎的语言,开发者达49,397,这些开发者接受了2016 Stack Overflow 的调查。 超过一半的开发者使用JavaScript。JavaScript的招聘岗位超过除了Java以外的其他编程语言:

数据来源于世界上最大的招聘信息收集者,Indeed.com

我们建立关于JavaScript课程的开源社区,这不是偶然的。在过去的两年里,超过5,000个人使用开源社区找到他们的第一份工作。

因为JavaScript是开发者找到第一份工作的必由之路,所以我教JavaScript。因为我教JavaScript,所以我不宣传它。

但是JavaScript适合你么?它值得成为你第一个编程语言么?让我们来探索这些我之前提到的因素。

因素 #1:就业市场

如果你学习编程纯粹出于求知欲,那么略过这个因素。但是如果你(像大多数人学习编程)想利用这个技能找到一个工作,这是一个重要的考虑因素。

就像我之前提到的,Java在招聘公告上出现的次数超过其他编程语言。JavaScript仅次于Java,排名第二。

尽管JavaScript已经存在了20多年了,但它仅仅在最近才成为一些公司重视的工具,如Netflix,Walmart,和PayPal愿意建立整个应用程序。

因此,很多公司开始雇佣JavaScript开发者,但是在就业市场中这样的开发者很少。

数据来源于Indeed.com

对于每一个公开的的java职位,有2.7个java开发者竞争。PHP和iOS就业竞争同样激烈。

但是对于每一个公开的JavaScript职位,仅仅有0.6个JavaScript开发者。招聘市场对于那些具有JavaScript技能的开发者需求很大。

因素 #2: 长期远景

平均一个JavaScript项目收到的pull请求是Java,Python,或Ruby项目的两倍。在这一点上,JavaScript比其他的编程语言增长更快。

来源:GitHub 2016 10月的调查情况

JavaScript的生态系统也得益于公司的大量投资资金和工程人才,如谷歌,微软,脸谱,和Netflix公司。

例如:TypeScript(JavaScript静态变量的超集)已经有超过100个开源贡献者,他们中大部分人是微软和谷歌雇佣来去工作的。

很难用Java找到这种公司间的合作。

因素 #3: 难学

这是一个模仿XKCD漫画

大多数程序员都觉得高级的脚本语言是比较容易学习的。JavaScript和Python,Ruby就属于这一类。 尽管大学仍然把Java,C++作为第一门编程语言进行教授,但它们仍然被认为很难学。

因素 #4: 你可以使用JavaScript创建你的工程

这就是JavaScript的真实写照。JavaScript运行在任何一个有浏览器的设备上。你基本上可以使用JavaScript建立任何东西,并随时随地分享。 由于JavaScript的普及,Stack Overflow的创始人Jeff Atwood创造了他目前著名的法律: 任何可以使用JavaScript编写的应用,最终都会使用JavaScript编写。 而且随着时间的发展,Atwood的法律会变得更加的强大。 Java曾经一样承诺过在任何地方运行。你也许记得Java Applets。Oracle今年早些时候官方地停掉它们。 Python遭受同样的这么多问题:

我如何才能给我的朋友这个游戏呢?是否有一种方法可以让我把这个放在我的手机上,这样我可以显示给在学校的孩子们,而不需要他们安装吗?嗯。- 这里有一些应用程序,是开源社区的成员在CodePen建立的:

20世纪70年代Simon类型的游戏 Conway’s Game of LifeStar Wars-themed Wikipedia SearchA roguelike dungeon crawler game

先学好一门语言,然后再学习第二门语言。

如果你不停地从一种语言跳到另外一种语言,你不会走的太远。

为了超越基础,你需要学好第一种语言。这样,你学习第二种语言会更加容易。 通过学习多种语言,你会成为一个更全面的开发者:

  • C是一个极好的方式来学习计算机如何实际在内存管理方面的工作,并在高性能计算方面是非常有用的。

  • C++因为游戏开发而伟大。

  • Python在科学和统计方面是令人敬畏的。

  • 如果你想工作在大的科技公司,java是重要的。 但是首先学习JavaScript。


Ok,现在我要去尝试那些不可能, 我将要试图和提前从评论部分的异议开始。

异议 #1: 但是JavaScript不是很慢么?

JavaScript是 - 为了最大地实用的目的 -和其他高性能语言一样快。 在数量级上,JavaScript (Node.js) 是比Python,Ruby,PHP快。 它也几乎与高性能的语言如C++,java,Go一样快。 这里是最近最全面的综合的跨语言平台的调查结果:

异议 #2: 但是JavaScript不是静态类型

像Python,Ruby,JavaScript是动态类型的语言,这样会很方便。但你可能会陷入困境。在这里我把examplearray认为数组,设置它的值,然后检查其长度。

exampleArray = [1, 2] -> [1, 2] exampleArray.length -> 2

但是我可以随机指定它为一字符串。

exampleArray = “text” -> “text” exampleArray.length -> 4

这些类型的错误会在动态类型语言中一直存在。大多数开发人员只是通过检查到位,以防止这些错误,并编写相应的测试。 如果你希望你学习的第一门编程语言是静态类型,那么我仍然推荐优先学习JavaScript。然后,你就可以很快地学会TypeScript。

“Typescript有一个学习路线,但是如果已经了解JavaScript,那么学习TypeScript将会很容易。” - Alex Ewerlöf在TypeScript写到。

异议 #3: 但我真的想做一个移动app

但是我仍然建议优先学习JavaScript。

  1. JavaScript具有开发本地移动应用app功能的工具,如Angular Cordova和React Native。

  2. 为了让你的移动应用程序实实在在做任何有趣的东西,它可能会需要一个适当的后端,需建立一个合适的Web开发框架,像Node.js + express.js。

而且,值得指出的是,移动应用开发的最好的日子可能即将到来。

对于初学者,开发者中几乎一半的工作是web开发,和人们使用移动app一样多。相比之下,只有8%的工作涉及移动应用程序开发。

2016 Stack Overflow应的调查,参与的开发者有49,525人。

“只有一个应用程序”的宏伟愿景并没有通过。相反,大部分智能手机的拥有者已经停止下载新的app。

当然,他们仍然使用App。通常是脸谱,谷歌地图,还有其他的。同样地,大部分的移动app开发需求集中在一些大的雇主。

那些移动开发工作的前景很难预测。多方面的发展,维护和部署使得移动应用程序更容易使用JavaScript。这样的公司如脸谱和谷歌都在大力投资使用JavaScript开发更好的工具。

截至2016,几乎所有的开发都是Web开发。每一个接触的大平台都是“网络”。在下一个设备的浪潮中,你会在家里交谈时,汽车可以接孩子放学,网络将会把他们链接在一起。

而这就是JavaScript的意义。

异议 #4: JavaScript 难道不是只花了 10 天写出来的玩具语言么?

毫无疑问,你会听到人们以javascript开玩笑的代价。

同样,人们对C++既爱又恨。尽管存在这种恨,但像JavaScript,C++已经成功了,而且现在很多地方都一样。

所以,如果有人给你不是本周精英语言,而是学习困难的JavaScript,仅仅记住创造C++的那个人一句著名的话:

“世界上只有两种编程语言:一种是被人骂的,一种是没人用的。” ——Bjarne Stroustrup

原文:https://medium.freecodecamp.com/

译文:http://www.zcfy.cc/article/what-programming-language-should-you-learn-first-1602.html

译者:Herylee

博客地址:http://blog.yoqi.me/?p=928
扫我捐助哦
喜欢 0

这篇文章还没有评论

发表评论