JavaScript是适合初学者的最佳编程语言。 是不是?

尽管有很多缺点,JavaScript仍然可以说是适合初学者的最佳编程语言,也是孩子们可以尝试的最佳语言。

图片

那是2007年。 O'Reilly Media是技术书籍的杰出出版商,向我提出了一个想法。 他们问我是否想写一本有关JavaScript的书,该书适合编程的绝对初学者。 “为什么呢?”我立即问了一个反问。

不能说JavaScript在当时是一种完全没用的语言。 但这只是网站开发所需的一组精心选择的技术中最重要的要素之一。 是的,一小段JS代码可用于验证表单或突出显示悬停的按钮。 但是JavaScript只是网站功能的可选添加。 如果您将其从页面中删除,则一切将继续以与其使用相同的方式工作。

此外,JavaScript还带来了其他技术带来的诸多负担。 因此,与之相关的浏览器不兼容问题;它缓慢,不安全,完全不可靠。 我没有兴趣教别人为JavaScript创建无用的窗口小部件。 在我看来,这些小部件与带有旋转地球仪的GIF动画毫无意义,它们在Internet诞生之初就非常流行。


就像我天真地想到的那样,最明显的使用JavaScript的方式是这样的:大型服务器框架应生成所有必要的JS代码并将其嵌入专门为您的浏览器设计的页面中。 服务器生成的JavaScript代码可能太麻烦了,但它是为特定版本的浏览器设计的。 考虑到JS仅起辅助机制的作用,即使该站点的访问者完全关闭了JavaScript,一切也可以正常工作。

不用说,那我就没有写关于JavaScript的书。 我继续进行服务器端编程,并写出我最喜欢的技术(通常是有关C#和.NET Framework的信息)。 许多年过去了。

然后奇怪的事情发生了。

JavaScript从字面上起飞。

我仍然认为JavaScript不应该被誉为世界上最好的编程语言。 即使,老实说,我也不认为这是一种很好的语言。 但是在某些方面,我改变了主意。 现在,我认为JavaScript可能是适合儿童和新手程序员的最佳第一语言。 事实是,与所有其他编程语言相比,JavaScript具有一个主要优势。

JavaScript的惊人普及是它的主要优势。


JavaScript的独特优势之一是它的普遍性。

这种语言几乎随处可见。 所有操作系统,所有类型的浏览器以及台式计算机和移动设备均支持该功能。 在不将JavaScript应用程序安装到用户计算机上的情况下运行它们也很重要。 实际上,要回忆起过去不曾有过的日子,公司在内部网络上部署客户端/服务器应用程序,花了数周时间来解决设置这些应用程序的问题以及意外错误。 面对这些噩梦,您可能会很欣赏JavaScript的吸引力。

由于JavaScript的盛行,它不一定是最好的编程语言。 他只需要足够好的语言。

学习编程时,类似的机制也起作用。 首先,对于以学习经过时间考验的实用技术来开发程序的人而言,语言普遍性问题似乎并不是特别重要。 但是,与专业编程一样,许多相同的问题与教学编程有关。 如果您想让任何人使用您创建的内容,那么JavaScript是唯一的选择。

假设您正在开发一个出色的应用程序,该应用程序通过向用户提问来确定其个性特征。 设置开发环境非常简单。 但是,当您想将程序发送给朋友时会发生什么? 他是否需要安装运行时环境或重新创建与您相同的开发环境? 在他可以下载和安装程序之前,是否需要“调整”计算机的安全设置? 也许您的朋友使用的操作系统根本不支持您的程序,或者使用的移动平台上(如果您不详细介绍)只能安装通过iTunes或Google Play分发的专业应用程序? 如果您使用JavaScript开发程序,并使用简单的网站进行分发(例如, GitHub允许您免费创建此类网站),那么所有这些问题都将消失。

如果我们未来的程序员是小孩,那么这对您来说是一个不可否认的事实:小孩和浏览器之间的联系非常紧密。 如果您看过一个在计算机上(而不是在移动设备上)工作的孩子,那么您可能已经注意到他花了至少98%的时间在浏览器上。 孩子们玩浏览器游戏,使用社交网络,并使用Google课堂和Google文档上学。 如果孩子们编写的代码可以在其本机浏览器世界中正常工作,那将是完全自然的。

现在,我们正在讨论JavaScript的优势。 但是,当然,将JavaScript作为一种面向初学者的编程语言,人们不禁会回想起它的缺点。

JavaScript缺陷


javascript问题呢? 这种语言有严重的缺陷,它的怪癖,矛盾和局限性对于刚开始学习编程的人来说是非常不愉快的。 幸运的是,有一些现代的解决方案可以缓解JavaScript的大多数缺点。

让我们分析一下有关该语言的四个主要抱怨。

▍1。 在JavaScript中使用数据类型的问题


新手程序员最早学习的最重要概念是变量,即程序运行时用于存储信息的容器。 JavaScript的问题在于,该语言过于宽松,而且变量混乱。 它允许您执行看起来不正确的操作,并忽略明显的不一致之处。 他的疏忽可能使轻微的错别字变成破坏程序运行的灾难。

这是注定要失败的代码示例:

var myNumber = 100; myNumber = myNumbr + 1; 

看到错误了吗? 实际上,第二行使用了两个变量:在第一行中声明的变量myNumber和一个虚拟变量myNumbr 。 我们知道第二个变量是拼写错误的结果,但是JavaScript仅在程序执行期间才会通知我们,并给出一条类似于ReferenceError: myNumbr is not defined的错误消息ReferenceError: myNumbr is not defined 。 如果在写入变量名称时,大小写字母混合使用(例如, myNumber的变量意外变成MyNumber ), MyNumber发生MyNumber 。 如果您考虑某个变量存储一个数字,然后向其添加另一个数字,并且实际上该变量包含字符串或其他内容,则可能会出现问题,但性质不同。 在这种情况下,JavaScript将不会报告错误,但是计算结果将与您将两个数字相加所得的结果完全不同。 当类型混淆在程序中引起奇怪的错误时,每个JavaScript开发人员都可以回忆起这种令人不愉快的故事。

学习如何编程非常困难,同时又担心所学习的编程语言会对您造成伤害。 但是,幸运的是,借助合适的开发工具,可以轻松解决数据类型安全工作的问题。

Visual Studio Code是我最喜欢的适合于学习编程和专业使用的代码编辑器之一。 它是免费的,不需要资源,它的代码是开放的,可以扩展到无穷大。 它最显着的功能之一是支持组织检查TypeScript常见问题的JavaScript代码。 您可以通过使用适当的配置文件或在JavaScript文件顶部插入以下注释来启用此检查:

 // @ts-check 

这是一个示例,其中有两个错误,从JavaScript的角度来看,没有一个是错误。


JavaScript不考虑错误的问题

如果在此文件的开头添加// @ts-check注释,则VS Code将突出显示包含潜在错误的代码行。


突出显示的代码行

如果将鼠标悬停在突出显示的行上,则会出现一个弹出窗口,说明问题所在。


问题说明

由此可以得出什么结论? 尽管JavaScript可以容忍许多坏事,但是如果将JavaScript与高质量的代码编辑器和正确的附加工具结合使用,则可以创建类似于其他现代编程语言所具有的开发环境。 结果,使用JavaScript进行开发与使用其他语言一样方便,当然,其其他优点并没有消失。

▍2。 JavaScript不支持OOP


面向对象编程(OOP)是一种对代码进行建模和组织的方法。 如果正确应用OOP技术,它们将帮助程序员创建简单且组织良好的代码。 OOP还使重用重要的程序功能变得容易。

JavaScript因缺乏对面向对象编程的支持而臭名昭著。 实际上,JavaScript开发人员通常通过使用各种奇怪的构造来规避此缺点。 这些构造对于已经学习过OOP的人(甚至是还没有学习过,只是简单地将模板复制到其代码中并用于使用它的人)来说就可能具有某种意义。 但是,如果您是编程的新手,那么使用实现基本编程概念的可疑构造完全是错误的。

幸运的是,有一些漂亮的解决方案可以在JavaScript中提供OOP支持。 我最喜欢的这种解决方案是TypeScript ,这是Microsoft在2012年启动的一个开源项目。 TypeScript是对JavaScript的一种改进,它支持OOP(以及许多其他有用的功能,如强类型检查)。

可能有人会说我们在谈论JavaScript,但是TypeScript不是JavaScript。 而且,实际上是。 但这是一个有趣的细节。 该代码以TypeScript编写,然后在执行之前转换为JavaScript。 这使您可以享受TypeScript和JavaScript的所有优点。 如果选择TypeScript,您将拥有一种现代的编程语言,可以在其中编写代码,并且拥有普通JavaScript使用的最广泛的支持。

而且,最重要的是,TypeScript代码会自动转换为JavaScript。 当然,计算机生成的JavaScript代码使用相当繁琐的结构来反映TypeScript实现的概念,但这并没有改变。 程序员研究了OOP的概念,并且最终代码可以正确运行,并且可以通过现代计算机毫无问题地进行处理。

不信? 然后考虑一个事实,即一些最现代的创新桌面应用程序使用TypeScript和Electron的组合,该框架允许您在传统浏览器之外执行JavaScript代码(尽管应注意,Electron使用浏览器功能)。 VS Code编辑器是此类应用程序中最令人印象深刻的示例之一。 事实证明,编写JavaScript代码非常方便的工具本身就是用JavaScript编写的。 没错,确切地说,VS Code是用TypeScript编写的,但是用这种语言编写的代码仍会转换为JavaScript代码。

当然,在学习编程时,不必使用TypeScript,如果新的JavaScript程序员决定这样做,那么他们无需学习OOP原理就可以做很多事情。 实际上,这是一个选择问题。 在任何情况下,都可以注意到JavaScript是一种动态开发的语言,并且逐渐向其中添加了一些功能,使其更接近TypeScript具有的所有有价值的东西。

▍3。 到处都是劣质的JavaScript代码


我能说什么 劣质代码可以用任何编程语言编写。 听说过Visual Basic吗?

▍4。 JavaScript开发需要其他库和框架


为了获得比语言更广泛的功能(而不是重新发明轮子),JavaScript程序员需要使用第三方库和框架。 选择用于创建项目的正确要素并不像乍看起来那样容易。 特别是所选的附加工具必须正确地解决分配给它们的任务,程序员必须确信他们将长期使用开发人员的支持,并且彼此之间不会发生冲突。朋友

使用其他语言的开发人员也面临某种问题。 但是,应该注意的是,很少有语言会像JavaScript一样遭受这个问题的困扰。 为了成为对所有JavaScript世界都开放的认真程序员,您需要组装自己的开发工具集。 同时,每种可能的选择都是如此复杂和多方面,以至于您只能理解图书馆是否适合您,如果您学习得很好(当您学习它时,可能会发现它已经失去了相关性)。她的位置可能会出现一些新的,有吸引力的东西-可能在短时间内引起人们的普遍兴趣)。

无论这一切多么令人悲伤,这些问题实际上都不会影响初学者。 如果有人正在使用JavaScript学习编程,那么最好远离框架和库,无论它是众所周知的东西,例如jQueryAngularReact还是Vue ,还是在某个时候发明的东西这句话是写出来的,或者是本文发表时的第二句话。 当然,一个精通基础知识的初学者可能会想要熟悉至少一种流行的附加工具。 但这是一个完全不同的故事。

总结


实际上,选择第一种编程语言是一个不可能找到绝对正确答案的问题。 本文的作者仅在此问题上分享了他自己的观点,并由于他的经验和喜好给出了与他亲近的示例。 但是,无论如何,所有程序员都是从某个地方开始的,无论选择第一语言有多困难,仍然必须做出这种选择。

亲爱的读者们! 您是否同意JavaScript在现代条件下是学习编程的最佳语言? 如果您不同意,那么也许您知道一些更适合此目的的语言?

Source: https://habr.com/ru/post/zh-CN445272/


All Articles