大数据文摘作品,转载要求见文末 编译 | Aileen,yawei,彭晗,蒋宝尚,钱天培
------------------- 【数据科学实训营】开课在即, 小班手把手实战辅导, 云平台7*24小时练习, 掌握数据科学家必备技能。 报名优惠最后一天, 详情见文末。 ------------------ 大多数人学习编程的旅程都是从深夜的一次度娘搜索开始的。 比如很多情况下会是搜索:“学习__(某种编程语言)” 但是他们是如何决定他们想要学习的语言种类的呢? 有些人这么想,“在硅谷,他们老用Java打趣。或许我也该去学学。” 或者是: “Haskell现在这么火热,就Haskell吧。” 还有一些人是这样: “给GO 代言的那只地鼠萌萌哒,学Go吧。” Go的代言地鼠 至于剩下的那群人,可能会搜索以下内容: “我应该先学习哪一门编程语言?” 这问题被问得太多了,现在可都有专门的图表供查询答案了。 图表:“我该先学哪门编程语言?”答案自测 决定你所学的第一门编程语言可能是一个有趣的过程----就像是玩“你是金庸小说里的哪个角色?” 但如果你只是因为小时候喜欢玩泥巴,所以就去学Ruby的话,我可得提醒你,这可不是个小决定。(注:Ruby因其功能简单但应用灵活而常被比作橡皮泥) 你将会花数百个小时来学习你的第一门编程语言(而且这也只是入门所需罢了),所以你需要慎重考虑以下几点:
每一年都会有新的编程语言涌现而出,随之而来的是关于这些新语言的学术论文,以及网络漫画。 一点也不夸张,就来看看这幅上个月新出的漫画吧,画的还不错的: 图表:这幅漫画通过描述一个王子救公主的故事调侃了每种编程语言的特点 当谈到第一门编程语言该学什么的时候,这选项可多了去了。将范围缩小一点,这里是过去12年,与学习编程相关的最常见的谷歌搜索结果:
图表:一些学习编程语言相关的谷歌搜索的频率变化趋势 Java的搜索频率时高时低。 Python逐渐成为最受欢迎的选择。 但是藏在这些下面的一个小不点儿,在过去的几年慢慢地在积累人气。它就是JavaScript。(作者把JavaScript比作欧美儿童绘本the Little Engine That Could中努力向上的小火车。) 在我谈论这些编程语言以前,让我先澄清一下:
让我们先从学校如何教编程谈起。
计算机科学入门 图表:学生所写程序质量与学习时间的关系 按照惯例,编程教学通常被归在计算机科学的范畴下 。而计算机科学则通常被看作是数学的延伸或者是与和电子工程学位的密不可分联系。 当然,你现在可能也听过: “计算机科学教育不能让任何人成为编程专家,这就好比光学习画笔和颜料不能让人成为画家一样。” Eric S.Raymond 截止到2016年,很多大学仍然认为编程就是计算机科学的一部分,而计算机科学就是数学的一部分。 因此,很多入门性的编程课程侧重于低层次的抽象语言,比如C,或者是侧重于数学运算的语言,如MATLAB。 而计算机学院的老大们也依然持之以恒地根据年度编程语言排行榜来选择他们的教学语言, 比如TIOBE Index,或者是这张IEEE的: 图表:各种编程语言受欢迎程度排行榜 大多数排行榜看起来几乎和十年前几乎一模一样。 但即使在学术界,不同编程语言的地位也已发生了翻天覆地的变化。 在2014年,Python取代了Java成为在美国顶尖计算机科学项目里最为流行的教学语言。 图表:美国顶尖计算机科学项目所用教学语言排行 而另一个变化也必将会发生。 因为如果你看看工业界实际使用的语言,情况则大不相同: 图表:在Stack Overflow2016年的程序员调查中,JavaScript成为最受欢迎的编程语言 超过半数的程序员使用JavaScript。JavaScript对web的前端开发尤为重要,并且对于相应的后端开发也越来越重要。而且,它正迅速地扩展到游戏开发和物联网领域。 招聘启事中提及JavaScript的次数也多于除了Java外的其他语言: 图表:招聘启事中每个编程语言被提及的频率 我们开设我们开源社区的JavaScript课程也并非偶然。在过去的两年中,超过5000人通过Free Code Camp得到他们第一份程序员工作。 我提倡JavaScript并不是因为我在教它。我教授JavaScript是因为这是获得第一份程序员工作最可靠的途径。 但是JavaScript适合你么?它是否值得成为你的第一个编程语言?让我们再来探讨我之前提到的那些因素吧。 因素一:就业市场 如果你学习编程纯粹是出于求知的好奇心,那么你可以跳过这个因素。但是如果你像大多数学习编程的人一样,想要用这项技能去找工作,这会是一份十分重要的考量。 正如我前面提到的,在招聘启事中,Java是被提及最多的编程语言。JavaScript则紧随其后位列第二。 但是JavaScript的情况是这样的:尽管它存在了将近20年,也只是最近才成为一个正式的编程工具。现今像Netflix,Walmart和PayPal这样的公司已经在用JavaScript编写他们所有的应用程序了。 因此,大量的公司正在招聘JavaScript开发人员,但是在就业市场上并没有这么多会JavaScript的程序员。 图表:不同编程语言对应岗位数量与程序员数量之比 每一个Java岗位平均有2.7个Java开发者竞争。PHP和iOS的竞争也是同等激烈。 但是对于每一个JavaScript岗位,平均只有0.6个JavaScript开发者来竞争。对于具备JavaScript的开发者来说他们十分抢手。 因素二:长远发展前景 平均每个JavaScript项目的Pull requests是每个Java,Python或者是Ruby项目的两倍。除此之外,JavaScript的增长速度比其他流行语言都快。(译者注:Github的使用者在对项目作出修改后需要通过pull requests来让其他合作人审核。) 图表:Github每种编程语言所编写项目的pull requests总量 JavaScript良好的发展环境还受益于来自Google,Microsoft, Facebook, and Netflix等公司大量的投资资金和天赋异禀的工程人才。 例如,TypeScript(一个静态类型的JavaScript的超集)有超过100个开源贡献者,他们中很多都是微软和谷歌的员工,并拿着工资的 。 对于Java来说,这种类型的公司间的合作就很少有了。甲骨文(通过对Sun Microsystems的兼并获得了Java业务)经常对那些试图扩展它的公司提出起诉。(译者注;甲骨文公司,全称甲骨文股份有限公司,是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩) 因素三:学习难易程度 图表:这是一幅模仿XKCD的漫画,描绘了学习各个编程语言的难易程度。 (译者注;XKCD被其作者兰道尔门罗定义为一部“关于浪漫、讽刺、数学和语言的网络漫画”,被网友誉为深度宅向网络漫画。) 大多数程序员都同意高级脚本语言相对容易学习。 JavaScript以及Python和Ruby都属于这个类别。 尽管在大学, 学生学到的第一门编程语言仍然是像Java和C 这样的语言,但这几门语言可难学多了 。 因素四:你可以用它构建哪些项目 这是JavaScript真正牛逼的地方。 JavaScript可以在任何具有浏览器的设备上运行(设备的浏览器是运行JavaScript的平台)。 你可以使用JavaScript构建任何东西,并在任何地方分享它。 因为JavaScript的广泛应用,Stack Overflow的联合创始人阿特伍德提出了著名的阿特伍德定律: “任何可以用JavaScript来写的应用,最终都将用JavaScript来写。” 每过一个月,阿特伍德定律的地位就更加稳固。 Java曾经承诺:它在任何地方都能运行。 你可能还记得Java Applet。 甲骨文在今年早些时候正式宣布了放弃Java Applet。 Python也遇到了同样的问题:“我怎么把我编写的游戏分享给我的朋友? 更好的是,有没有一种方式,能让我将这种游戏安装在我的手机上,以至于我可以在学校通过手机向孩子们展示,而孩子们没有必要安装它。“ 在放弃用Python作为教学语言后,James Hague如是说。 与之成对比的是,我们开源社区的成员在Codepen的浏览器中编写了一些app。您可以点击并直接在浏览器中使用这些app: http://s.codepen.io/adambeagle/debug/qOamaz http://s.codepen.io/safx/debug/Ewcym http://s.codepen.io/duttakapil/debug/BKGjOa http://s.codepen.io/Megabyteceer/debug/qbXJMQ 先学好一门编程语言,然后再学习第二门语言。 如果你不停地从一种语言跳到另一种语言,你最终将什么都学不好。想要摆脱菜鸟阶段,你就需要熟练掌握你的第一门语言,然后你学习第二门语言的时候就会变得很轻松。 再之后,你可以扩大你的知识范围,并通过学习大量的语言成为一个更全面的开发人员 学习C语言能帮助你了解计算机内存管理方式,而且C语言在高性能计算中非常有用 C 非常适合游戏开发。 Python适合用于理科和统计学 。 如果你想在大型科技公司工作,Java是很重要的。 但是,你还是要先学习JavaScript! 好的,现在我要来挑战不可能了! 我将会回答一些来自评论区或是我预计大家会有的反对意见。 反对一:JavaScript难道不是运行地很慢吗? 从实用角度讲,JavaScript与高性能语言一样快。 它也几乎和C ,Java和Go等高性能语言一样快。 以下是新出炉的最全面编程语言速度比对的结果: 图表:各编程语言速度比对结果 反对二:但JavaScript不是静态类型的 像Python和Ruby一样,JavaScript是动态类型化的,这是很方便, 但你也很容易碰上麻烦。 这里我想让exampleArray成为一个数组。 我给它赋值,然后检查它的长度 也就是它包含的元素的数量。 exampleArray = [1, 2] |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|