为什么我不推荐 JavsScript 为首选编程语言

对于软件职业生涯,JavsScript不应该是首选

几天前,我写了一篇《what programming language you should learn first for a career in programming》的文章,引来了很多的争论(Google+ 上有很多没有读文章就提交的)。

我的推荐语言队列中的主要因素是我不认为JavaScript是竞争者。我之前没有详细说明这一点,但是许多人很快就提出:A)JavaScript是明智的选择;B)我的疏忽导致。这篇文章我会详细写一下,对于那些想把软件开发做为职业生涯的人,我通常不会首选JavaScript。然后,我再接受你们的评价。

这不是好的起点

JavaScript狂热分子经常提到,它上手最快,马上就可以开始编程生涯。他们还提到了只用notepad就能开始编程,不需要一个编译器,还触碰可被语言(或任意web浏览器)支持的全局对象。最后,他们还会讨论语言本身简单的特点使得初学者进步很快。所有这些观点我100%同意。

假如你想成为一名赛车手,XYZ团队正在寻找一名新车手。搞到一辆自行车去参加自行车比赛,要比弄到一辆赛车跟着赛道上得车轮容易得多。自行车成本低,学习曲线非常平滑,你很快就能成为熟手。假如你参加了5年的自行车比赛,并且比较擅长了。现在你去应聘XYZ团队的赛车手岗位,他们会雇佣赛车经验少的人,而不是只有自行车比赛经验的你,因为起点越好,他们在赛车上成长得也就越快。

如果我想雇佣一名软件开发者,当应聘者说他了解JavaScript,有5年的JavaScript开发经验,这对本次面试将不是一个好的开端。这种应聘者缺乏开发一整套软件解决方案所需要的基础,他们的成长时间将比有2-3年C,C++,Java,C#,Python,Ruby,PHP经验的开发者长很多。

如果我要雇佣一名web开发者,JavaScript的家伙将更有吸引力。你也应该仅仅加入一个自行车比赛团队。

注意到我是在讨论软件开发、软件工程,端到端系统编程,不只是web开发,这是非常重要的【这里有人会引用Node.js来反驳】。是的,Node.js,我知道。但是一个有经验的软件专家知道一些语言,而不必深入某一种语言的每个细节。你用铁锤最终可以砍断一棵树,但是使用电锯是明智的。

JavaScript的面向对象编程是糟糕的例子

我承认JavaScript可以被认为是一种面向对象语言,只是我不认为这是好的例子。特别是你第一次接触的时候,你在JavaScript里的面向对象编程方式和其他语言相差太多。这本身不是坏事,我只是认为你第一次最好学习更通用的OOP方式,便于将来更加容易地学习一些基于C(或其他语言)的语言。

我认为理解类和继承也是重要的【有人会说到CoffeeScript,是的,我知道】。然后当你开始用JavaScript开发的时候,你会、你一定会看到JavaScript的构造器、基于原型的继承是如何被算作OOP的。我也碰巧想到强类型变量对于软件开发比较重要。

结论:每个人“知道”JavaScript

考虑到那些主张JavaScript做为第一门首选编程语言的最初言论,虽然是对的,它们也是业余“coder”大军的看法。在这一点上,JavaScript是最好的首选语言。如果你想简单涉足编程行列,如果你想鼓捣wordpress博客,或把编程做为业余爱好,我完全推荐JavaScript。这不是说JavaScript容易掌握,真正掌握JavaScript的人没有多少,那些掌握的人具有从其他语言得来经验的、很深的编程背景;但是有很多人认为他们是一个开发者,因为他们已经开始用JavaScript写东西了。你不想成为这样的人的。

如果你想把软件开发做为职业生涯,那么有很多路可走。有很多好的语言适合起步,结论或许在大学得到了印证(据我了解,还没有计算机科学系以JavaScript做为首选语言)。综上所述,我反对那些想成为专业程序员的人把JavaScript做为首选语言。

文章转载自 开源中国社区 [http://www.oschina.net]

时间: 2024-08-06 22:09:58

为什么我不推荐 JavsScript 为首选编程语言的相关文章

是什么让C#成为最值得学习的编程语言

随着 Web.iOS.Android.智能设备的流行,新的编程语言纷纷涌现并表现不俗,如 Ruby,Python,Scala,Go,Node.js,Swift 等.反观已经发展了近20年的 C# 语言(或者这里应该更准确的说是 .Net Framework),因为天生的平台局限,导致很多的 C# 程序员为了生计和前途纷纷转行投入到新语言的怀抱中.   就在此时,微软的 .Net Core 横空出世 跨平台:可以在 Windows.MacOS 和 Linux 上运行. 兼容性: .NET Core

金旭亮:如何选择你学的第一门编程语言?

说明:这篇文章是专门针对大学低年级学生(和其他软件开发初学者)写的,如果你己经是研究生或本科高年级学生,请将这篇文章转发给你的师弟或师妹,希望这篇文章能够帮助他们少走弯路,顺利地迈入软件开发的大门;如果您是一位有经验的软件开发者,或者是关注计算机教育的同行,也敬请提出宝贵意见. 最近,台湾知名技术专家蔡学镛先生写了一本<编程ING>,宣称"人人都能学会程序设计".作为一名IT教育工作者,这本书引发了我的兴趣,翻看之后,共鸣之处不少,结合国内计算机教育的现状,产生了颇多感触,

数据科学界华山论剑:R与Python巅峰对决

如果你是数据分析领域的新兵,那么你一定很难抉择--在进行数据分析时,到底应该使用哪个语言,R还是Python?在网络上,也经常出现诸如"我想学习机器语言,我应该用哪个编程语言"或者"我想快速解决问题,我应该用R还是Python"等这类问题.尽管两个编程语言目前都是数据分析社区的佼佼者,但是它们仍在为成为数据科学家的首选编程语言而战斗.今天,就让我们从数据科学的角度,一步步比较这两大编程语言. #1 对阵双方介绍 Ladies and Gentlemen,让我们隆重的

值得mark的11个开源机器学习项目

垃圾邮件过滤.人脸识别.推荐引擎--当你有一个大数据集并且希望利用它们执行预测分析和模式识别,机器学习是必经之路.这门科学,计算机可以在没有事先规划的前提下自主学习.分析和操作数据,现在越来越多的开发人员关注机器学习. 机器学习技术的兴起不仅是因为硬件成本越来越便宜以及性能越来越强大,促使机器学习在单机或大规模集群上轻松部署的免费软件激增也是重要因素.机器学习库的多样性意味着无论你喜欢什么语言或环境,都有可能是获得你喜欢的. 1. Scikit-learn Python由于其易用性以及丰富的函数

电脑驱动程序如何分类?

  一.什么是驱动程序 根据百度百科:驱动程序,英文名为"Device Driver",全称为"设备驱动程序", 是一种能够使计算机和设备通信的特殊程序,能够说相当于硬件的接口,操作系统只有通过这种接口,才能控制硬件设备的工作,如果某设备的驱动程序没有能正确安装,便不能够正常工作. 所以,驱动程序被誉为"硬件的灵魂"."硬件的主宰".和"硬件和系统之间的桥梁"等. 刚安装好的系统操作系统,很可能驱动程序安装

Processing编程学习指南导读

前 言 Learning Processing:A Beginner抯 Guide to Programming Images, Animation, and Interaction, Second Edition 本书讲的是什么 本书讲了一个故事.一个关于解放与自由的故事,一个关于逐步了解计算机基础知识的故事.通过编写代码,可以创造属于你自己的多媒体设计,而不必拘泥于已有的软件工具.这个故事不仅仅是为科学家和工程师准备的,同时也是为你准备的. 本书是为谁准备的 本书是为初学者准备的.如果你到目

甲骨文携手各界共庆Java 20周年

本文讲的是 :   甲骨文携手各界共庆Java 20周年 , [IT168信息化]可曾记得你用Java写的第一句话"Hello World"?你的第一本Java书籍的封面?你调试的第一个Java程序-?二十年不过弹指间,我年方弱冠,你风华正茂.跳跃的键盘上,代码在你的指间流淌,世界在你我眼前瞬息万变.二十年来,无数的程序员投身到Java的怀抱,无数的商业应用基于Java构建.IT技术的长河大浪淘沙,能风风雨雨走过二十载,一路都是你们的陪伴. 2015年5月23日,北京,在代表着中国科技

适合新手了解的GUN/Linux起源

一.计算机的发明 世上本无路,走的人多了,就有了路.世上本无计算机,琢磨的人多了--没有计算机,一切无从谈起. 三个人对计算机的发明功不可没,居功至伟.阿兰·图灵(Alan Mathison Turing).阿塔那索夫(John Vincent Atanasoff).和冯·诺依曼(John von Neumann). 图灵从理论上证明了计算机的可行性;阿塔那索夫实践了图灵的理论;冯·诺依曼奠定了现代计算机的体系结构. 图灵说这玩意儿应该可以做,已经被证明了;阿塔那索夫二话不说动手就做了一个;冯·

《21天学通C语言(第6版•修订版)》一1.8 作业

1.8 作业 21天学通C语言(第6版•修订版) 下面的小测验帮助您巩固所学的知识,练习则让您实际应用所学的知识.在阅读下一课时之前,应尽可能理解这些小测验和练习的答案,答案见附录F. 1.8.1 小测验 1.指出C是首选编程语言的三个原因. 2.编译器的功能是什么? 3.程序开发周期中包含哪些步骤? 4.使用您自己的编译器编译程序program1.c时,应执行什么命令? 5.在您的编译器中,完成编译和链接工作只需一个命令,还是需要分别执行命令? 6.C语言源代码文件应使用什么扩展名? 7.FI