本文翻译自what-programming-language-should-i-learn-first。做者开宗明义,直指结果,JavaScript是最适合初学者的语言。
本文从属于笔者的程序员知识图谱与体系结构。此外推荐阅读个人编程之路——知识管理与知识体系与前端入门与最佳实践。前端
不少人的代码之路可能从某个Google搜索开始,譬如如何学习xxx
,不过又该决定从哪一个语言开始这一段旅程呢?若是你问身边朋友的建议,可能会听到这些建议:java
硅谷里的小伙伴常常调笑Java,我以为我能够先学这个。react
Haskell,如今这么热,确定要学这个。git
Go语言的Logo好可爱。程序员
不过还有不少人估计会选择直接搜索,我应该学习啥语言呢?咱们的思考过程能够总结在下面这张图中:
这个过程真的是纠结而又快乐,估计若是是强迫症的处女座会更痛苦。从个人角度来看,咱们考虑学哪一门语言应该从如下几个方面进行考虑:github
这门语言的市场需求量如何编程
这门语言的将来前景如何segmentfault
这门语言是否容易上手后端
你计划用这门语言构建如何的项目react-native
编程语言的这片红海也是英雄辈出,每一年都会有新的编程语言出现,咱们先来看一幅漫画:
当咱们如今考虑应该选择哪一门入门语言时,咱们也要来看看这些年里别人的选择,下图是12年里各个语言的搜索量排行:
Java自己有其优点与劣势,而Python正在逐步成长为最受欢迎的选择之一。不过这两年随着Web技术的迅猛发展,JavaScript正成为日益受欢迎的选择之一。在正式阐述以前,我首先澄清一下:
我并不想引发圣战,并无强调哪一门语言就比其余的好
我认为每一个人不该该拘泥于某一门语言
我推荐才入门的同窗能够从JavaScript开始
如今咱们来看看学校里是怎么教编程语言的。
大学里常常在计算机科学与技术的系列课程中开设某一门编程课,而且经常看作数学或者电子课程的扩展。估计你也常常会听到以下的论述:计算机科学与技术的课程并不能让你成为编程大拿,就像刷墙的并不能成为美术大师同样。而在2016年里,仍是有不少大学像教数学同样教授计算机科学与技术。在这种背景下,不少编程入门级的课程都关注与C这样的底层抽象语言,或者专一于数学的相似于MATLAB这样的语言。
上图就是TIOBE对于编程流行度的排行榜,而在2014年里Python逐步代替Java成为最普遍的美国计算机科学与技术语言:
而若是咱们专一于工程应用领域的语言流行度,则有些不一样:
超过一半的开发者在使用JavaScript,JavaScript的浪潮从前端开始逐步席卷到后端,而且逐步发展到游戏开发与物联网等领域。而对于JavaScript开发者需求量也仅次于Java:
在过去的两年中,超过5000名开发者在Free Code Camp的帮助下寻找到了合适的开发工做。我并非由于我自己负责教授JavaScript就去推广它,而是由于JavaScript是最易于找到第一份工做的语言因此我选择去教授他。
若是你是彻底处于我的的兴趣爱好而学习编程,那么你能够跳过本节。不过绝大部分学习编程的人都但愿可以得到一份不错的工做。就像我早前说起的,Java是目前看来最受雇主欢迎的语言,而JavaScript紧随其后。不过这其中有个很大的因素就是Java已经流行了20多年,很大一部分岗位来源于对于旧系统的维护需求。
从上图能够看出如今大概2.7个Java开发者竞争一个岗位,而PHP与iOS差很少是两我的竞争一个岗位。
差很少如今开源项目中,每一个JavaScript项目的Pull Request请求数是Java、Python、Ruby平均数的两倍,从这一点看来,JavaScript比其余任何的流行语言都要发展迅速。
而JavaScript生态圈也不断受益于来自Google、Microsoft、Facebook以及Netflix等公司的投资,譬如JavaScript生态圈中的著名的静态扩展TypeScript有超过100位的开源贡献者,其中不少都是来自于Microsoft或者Google的雇员。目前收购了Sun的Oracle也在寻求利用这种社区参与度扩大Java的影响力。
估计大部分开发者都赞成相对高层的脚本式语言相对易于学习,JavaScript、Python以及Ruby就是属于这个范畴。虽然很多学校在教Java或者C++,不过它们是真的不容易学啊。
这一点正是JavaScript耀眼之处,JavaScript能够运行在任何支持浏览器的设备上,你能够用JavaScript构建任何应用,而后随处分享。正如Stack Overflow的合伙人Jeff Atwood所说:全部可以用JavaScript实现的应用最终都会转到JavaScript中。Java曾经也是主打一次编译,处处运行,估计你还记得Java Applets,近两年才被Oracle去掉这一特性。而Python也面临一样的问题,这里咱们列举几个好玩的用JavaScript构建的游戏:
JavaScript实际上是一个很是高效的语言,NodeJS自己是比Python、Ruby以及PHP要快的,它也近似于C++、Java以及Go这些编译语言。
相似于Python或者Ruby,JavaScript一样是一门动态类型语言,很方便,不过很容易引发动态类型转化与验证的问题。譬如我觉得我操做的是一个数组:
exampleArray = [1, 2] -> [1, 2] exampleArray.length -> 2
而后若是一不当心转化为了字符串,那就糟了:
exampleArray = “text” -> “text” exampleArray.length -> 4
Angular Cordova与React Native 都是不错的选择。