为什么我不建议你将JavaScript作为主力语言
英文原文:Why I don't suggest JavaScript as a first programming language
此文章引起比较大的争论,并不代表我们赞同其观点,这是继 JavaScript 就是一种垃圾语言 后,另一篇黑 JS 的文章)
在你的软件职业生涯中,JavaScript 不应该成为你的首要语言
作者 Matthew Mombrea
1 月 09, 2014 (几天前,我写了一篇文章关于在你的职业生涯中应该学习的编程语言。这个引起比较大的争论)
在我向大家推荐语言的时侯,一个主要的告诫就是,不要考虑 JavaScript。在我没有表达我的观点以前,很多人很快地向我建议 A) JavaScript 是显而易见的选择,还有B) 我没有把 JS 加入名单,显得我很无知。在这里我会详细地说明,我为什么不像大多数那样,建议你将 JavaScript 作为职业生涯中的主力语言。然后我会接受你的评判。
她没有一个好的基础
一个反复出现的, 由 JavaScript 传道士提出观点认为: 她是最简单的能最快起步和运行的编程语言,他们的举例无非是使用记事本编程的能力。他们提到不需要编绎器,他们举例这种语言广泛的 全球支持性(在任何浏览器上)。最后他们举例这种语言本身对于初学者来说是多么容易。我 100% 同意这些有效的观点。
想象一下,你正想成为一个赛车手,然后 XYZ 团队正在寻找一辆新车。相比找到一辆能在赛道上跑的赛车来说,找一辆自行车去完成自行车比赛是更容易一些。自行车的成本很低,学习曲线很浅,你可以很快很 容易的上手。让我们假设你参加自行车竞赛 5 年以后就可以非常地擅长了。现在你向往的 XYZ 团队的新职位可能会无视你 5 年的自行车竞技经验。他们将会雇佣一位在赛车方面拥有更少经验的人,相比你的自行车竞赛经验来说,他们的基础更好,而且未来成长地更快。
如果我招聘一些软件开发工程师,然后一位侯选人进来说他有 5 年的 JavaScript 开发经验,这会给面试造成非常坏的映像。这个人缺少一套完整的解决方案开发经验,他们在斜坡上的时间将显著超过那些只有两年例如 c,c++,Java,C#,Python,Ruby,PHP 开发经验的人。
如果我只雇佣一位 Web 开发者,这个精通 JavaScript 的家伙显然更加的有吸引力。因为他加入的只是一个自行车竞赛团队。
我说是软件开发这点很重要,软件工程师,端到端的系统编程,不仅仅是孤立的 web 开发。[在这里插入反驳理由:Node.js]。是的,Node.js 我知道。但是一位有经验的软件专业可以擅长多种语言,他们不需要在各种场合仅使用一种语言。你可以用锤子砍倒一棵树,但是用电锯更有意义。
JavaScript 是一门糟糕的面向对象语言典型例子
我承认,JavaScript 可以被认为是一门面向对象的语言,我只是认为她不是一个好的例子。尤其作为你的主力语言。你通过 JavaScript 实现的大多数面向对象语言的途径,会大大降低你掌握其它语言的能力。这本身并不是一件坏事,我只是认为你首先应该接触那些更加通用的面向对象风格,然后你 接触基础C风格的面向对象语言会更加地容易。
在我的观念里,理解类和类的继承关系是非常重要的[在这里插点 CoffeeScript 的事情,是的,我知道]。然后你开始 JavaScript 开发了,然后你会看到 JavaScript 的 constructor 和 prototype 扮演着 OOP 的角色。我忽然也想到强类型变量对于软件开发来说非常重要。
结论: 每个人都 “懂” JavaScript
除了刚开始那些将 JavaScript 作为首要编辑语言的观点,这个当然也是对的,但一部分原因也是因为他们都是些业余的“程序员”。在这方面,JavaScript 是完美的第一语言。如果你只想会一点蹩脚的编程,如果你想调整你的 Wordpress 博客,或者仅将编程视为一种业余爱好,我衷心推荐你使用 JavaScript。这不是说 JavaScript 更容易掌握,只有很少的人能够精通 JavaScript,而且那些人可能已经在其他语言方面积累了非常丰富的经验;但是也有很多人写了一点 JS 就认为自己是一名程序员。你不会想成为他们中的一员。
如果你想在软件开发做出一番事业,这里有很多路可以走。有很多好的语言可以选择,这个决定可能已经在大学里做出了(我所知道的计算机科学里没有 教 JavaScript 的)。在这篇文章中提到的这些,是我不建议那些想成为专业程序员首先学习 JavaScript 的原因。