JavaScript永远不会死。它是浏览器和其他应用程序(包括AI)的关键组成部分。如果某人或网络浏览器决定采用其他内容,那么由于特定的准则,这对他们来说是可行的,这将破坏整个互联网。
当人们批评JS及其设计时,这将造成与Ecmascript开发人员所面临的相同情况。但是,他们无法更改设计,因为他们不可行改变语言的基础知识。有一个理由允许VAR留在语言中,并带有其神经影响问题。
开发人员将使用与框架组合的JS,例如React或Angular(带有TS),以克服其奇怪的问题,例如同步行为,类型检查和动态键入,并且由于具有庞大的框架,因此深深地根深蒂固与浏览器和网络上的旧应用程序的关系,JavaScript永远不会死亡,只有进步。
WebAssembly可以提供竞争,我将谈论这一点。但是,由于我们无法通过修改JavaScript的基本设计来代替这些怪癖,这是否意味着JavaScript是一种糟糕的语言?
JavaScript的兴起
自1995年发布JavaScript以来,它一直是最受欢迎的语言。最近,它变得更加著名,因为其用例变得更加多样化,超出了网络路障。
。此外,最近对网站和基于Web的解决方案的需求增加了,JS充当网络的唯一语言。
它开始支持服务器端应用程序,以制作聊天机器人等等。根据Stackoverflow 2023开发人员调查,2023年将JavaScript的连胜率连续为第11年,是最常用的编程语言。它也是初学者和专业开发人员的首选语言。
JavaScript在2015年的重大更新命名为ES6之后,JavaScript继续受到欢迎。它从用于将动画和“化妆”放到用于创建大型和复杂应用程序的重要编程语言中的语言中。
JavaScript继续排名为Github上的顶级语言之一,而Google,Facebook和Netflix等公司则将其用于其代码库。它具有巨大的市场份额。实际上,它主导了整个市场。
如果说实话,则AI模型,聊天机器人和其他人的接口将被转换,转换或从Python转移到JavaScript,因为用户使用网络与这些ML模型进行通信,并且网络需要JavaScript。
一些API在浏览器中相互通信,以使机器人和人类之间的整个接口成为可能。但从本质上讲,进行汇编是因为Python用于研究,培训,处理数据集,开发和微调目的。
但是网络仍然由JS主导,因此机构必须使用JS进行部署。
问题是 - 如何将模型推向用户网络?因此,参与AI的人们正在利用和研究Web GPU来运行用户机器上的模型。他们不能为此使用Python。因此,JavaScript。即使您使用框架在网络上使用Python,它还是将代码转换为JavaScript。
您无法使用JavaScript进行数据集和AI模型的研究。但是,JavaScript作为一种没有其他补充组件的编程语言,没有得到足够的关注。大多数开发人员使用JavaScript与框架,环境和库的一些进一步组合,但是为什么?
JS框架,库和打字稿接管
有人认为JavaScript已经死了。这些属性,例如基于JavaScript的浏览器,框架或库,只是使其保持活力。
此外,JS还有许多怪癖,并且以它们为名,例如单线程和同步行为,它限制了在影响效率的同时同时运行的多个过程。我以前写了有关动态键入,同步,单线程和其他人的文章。您可以阅读以下文章以获取有关这些主题的更多详细信息。
除其他问题外,JS的受欢迎程度继续下降,表明搜索结果降低,而不是基于开发人员在现实世界应用中用作独立语言的JS的使用。但是,故事总会有更多。如果有些东西下降,另一个出现了。
看,香草JS有很多问题。大多数人甚至都不喜欢没有任何框架或图书馆。
因此,根据Google趋势和Stackoverflow趋势,多年来,JavaScript的搜索结果有所下降(以蓝色显示)。我包括了打字稿以供额外的参考(以红色显示)。
但是,JavaScript扩展了仅仅是用于客户端应用程序的普通编程语言。它遵循大型服务器端应用程序,Powers框架和多个库。因此,“ JavaScript框架”的搜索结果已从死者身上反对普通JS。看看。
如今,使用JavaScript的大多数应用程序不是香草(Plain)JS。这是因为普通JS有许多问题,这导致一些开发人员批评和指出JavaScript无法处理大规模且更复杂的应用。因此,开发人员将与框架和超集合结合,出于明显的原因,我会引用一些。
使用JavaScript创建的所有应用程序都处于某些不同的运行时环境中,例如节点JS或一个框架(例如React),以优化或利用JS的好处,同时消除其怪异的怪癖。因此,学习这些框架的需求是每天都在增加。
JavaScript正在使用,但不是一种简单的语言。相反,人们将其与基于JavaScript的各种技术相结合,这并没有将其视为死亡甚至过时的技术。同样,学生收到了一支机械铅笔来使标准铅笔更好。
但是,这根本没有取代标准铅笔。铅笔还活着,以一种或另一种形式的临时作品,但要进行特定的升级。这只会使JavaScript更强大。
只有使用HTML,CSS和JS Tech堆栈的开发人员使用外部技术的普通JavaScript。我认为这些开发人员的数量是巨大的,但是使用框架的开发人员的数量是多重的。
js的运作方式非常出色,可以将任何东西构建为一种与同一竞争环境中其他力量相结合的语言,包括打字稿或任何其他框架。如今,大多数应用程序都使用JavaScript来创建其软件或解决框架问题。如果您已经开发了JS应用程序,您将知道。
普通或香草JS在可伸缩性方面引入了许多问题,以至于Angularjs团队决定使用TypeScript进行下一个版本,将代码重构为TS,并将其更名为Angular。出于同样的原因,JS拥有各种框架和库。
让我们所有人都接受没有任何外部输入或技术的JavaScript都有各种错误,但这并没有使其过时。相反,它使语言更加自信,这使问题解决者能够带来更激烈和奢侈的解决方案。
频繁更新和相关性
此外,JavaScript每年继续进行一致的更新,以提高其核心功能。负责JS的ECMA仅在1997年至2011年之间发布了五个语言更新。在前十年中,更新不一致。更不用说,包括我在内的印度大学教授2009年的ECMA发行,称为ES5。
但是,JS中的现代功能于2015年到达(ES6),从那时起,该语言每年开始收到更新。除了社区支持外,该语言的更新保持一致,这使该语言更适合现代标准,框架和库。
它继续保持相关性。没有人可以说,随着这些频繁的更新,它已经过时了。我们继续获得诸如无效的合并之类的功能,该功能在2020年更新中被搅动了。
我们可以使用框架,库和其他解决方案(例如打字稿)来克服JavaScript的问题,因为它在浏览器中被固定了。但是为什么首先处理这些问题呢?
为什么甚至使用JS有这么多问题?
我们坚持下去。每个浏览器,每个应用程序,每个框架以及每个人都使用JavaScript。它直接在网络中直接受到了极大的限制。整个技术已经稳定在整个网络中。它极为主导,包括Java,Python和C#。
因此,为什么不创建或使用使我们远离JS困难的解决方案呢?这就是为什么我们拥有基于打字稿和基于TS的框架的原因。开发人员更喜欢打字稿,甚至更喜欢TS编译,而不是JS。
js就像时间一样,这是我们存在的基本方面。无论我们的欲望或行动如何,它都会向前发展,我们无法消除它。但是,为了有效地利用时间,我们可以学习时间管理技能并正确使用时间。以同样的方式,我们可以使用框架,库,诸如TS之类的超集和其他替代方案来覆盖JavaScript的痛苦。
大多数基于JS的框架出现在过去的五到十年中。 React仍然是最受欢迎的框架,因为它周围有一个庞大的社区,并且这个大型社区显得如此迅速,表明框架和JS的兴起。大型社区不断改善JavaScript周围的现有工具和框架。
新的框架或图书馆遭受了对公众的这一部分的侵犯。当您有一个庞大的社区时,您会提出问题,回头查询等等。
此外,'不要打破网络'数十年前建立的原则,并由TC39委员会保护旧网站。它指出,开发人员或现有网站可以为现有网站添加新功能,但不能更改或删除。
ECMA由于相同的原因无法对JavaScript进行重大更改。如果他们确实进行了更改,则整个网络上的一半网站将返回404。
对功能的转换或删除可能导致现有网站可能崩溃或过时。该原则保证了现有网站的功能,并且即使在英国伯明翰居住时也不会受到影响。
。即使新语言尝试替换JS,也无法修改现有功能。由于这一原则,JavaScript保持了主导地位。因此,即使是WASM也面临着几个试图与网络合作的噩梦,并且需要JS的帮助。但是WASM可以替换JavaScript吗?
WebAssembly可以替换JS吗?
WebAssembly ,缩写为 wasm ,是二进制基于指令格式的基于网络上的低级语言,通常涉及二进制0s和1s系列中的代码,人们认为它可以替换JS。但是,到目前为止,同伴认为WebAssembly比另一种选择更补充JS的工作。
您可以在C中编写代码,将其编译为WASM,然后编写JS包装器以转移并调用这些导出的C函数。您看到WASM如何补充JS吗?它要求JS与DOM进行交互以在浏览器上执行代码。
例如,UI/UX设计平台Figma使用C和C ++的WebAssembly转换器Emscripten,并且已经使用了多年。更不用说,WebAssembly于2017年发布,因此仍处于早期。
即使是Firefox团队,也将ASM.JS与相同的转载工具Esmcription一起使用C ++进行实时3D游戏,然后将它们放入Web浏览器中。供您参考,Asm.js就像WASM一样,由Mozilla于2013年创造。
WASM比JavaScript具有更快的加载速度和更好的资源利用率,因为它是一种低级语言。例如,fastq.bio使用WebAssembly加快其DNA测序计算。
但是,JavaScript提供了一种更简单的方法。我不确定二进制代码如何与高级语言竞争。感觉就像是在编程语言的发明中向后走,然后返回大会时代。
哎呀,人们仍然使用php和jQuery。如果人们不能从比JS差的技术中继续前进,我们不能指望他们这么快地转到WASM。从PHP转换为JS要比从JS学习基于二进制的语言要平稳。顺便说一句,WASM主要针对后端,因为它有很多问题,包括前端的DOM。
即使一种语言试图通过实现DOM功能来替换JS,该语言本身就会变得慢。即使它不会像JS那样慢,但由于浏览器比JS慢,它将面临明显的后果。由于网络赋予的许多原因,JS变得慢。
WASM仅受到一些浏览器的支持,并且仍处于开发阶段。对于非常确定的用例,人们可能更喜欢WebAssembly而不是JavaScript。但是,由于网络仍然与JavaScript结婚,因此WebAssembly替代可能会成为头痛。
当我们谈论社区时,JS占上风,WebAssembly尚未被广泛采用。大多数框架取决于和使用JS,因为浏览器确实可以。每个网站都在JS上,如果浏览器主要切换到WASM,我可以在软件工程社区中见证2008年的下一个大萧条。考虑stackoverflow的图形。
WASM对代码更加艰苦,没有社区支持,并且尚不可用。 JS是一种高级语言,更接近人类的语言,直接供我们理解。大会是一种低级语言,除非他们决定欢迎前门的麻烦,否则没有人愿意参与该语言。
WebAssembly将通过加速加载时间等等,继续在编译过程中与JavaScript合作。但是,它不会尝试替换JavaScript。此外,它不能替代JS。他们没有竞争。
WASM仍然锁定在JS运行时环境中。前端开发人员将面临JS的问题,而如果WebAssembly继续成功,后端开发人员可能会受到伤害。浏览器在WebAssembly中有助于基于前端的问题,但可以使后端采用WASM。 JavaScript将在前端工作,WASM与JS一起在后端工作,这是某些人的梦想。
现在我们知道可能和确实会影响JS的因素,这对您意味着什么?
概括
对JavaScript的许多批评来自无知的人,不愿意学习语言和基础知识。他们跳跃以学习中间和高级概念,只是意识到JS有一堆怪癖,我们可以通过理解其基础知识来克服。
正如专家所说的 - 如果您知道JavaScript,则可以轻松地转向一种新语言。就像学习弹钢琴一样。
如果没有强大的JavaScript知识,您将无法使用框架或库。我试图以最小或初学者对JS的理解使用反应,但我惨败失败。这个故事是在我即将出版的《基于javaScript》的《 crackjs》中。而且,如果您学习适用于所有其他编程语言的JavaScript的基本原理,则可以轻松地切换或更改其他语言。
即使WebAssembly也没有相同的自由或功能,可以使开发人员切换,并且仅允许开发人员使用其他语言来使用它。它仅仅是一个转板器。
尽管如此,这意味着学生必须继续学习JS。 JavaScript从来没有比今天更活跃。如果您是一个尚不了解JS的人,我强烈建议您学习它以解决现实世界中的问题。
JS使您可以在这些不同的框架的帮助下制作桌面,移动,网络和其他类型的应用程序。从统计上讲,即使普通的JS没有引起很多关注,您也必须学习JS才能使用其框架。
没有由JavaScript提供支持的框架,并且要使用一个框架,您必须学习普通的JavaScript以其最基本的基本层面。无论是否经常搜索普通JS,它都是大多数现代应用的基础。
如今,公司使用其软件的Web版本来创建其桌面版本,并且Web由JavaScript提供动力,因此您又回到了Square One。您有整个开发人员社区寻求帮助。到达JS社区的新包装的数量是无穷无尽的。您现在可以使用它来创建任何东西。
除了可以使用JavaScript解决的现实世界问题,许多公司,初创公司和公司还需要熟练精通JavaScript的工程师,尤其是当AI以突破性的步伐增长时。
JS就像软件工程界的房地产。您需要大量资金来购买资产或财产,例如您需要对JavaScript的广泛基本知识来构建诸如概念之类的软件的方式。即使是概念,生产力应用程序也使用下一个JS,节点JS,并与与JS相关的其他外部技术做出反应。
但是,一旦您开始,长期的欣赏和受益于这些属性或JS技能将为您带来后悔不服用它。新框架将出现,有些将变得不存在,但是JS将始终保持稳定。
只要存在网络浏览器和网络浏览器,JavaScript就会呼吸。即使使用框架和图层/子集(例如打字稿),所有内容也会转移到JavaScript。只要我们继续使用网络,JavaScript就会留下。
顺便说一句,我正在写一本名为crackjs的书,该书基于javascript的基础。如果您想了解有关JS的更多信息,请关注我的这本书,这些文章试图帮助全球开发人员。
如果您想贡献,请对您的意见发表评论以及我应该更改任何内容。我也可以通过电子邮件发送 hello@afankhan.com 。
包含用于用草稿编写此文章的资源/资源的概念文档-CrackJS Notion。