我们首先应该学习哪种语言
twjh1645
9年前
<p><img src="https://simg.open-open.com/show/76e9bda0644aec25a96c83ac9a6c8372.jpg"></p> <p>大多数人学习编程的计划开始于某一天的深夜谷歌搜索。</p> <p>通常就像学习 " <strong>__</strong> "</p> <p>但是他们决定用哪种语言搜索呢?</p> <p>“他们总是对Java在硅谷上开玩笑。我想我应该学习Java”</p> <p>或者</p> <p>Haskell。现在是如此之热。Haskell。</p> <p>或者</p> <p>这些该死的地鼠是如此的可爱。</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/13a71d0736a3fa248dece575b6a463c6.png"></p> <p>然后是我们这些人,我们可能会寻找一些东西像 我应该优先学习哪种编程语言? 通常会问他们一些问题来来获取他们整个图表的态度。但这是其中之一:</p> <p><img src="https://simg.open-open.com/show/d5279a67971e0d64ff2fa29eb0501789.png"></p> <p>图片来源决定你第一个编程语言可能是一个有趣的过程 - 一种像那些其中的一个“昆汀·塔伦蒂诺性格是你?”人格测验。 但是就像你作为一个孩子喜欢玩玩具一样跑去学习Ruby之前,让我提醒你:这个赌注是相当高的。 它可能会耗费你上百个小时去练习,但你远远不会胜任你第一个编程语言。 因此,你需要考虑以下因素</p> <ul> <li> <p>语言的就业市场</p> </li> <li> <p>语言的长期远景</p> </li> <li> <p>语言是多么容易的学习</p> </li> <li> <p>当你在学习的时候你可以建立什么样的学习计划(和朋友分享,让你可以保持动力)</p> </li> </ul> <p>每年都会有新的编程语言,和这些编程语言的新学术论文,以及新的web漫画。 严格地,从上个月找到这篇佳作:</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/6a8dc1c8a42520a03d612928988d7c04.jpg"></p> <p>当你选择第一个编程语言时,这里有很多选择。为了进一步缩小选择,这里是过去12年来最常见的,与学习编程有关的谷歌搜索:</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/693368bd57c79ee3487e36fe016885fd.png"></p> <p>Java 有它的起起伏伏。 Python 逐渐上升为最受欢迎的选择。 但是隐藏这些的下面是勇敢的小火车头,在过去几年的流行度慢慢地上升。而这个引擎就是JavaScript。 在谈论这些编程语言之前,让我澄清:</p> <ul> <li>我并不是争辩任何一种语言客观地比任何其他语言好</li> <li>我认为开发者们应该最总不仅仅学习一种语言</li> <li>我认为他们首先应该学好一门语言。正如你可以在我的标题中颠倒的文本看到,这个语言就是JavaScript。</li> </ul> <p>让我们放下手头上的事情去探索目前编程在学校中是如何被教授的。</p> <h3><strong>计算机科学 101</strong></h3> <p style="text-align: center;"><img src="https://simg.open-open.com/show/94f1beeccb3bfc6cfec2c81c1acfe46d.png"></p> <p>大选是在计算机科学的保护伞下,传统地教授编程的,而这种方式通常被看做是数学学科的延伸,或者搭配了一个电气工程学位。</p> <p>当然,现在你可能听到是的是:</p> <p>“计算机科学教育远远不能像学习画笔和颜料可以使人成为一个专业画家那样,使人成为一个专业的编程者。”- Eric S. Raymond</p> <p>截止2016年,很多大学仍然像对待计算机科学一样对编程,以及对待计算科学就像数学。</p> <p>结果是许多入门级的编程课程专注于低层次的抽象语言,如C,或数学编程聚焦于如MATLAB。</p> <p>而系主任通常会指着编程语言的排行榜,如 TIOBE指数 ,或者来源于IEEE ,坚持保留这些课程。</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/15c0ba637f6f8724c4f7fe9d8ff6a320.png"></p> <p>大多数这些排行榜就像它们与10年前一样几乎是相同的。</p> <p>但是,变化确实发生了。甚至在学术上。 在2014年,Python 超过Java 成为美国顶尖的计算机科学课程的最受欢迎的教学语言</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/a27865d4be004d4e7daf491a6ead9fea.png"></p> <p style="text-align: center;"> </p> <p>而另一改变也即将... 最终... 发生。 因为如果你看看工作人员实际使用的编程语言,你会发现它描绘了一个与众不同的画面:</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/3a0c69ef1dd7b97f4ae1278aa6c6d2be.png"></p> <p>JavaScript是迄今为止最受欢迎的语言,开发者达49,397,这些开发者回应了2016 Stack Overflow 的调查。 超过一半的开发者使用JavaScript. JavaScript的招聘工作提到的次数超过其他编程语言,除了Java: <img src="https://simg.open-open.com/show/526c2e4ddd1467b4b0269c6a9898cf34.png"></p> <p>数据来源于世界上最大的招聘信息收集者, Indeed.com</p> <p>我们建立关于JavaScript课程的 开源社区 ,这不是偶然的。在过去的两年里,超过5,000个人使用开源社区找到他们的第一份工作。</p> <p>因为我教JavaScript,所以我不宣传它。因为JavaScript是开发者找到第一份工作的必由之路,所以我教JavaScript。</p> <p>但是JavaScript适合你么?它值得成为你第一个编程语言么?让我们来探索这些我之前提到的因素。</p> <h3>因素 #1:就业市场</h3> <p>如果你学习编程纯粹出于求知欲,那么略过这个因素。但是如果你( 像大多数人学习编程 )想利用这个技能找到一个工作,这是一个重要的考虑因素。</p> <p>就像我之前提到的,Java在招聘公告上提到的次数操作其他编程语言。JavaScript比较接近Java,排名第二。</p> <p>但这些是关于JavaScript的部分:尽管JavaScript已经存在了20多年了,它仅仅最近才成为一些公司重视的工具,如Netflix,Walmart,和PayPal愿意建立整个应用程序。</p> <p>因此,很多公司开始雇佣JavaScript开发者,但是在就业市场中这样的开发者很少。</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/64d57512c519e265949be661045bfd4c.png"></p> <p>数据来源于 Indeed.com</p> <p>对于每一个公开的的java职位,有2.7个java开发者竞争。PHP和iOS就业竞争同样激烈。</p> <p>但是对于每一个公开的JavaScript职位,仅仅有0.6个JavaScript开发者。招聘市场对于那些具有JavaScript技能的开发者需求很大。</p> <h3><strong>因素 #2: 长期远景</strong></h3> <p>平均一个JavaScript项目收到是Java,Python,或Ruby项目两倍的pull请求。而在这一点上,JavaScript比其他的编程语言增长的更快。</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/d90e80afd63f1087f50c70bf10a41665.png"></p> <p>来源: <a href="/misc/goto?guid=4958863874217588925" rel="nofollow,noindex">GitHub 2016 10月的调查情况</a></p> <p>JavaScript的生态系统也得益于公司的大量投资资金和工程人才,如谷歌,微软,脸谱,和Netflix公司。</p> <p>例如:TypeScript(JavaScript静态变量的超集)已经有超过100个开源贡献者,他们中大部分人是微软和谷歌雇佣来去工作的。</p> <p>很难用Java找到这种公司间的合作。Oracle- 长诉 通过收购Sun Microsystems,合法拥有Java-公司试图进一步在Java上扩展。</p> <h3><strong>因素 #3: 难学</strong></h3> <p style="text-align: center;"><img src="https://simg.open-open.com/show/6a296e438cbfefb2bcae3652daaa74e0.png"></p> <p>This is a parody of an XKCD comic . 这是一个模仿 XKCD漫画 。</p> <p>大多数程序员都会同意,高级别的脚本语言是比较容易学习的。JavaScript和Python,Ruby就属于这一类。 尽管大学仍然在教像Java,C++作为第一类语言,但它们仍然被认为很难学。</p> <h3><strong>因素 #4: 你可以使用JavaSCript创建你的工程</strong></h3> <p>这就是JavaScript的真实写照。JavaScript运行在任何一个有浏览器的设备上,就是一个浏览器。你可以使用JavaScript基本上建立任何东西,并随时随地分享。 由于JavaScript的普及,Stack Overflow的创始人Jeff Atwood创造了他目前著名的法律: 任何可以使用JavaScript编写的应用,最终都会使用JavaScript编写。 而且 随着时间的发展 ,Atwood的法律会变得更加的强大。 Java曾经一样承诺过在任何地方运行。你也许记得 Java Applets 。Oracle今年早些时候官方地停掉它们。 Python遭受同样的这么多问题:</p> <p>我如何才能给我的朋友这个游戏呢?更好的是,是否有一种方法可以让我把这个放在我的手机上,这样我可以显示给在学校的孩子们,而不需要他们安装吗?嗯. - James Hague在没落的 Python的作为教学语言](Retiring Python as a Teaching Language 。 相比之下,这里有一些应用程序,开源社区的成员在CodePen建立他们的浏览器。您可以使用这些并在浏览器中点击:</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/b0f521a33403033e6b5934b39b3c54cf.png"></p> <p>20世纪70年代Simon类型的游戏 <a href="/misc/goto?guid=4959723913498257495" rel="nofollow,noindex">1970s style Simon game</a> <img src="https://simg.open-open.com/show/a1da22984966e4030f5968fd3962ff6d.png"></p> <p><a href="/misc/goto?guid=4959723913585607096" rel="nofollow,noindex">Conway’s Game of Life</a></p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/c969c98a989d7635df614d3695e5b09a.png"></p> <p><a href="/misc/goto?guid=4959723913680924213" rel="nofollow,noindex">Star Wars-themed Wikipedia Search</a></p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/aabd2a8e296df2d3e23f965e1ddd4c36.png"></p> <p><a href="/misc/goto?guid=4959723913765219854" rel="nofollow,noindex">A roguelike dungeon crawler game</a></p> <h3><strong>学好一门语言。然后学习第二个语言</strong></h3> <p>如果你不停地从一种语言跳到另外一种语言, 你不会走的太远 。</p> <p>为了超越基础,你需要学好第一个语言。然后,你的第二种语言会更加容易。 从那里,你可以分出来的,并通过学习多种语言成为一个更全面的开发者:</p> <ul> <li>C是一个极好的方式来学习计算机如何实际在内存管理方面的工作,并在高性能计算方面是非常有用的</li> <li>C++因为游戏开发而伟大。</li> <li>Python在科学和统计方面是令人敬畏的。</li> <li>如果你想工作在大的科技公司,java是重要的。 <strong>但是首先学习JavaScript。</strong></li> </ul> <p>Ok,现在我要去尝试那些不可能 - 我将要试图和提前从评论部分的异议开始。</p> <h3><strong>异议 #1: 但是JavaScript不是很慢么?</strong></h3> <p>JavaScript是 - 为了最大地实用的目的 -和其他高性能语言一样快。 在数量级上,JavaScript (Node.js) 是比Python,Ruby,PHP快。 它也几乎与高性能的语言如C++,java,Go一样快。 这里是最近最全面的综合的跨语言平台的调查结果: <img src="https://simg.open-open.com/show/3f174b83ba421a518b4c5890bf113228.png"></p> <h3><strong>异议 #2: 但是JavaScript不是静态类型</strong></h3> <p>像Python,Ruby,JavaScript是动态类型的语言,这样会很方便。但你可能会陷入困境。在这里我想把 examplearray 认为数组。设置它的值,然后检查其长度 - 含义是它包含元素的数目。</p> <pre> exampleArray = [1, 2] -> [1, 2] exampleArray.length -> 2</pre> <p>但是我可以随机指定它为一字符串。</p> <pre> exampleArray = “text” -> “text” exampleArray.length -> 4</pre> <p>这些类型的错误会在动态类型语言中的一直存在。大多数开发人员只是通过检查到位,以防止这些错误,并编写相应地测试。 如果你非常想在你的第一次编程语言是静态类型,那么我仍然推荐优先学习JavaScript。然后,你就可以很快地学会TypeScript。</p> <p>“Typescript有一个学习路线,但是如果已经了解JavaScript,那么学习TypeScript将会很容易。” - <a href="/misc/goto?guid=4959724938530716203" rel="nofollow,noindex">Alex Ewerlöf在TypeScript写到</a> 。</p> <h3><strong>异议 #3: 但我真的想做一个移动app</strong></h3> <p>但是我仍然建议优先学习JavaScript。</p> <ol> <li> <p>JavaScript具有开发本地移动应用app功能的工具,如 Angular Cordova 和 React Native 。</p> </li> <li> <p>为了让你的移动应用程序实实在在做任何有趣的东西,它可能会需要一个适当的后端,需建立一个合适的Web开发框架,像Node.js + express.js。</p> </li> </ol> <p>而且,值得指出的是,移动应用开发的最好的日子可能即将到来。</p> <p>对于初学者,开发者中几乎一半的工作是web开发,和人们使用移动app一样多。相比之下,只有8%的工作涉及移动应用程序开发。</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/beb2a2a3b11517107d06910014a17224.jpg"></p> <p>根据 2016 Stack Overflow 响应的调查,参与的开发者有49,525人。</p> <p>“只有一个应用程序”的宏伟愿景并没有通过。相反,大部分智能手机的拥有者已经 停止下载新的app 。</p> <p>当然-他们仍然使用App。通常是脸谱,谷歌地图,还有其他的。同样地,大部分的移动app开发需求集中在一些大的雇主。</p> <p>那些移动开发工作的前景很难预测。多方面的发展,维护和部署使得移动应用程序更容易使用JavaScript。这样的公司如脸谱和谷歌都在大力投资使用JavaScript开发更好的工具。</p> <p>截至2016,几乎所有的开发都是Web开发。每一个接触的大平台都是“网络”。在下一个设备的浪潮中,你会在家里交谈时,汽车可以接孩子放学 - 网络将会把他们链接在一起。</p> <p>而这就是JavaScript的意义。</p> <h3><strong>异议 #4: 难道JavaScript不是只用10天的玩具语言么?</strong></h3> <p><img src="https://simg.open-open.com/show/63094e552e3b825f3a172f003f3c683a.png"></p> <p>JavaScript有一个 怪异模式的历史 。</p> <p>毫无疑问,你会听到人们以javascript开玩笑的代价。 <img src="https://simg.open-open.com/show/00d272a2c1e503277fdc7ce91da25e56.png"></p> <p>同样,人们对C++既爱又恨。尽管存在这种恨,但像JavaScript,C++已经成功了,而且现在很多地方都一样。</p> <p>所以,如果有人给你不是本周精英语言,而是学习困难的JavaScript,仅仅记住创造C++的那个人一句著名的话:</p> <p>“只有两种编程语言:一个是那些总是婊子使用的,一个是那些没有人使用的。” - — Bjarne Stroustrup</p> <p> </p> <p>来自:http://www.zcfy.cc/article/what-programming-language-should-you-learn-first-1602.html</p> <p> </p>