大多数人学习编程的计划开始于某一天的深夜谷歌搜索。 搜索的内容通常类似于“学习__”(自行脑补空格) 但是他们是怎样决定搜索哪种语言的呢?
或者
或者
然后我们剩下的人可能会搜索:
几乎没有问题会普遍到要用信息图表来展示。 但下图列举了一堆这样的问题: 图片来源 (http:///startcoding) 决定你的第一个编程语言是一个有趣的过程,有点像 “你属于昆汀·塔伦蒂诺的哪个角色?”的人格测验。 但是,在你以小孩玩泥巴的心态跑去学习 Ruby 之前,给你提个醒:这个赌注相当高。 它可能会耗费你上百个小时去练习,但你远远不会胜任你第一个编程语言。 因此,你要考虑以下因素:
每年都会产生新的编程语言,和这些编程语言的新学术论文,以及新的网络漫画。 不信你看上个月的这篇佳作: 当你选择第一个编程语言时,选项有很多。为了进一步缩小选择,这里是过去 12 年来最常见的,与学习编程有关的谷歌搜索: Java 起起伏伏。 Python 逐渐上升为最受欢迎的选择。 但是躲在下面是一个小火车头,在过去几年的流行度慢慢地上升。而这个小火车头就是 JavaScript。 在谈论这些编程语言之前,我先澄清:
那就正式开始吧,首先我们来探索一下目前学校教授编程的方法。 计算机科学 101 大学一直是以计算机科学的名义来教授编程的,而计算机科学通常被看做是数学的延伸,或者是电气工程学位的周边学科。 当然,你可能已经听说了:
截止到 2016 年,很多大学仍然把编程当成计算机科学,把计算机科学当成数学。 结果是许多入门级的编程课程专注于低层次的抽象语言,如 C,或聚焦于数学编程的语言,如 MATLAB。 而系主任通常会指着编程语言的年度排行榜,如 TIOBE指数,或者来源于 IEEE 的结果(如下图),坚持保留这些课程。 大多数这些排行榜就跟10年前几乎一模一样。 但近几年还是发生了一些变化,甚至在学术届。 在 2014 年,Python 超过 Java 成为美国顶尖的计算机科学课程最流行的教学语言 。 并且另一改变也即将... 最终... 发生。 因为如果你看看从业人员实际使用的编程语言,你会发现它的画面是酱婶的: JavaScript 是目前最受欢迎的语言,Stack Overflow 在 2016 年的调查显示,调查的回应者中有 49,397 的开发者使用 JavaScript。 超过一半的开发者使用 JavaScript。 它对前端 web 开发非常重要,而且在后端开发中的使用程度也日益增长。在游戏开发和物联网等领域的使用也迅速扩张。 JavaScript 在招聘信息中被提到的次数也超过了除 Java 以外的其他编程语言: 数据来源于世界上最大的招聘信息收集者,Indeed.com 我们建立关于 JavaScript 课程的开源社区(Free Code Camp)绝非偶然。在过去的两年里,超过 5,000 个人使用 Free Code Camp 找到他们的第一份工作。 我并不是因为教 JavaScript 才宣传它。我教 JavaScript 是因为 JavaScript 是开发者找到第一份工作的最佳之路。 但是 JavaScript 适合你么?它值得成为你第一个编程语言么?让我们来探究一下前面提到的因素。 因素 #1:就业市场 如果你学习编程纯粹出于求知欲,那么请跳过这个因素。但是如果你像大多数学习编程的人一样,想利用这个技能找到一份工作,那么这是一个重要的考虑因素。 就像我之前提到的,Java 在招聘公告上提到的次数超过其他编程语言。JavaScript 紧随其后,排名第二。 但关于 JavaScript 的一个事实是:尽管 JavaScript 已经存在了 20 多年,它只在最近几年才被当作真正的工具,如 Netflix,Walmart,和 PayPal 等公司愿意用 JavaScript 构建整个应用程序。 因此,很多公司开始雇佣 JavaScript 开发者,但是在就业市场中这样的开发者很少。 数据来源:Indeed.com 对每一个公开的 Java 职位,有 2.7 个 Java 开发者竞争。PHP 和 iOS 就业竞争同样激烈。 但是对于每一个公开的 JavaScript 职位,仅有 0.6 个 JavaScript 开发者。对于具有 JavaScript 技能的开发者来说,这是一个卖方市场。 因素 #2: 长期远景 平均一个 JavaScript 项目收到的 pull request 是 Java,Python,或 Ruby 项目的两倍。而在这一点上,JavaScript 比其他的编程语言增长的更快。 数据来源:GitHub 2016 10月的调查情况 JavaScript 的生态系统也得益于公司的大量投资资金和工程人才,如谷歌,微软,脸谱,和 Netflix 公司。 例如:TypeScript(一种 JavaScript 的静态类型的超集)已经有超过 100 个开源贡献者,他们中很多人是微软和谷歌的员工。 很难在 Java 上发现这种公司间的合作。通过收购 Sun Microsystems 拥有 Java 的 Oracle 公司经常起诉试图扩展 Java 的公司。 因素 #3: 学习难度 图片来源:XKCD 的滑稽漫画。 大多数程序员都会同意高级脚本语言相对易学。JavaScript就属于这一类,就像 Python,Ruby。 尽管大学仍然把 Java,C++ 作为第一类语言用来教学,但它们显然学习难度更高。 因素 #4: 你可以使用学习的语言创建的工程 这才是 JavaScript 的最大亮点。JavaScript 能运行在任何一个有浏览器的设备上,就需要一个浏览器。基本上你可以用 JavaScript 构建任何东西,并能随时随地分享。 由于 JavaScript 的普及,Stack Overflow 的创始人 Jeff Atwood 创造了他目前著名的法则:
而且随着时间的发展,Atwood 法则越来越有说服力。 Java曾经一样承诺过在任何地方运行。你也许记得 Java Applets。Oracle 已经在今年早些时候正式地停掉了它们。 Python 也遭受了同样的问题:
相比之下,这里有构建在浏览器里的应用程序,它们由开源社区的成员在 CodePen 上创建。您在浏览器中就能点击并且使用这些应用程序: 1970 年代风格的 Simon game Conway’s Game of Life Star Wars-themed Wikipedia Search A roguelike dungeon crawler game 先学好一门语言。再学习第二个语言 如果你不停地从一种语言跳到另外一种语言,你不会走的太远。 为了打破这种限制,你需要学好第一个语言。这样你的第二种语言会更加容易。 接下来,你就能学习更多语言,从而接触更多方面的知识,成为一个更全面的开发者:
但是首先你得学习 JavaScript。 Ok,现在我要去尝试那些不可能?——?我要试着预料评论部分的可能出现的异议。 异议 #1: 但是 JavaScript 不是很慢么? 在大多数实践意义上,JavaScript 是和其他高性能语言一样快的语言。 在数量级上,JavaScript (Node.js) 比起 Python,Ruby,PHP 不知道快到哪里去了。 而且它几乎与高性能语言如 C++,java,Go 一样快。 这里有最近最全面的综合的跨语言平台的基准值: 异议 #2: 但是 JavaScript 不是静态类型 跟 Python,Ruby 一样,JavaScript 是动态类型的语言,这样会很方便。但你可能会陷入困境。在这里我想把 exampleArray = [1, 2]-> [1, 2]exampleArray.length-> 2 但是随后我不小心把它指定为字符串。 exampleArray = “text”-> “text”exampleArray.length-> 4 这些错误会在动态类型语言中的一直存在。大多数开发人员只是通过检查到位,以防止这些错误,并且相应地编写测试。 如果你一定要在第一个编程语言中包含静态类型,那么我仍然推荐优先学习 JavaScript。合影你就可以很快地学会 TypeScript。
异议 #3: 但我真的想做一个移动 app 但是我仍然建议优先学习 JavaScript。
而且,值得指出的是,移动应用开发的最好的日子可能即将到来。 对于初学者,开发者中几乎一半的工作是 web 开发,和使用移动 app 的人们一样多。相比之下,只有 8% 的工作涉及移动应用程序开发。 49,525 人的职业,统计数据基于 2016 Stack Overflow 的调查响应人数。 “只有一个应用程序”的宏伟愿景并没有通过。相反,大部分智能手机的拥有者已经停止下载新的 app。 当然,他们仍然使用 App。通常是脸谱,谷歌地图,还有其他的。大部分对移动 app 开发者的需求集中在一些大的雇主。 那些移动开发工作的前景很难预测。多方面的发展,维护和部署移动应用程序使用 JavaScript 更容易。这样的公司如脸谱和谷歌都在大力投资使用 JavaScript 开发更好的工具。 截至 2016,几乎所有的开发都是 Web 开发。每一个接触的大平台都是“网络”。在下一个设备的浪潮中,你会在家里交谈时,汽车可以接孩子放学 -?网络将会把他们链接在一起。 而这就是 JavaScript 的意义。 异议 #4: 难道 JavaScript 不是只花了 10 天写出来的玩具语言么? JavaScript 有一段诡异的历史。 毫无疑问,这是人们以 JavaScript 开玩笑的代价。 同样,人们对 C++ 既爱又恨。尽管存在这种恨,但就像 JavaScript 一样,C++ 成功了,而且现在到处都在使用它。 所以,如果有人因为你在学习 JavaScript 而不是“本周精英语言”而嘲笑你,你只需要记住创造 C++ 的那个人一句名言:
|
|