小伙伴关心的问题:你的第一门编程语言应该学什么?ʇdıɹɔsɐʌɐɾ:ɹǝʍsuɐ,本文通过数据整理汇集了你的第一门编程语言应该学什么?ʇdıɹɔsɐʌɐɾ:ɹǝʍsuɐ相关信息,下面一起看看。

原文链接:What programming language should you learn first? ʇdıɹɔsɐʌɐɾ :ɹǝʍsuɐ

作者:Quincy Larson(FreeCodeCamp创始人)

大多数人的编程之旅都是从搜索引擎开始的。

例如搜索XXX语言教程。

但要怎么决定从哪门语言开始呢?

硅谷的人总是开Java的玩笑,我想应该先学Java。

或者:

"Haskell!现在Haskell这么火!"

又或者:

"一定要学Go!你看它的吉祥物多么可爱!"

或者当我们不知所措的时候,只能搜:

"入门学什么编程语言比较好?"

人们顾虑的问题通常就那么几个,下面这张信息图很好地回答了这些疑惑:

选择第一门编程语言的过程十分有趣,这就好像是个人的信仰选择问题一样。

也许因为你像个孩子一样喜欢玩橡皮泥,稀里糊涂都打算开始学Ruby。我还是要提醒你,不要草率做决定。

想要真正掌握你的第一门编程语言,你需要投入成千上百小时来学习实践。

所以你要考虑清楚以下这几个方面:

这门语言的岗位需求大不大这门语言有没有发展前景语言的学习难度在学习过程中你能运用它开发什么样的练手项目(把你的成果分享给周围的朋友才能激励你坚持学习下去)

每年都会有新的编程语言出现,以及随着而来的学术论文亦或者是搞笑段子:

第一门编程语言可选择的范围很广。下面这张图很清晰地显示了过去12年几门语言学习的Google搜索热度变化:

Java有起有落,而Python逐渐成为了最受欢迎的入门语言。除此之外,还有最近几年逐步火起来的JavaScript.(新手请注意,Java和JavaScript之间的区别就像是周杰和周杰伦之间的区别。)

在我展开讨论之前,先明确几点:

我并不会在这里争论哪门语言要比哪门优越我认同一名合格的程序员最终应该掌握不止一门编程语言我想说明的是,对于刚入门的初学者来说,还是应该先专注于一门语言的学习。而这门语言,我想你可能早就在标题中发现了——就是JavaScript

我们先来聊聊现在学校里的编程教学是什么情况。

计算机基础教学

一般在大学教授编程课程的都是计算机系,而计算机专业一般数学和电子方面的内容又比较多。当然你可能早就听说过:

计算机科学的教育无法使任何人成为专业的程序员,就好像学习怎么使用刷子和颜料无法让任何人成为画家一样—— Eric S. Raymond(《大教堂与集市》作者)

即使在2016年的今天,许多大学还像教计算机科学一样教编程,像教数学一样教计算机科学。

所以许多课程中编排的入门语言是C这样底层抽象的语言,或者是专门针对数学的MATLAB.

一些专业权威的机构也推出了他们的编程语言年度排行榜,例如TIOBE Index,又或者是下面这个来自IEEE的榜单:

大多数这类榜单10年来都没有什么变化。

但事实上不是这样的,包括在学术界。

早在2014年,Python就超过了Java,成为了最受美国各大CS(Computer Science)机构欢迎的教学语言。

而在实际上的生产工作中,也发生了和权威机构发布的完全不一样的变化(数据来自49,397开发者参与的StackOverflow 2016年度调查):

多一半的开发者都在使用JavaScript.它最早只在前端开发应用,现在也逐步在后端流行开来。甚至开始延伸到游戏开发和物联网领域。

工作岗位上对JavaScript的需求也仅次于Java(数据来自Indeed.com):

所以我们也围绕JavaScript技术栈建立了我们的开源社区。在过去的两年里,有超过5000名学员通过在FreeCodeCamp学习找到了编程相关的工作。

不过JavaScript真的也适合你么?它值得你为之献出第一次么?我们来继续分析:

事实一:岗位需求

如果你只是为了好奇好玩而学编程的话,可以忽略这一点。但如果你和大多数人一样,想通过掌握编程技能找到工作的话,这点对你就非常重要了。

像我之前提到的,JavaScript是除Java之外需求量最大的编程语言。

另外还有一点:JavaScript已经发展了20多年,而直到最近,一些诸如Netflix, Walmart和PayPal一类的大公司才开始全栈应用JS构建他们的应用。

所以就造成了市场上JavaScript开发者供不应求的状况(数据来自Indeed.com)。

从图上来看,每个Java岗位大概有2.7人在竞争,IOS和PHP也平均都有2人以上竞争。

而通过计算,每个JavaScript岗位只有0.7,这就成了属于JS开发者的卖家市场。

译者注:为了更具说服力,特此补充国内的编程语言岗位情况(数据来源2015年8月 中国版的编程语言排行榜):

事实二:发展前景

在Github上,平均每个JavaScript的项目收到的pull requests要比其他语言多两倍以上。其增长速度也远超别的流行语言。

JavaScript的整个生态体系也因为Google, Microsoft, Facebook, Netflix这类大公司的投资而受益匪浅。

例如TypeScript(一种JavaScript的超集,提供更丰富特性,可编译为普通JS)有着超过100名开源贡献者,而这里面大多数都是微软和谷歌的员工。

而且这类集团公司很少有使用Java的。因为Java的所有者Oracle经常会因为各种有关Java开发的原因起诉别的公司。

事实三:学习难度

大多数的程序员应该都会认同,高级的脚本语言通常比较好学。JavaScript当然属于此类,也包括Ruby和Python.

即便很多大学课程教授的都是Java或C++,这类语言也真的很难上手。

事实四:你能实践的练手项目

这是JavaScript最大的优势。JS可以运行在任何有浏览器的设备上。你几乎可以用JS开发任何应用,而且很方便就能分享发布到任何地方。

正是由于JavaScript无处不在,Stack Overflow的联合创始人Jeff Atwood才说出他的那句经典定律:

任何可以用JavaScript写成的应用,最终都会使用JavaScript写成。

现实也在不断的佐证,证据在此

Java也曾号称是跨平台语言。可也许你了解到,Oracle官方在今年早些时候终止了Java Applets的支持。

Python也经常会遇到类似的问题:

我怎么才能把我写的这个游戏发给我的朋友?或者能够不安装什么应用就在手机上运行么? — James Hague inRetiring Python as a Teaching Language

相比之下,JS要方便很多。下面的这些应用都来自我们开源社区的学员,你只需要在浏览器里打开链接就能开始玩啦:

1970s style Simon game

Conway’s Game of Life

Star Wars-themed Wikipedia Search

A roguelike dungeon crawler game

先专注学好一门语言,再去学别的。

如果你总是在各个语言之间摇摆不定,你很难取得什么实质上的进步

为了避免在入门阶段止步不前,你需要扎实学好你的第一门语言。之后再学习别的语言你就会感觉到异常轻松。

等到那个阶段,你就可以逐步成长为一名掌握许多语言的全面的开发者啦:

C 对于你理解计算机原理特别有帮助,例如内存管理之类的。在高性能计算中非常有用。C++ 在游戏开发中运用广泛Python 在科学研究和数据分析中应用广泛如果你想在大型的科技公司中工作,Java就非常重要。

但还是先学会JavaScript再说吧:)

我知道评论里会有很多人要和我吵起来。虽然我知道这不可能,但我还是要试着说服你一下:

Q1:JavaScript运行速度不是很慢么?

在很多实际运用场景中,JavaScript和一些高性能语言运行一样快。

Node.js要比Python, Ruby, PHP快上好几个数量级。

甚至已经接近了C++, Java, Go的性能。

下面是一个比较全面的编程语言跑分评测:

Q2:JavaScript连静态语言都不是!

和Python/Ruby一样,JavaScript属于动态语言,使用起来也很方便。举个例子,假如我想把变量exampleArray设为数组,我会先给它赋值,然后通过length函数来获取数组中元素的数量。

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

但假如我不小心赋值给了它一个字符串,代码照样运行不会报错,可并不是我想要的结果:

exampleArray = "text" -> "text" exampleArray.length -> 4

这一类错误在动态类型的语言中经常会遇到。大多数的开发者都会专门写一些检查和测试来避免此类错误的发生。

如果你非要学一门静态语言的话,我依旧推荐你学习JavaScript,之后再开始学习TypeScript。

TypeScript是有学习曲线的,但在掌握了JavaScript之后,你的学习会很顺利。—Alex Ewerlöf on TypeScript

Q3:我想要学的是怎么开发移动App

那你也还应该先学JavaScript呀~

JavaScript有一些很棒的工具可以开发原生的移动应用,例如Angular CordovaReact Native.为了让你的移动App真的像模像样,它至少得有个后端,你用一些合适的Web开发框架可以很轻松地实现,例如Node.js+Express.js

而且移动开发的春天也正是JS的流行带来的。

在StackOverflow的调查中,有近一半的开发者的岗位都是Web开发,移动开发岗只占了8%。

为某事专门下一个App的境况也已不再,大多数的智能手机用户开始趋于不下载新的App了

当然——人们还在用着App。绝大多数都是大厂的微信、支付宝一类(原文:Mostly Facebook, Google Maps, and handful of others)。市场对移动开发的需求也越来越小。

移动开发的前景也难以预期。而且在许多方面,使用JavaScript来开发维护和部署移动应用要更加轻松简单。所以像Facebook和Google这样的公司在研发更好的JavaScript工具上投入的越来越多。

在2016年,几乎所有的开发都和Web开发有关。所有的事情都依附着互联网这个大平台。而且下一波将要崛起的设备——家庭智能、自动驾驶汽车等也都需要依附于网络。

Q4:JavaScript不是一个只花10天写着玩的语言么?

JavaScript有一段简史

人们也经常会拿JavaScript开各种各样的玩笑

同样人们也喜欢吐槽C++,可不管有多少人吐槽,C++依然很成功。

译者注:这就和PHP是全世界最好的语言是一个道理。

所以如果再有人在你面前说JS怎么怎么不好的话,请记住C++之父的那句名言:

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

译者:有任何问题或者建议意见请在评论区参与讨论,我已经准备好了;)

如果你已经下定决心开始学习JavaScript了:

学习方法

在2016年如何学习JavaScript? - 从零学习前端开发 - 知乎专栏6周学习计划,攻克JavaScript难关(React/Redux/ES6 etc.) - 从零学习前端开发 - 知乎专栏

成功案例

科班狗的前端之路非计算机专业出身的我是如何在两年内成长为前端工程师的 - 从零学习前端开发 - 知乎专栏

如果你想要完整的学习Web开发

Come on Baby! 你也可以成为Web开发工程师!——Web开发工程师完全成长指南 - 从零学习前端开发 - 知乎专栏如何在一年之内通过自学找到Web开发工作 - 从零学习前端开发 - 知乎专栏前端学习路径 - 余博伦的文章 - 知乎专栏2016/2017 Web 开发者路线图 - 从零学习前端开发 - 知乎专栏

如果你对文中提到的FreeCodeCamp感兴趣(本文的原文作者就是FCC的创始人)

全世界学习Web开发的最好方式-FreeCodeCamp学习参考资料 - 从零学习前端开发 - 知乎专栏

更多你的第一门编程语言应该学什么?ʇdıɹɔsɐʌɐɾ:ɹǝʍsuɐ相关信息请关注本站,本文仅仅做为展示!