打工人最爱技能:JavaScript的未来会走向何方?

开发 前端
作为一个见证了过去17年编程语言发展的软件开发者,笔者试图在本文中对JavaScript进行一些预测。

 本文转载自公众号“读芯术”(ID:AI_Discovery)

作为一个见证了过去17年编程语言发展的软件开发者,笔者试图在本文中对JavaScript进行一些预测。

[[353550]]

如今,JavaScript无处不在,不仅仅应用在前端(浏览器)和后端(Node和Deno),也包括手机、电脑桌面软件,甚至两者的混合应用。它已经成为2020年求职人最想拥有的工作技能之一(根据StackOverflow的开发者调查)。

但为何会如此呢?这对JavaScript的未来又意味着什么?JavaScript的发展是否会顺风顺水?未来会不会有一个更新更好的语言诞生,从而推翻JavaScript无所不能的地位?本文将探讨一下这些可能性。

 

是什么让JavaScript如此受欢迎?

不管你是喜欢还是讨厌,JavaScript的流行都是毋庸置疑的。根据TIOBE的流行指数,在排名前十的语言中,JavaScript目前排在第七位。

 

打工人<span><span><span><i style=最爱技能:JavaScript的未来会走向何方?" src="https://p6-tt.byteimg.com/origin/pgc-image/6519126b4e644dda887649265c69a135?from=pc" width="1106" height="486">

 

根据 StackOverflow的2020年开发者调查,最受欢迎的编程语言正是Java:

 

打工人<span><span><span><i style=最爱技能:JavaScript的未来会走向何方?" src="https://p1-tt.byteimg.com/origin/pgc-image/ab46cf1418634b39b8b944cb87c13127?from=pc" width="1106" height="458">

 

这些不是随机数字或有偏见的民意调查,这些数据可以分析出我们的市场,对全球数以百万计的开发者进行调查,一切都在表明JavaScript是2020年的热门语言之一,对此你怎么看?

当然,这个问题可能有很多不同的答案,主要取决于你在挑选编程语言时看重什么,这是我的看法:

  • 背后有一个庞大的社区。

围绕着这样一个事实,发生了许多有趣的故事:JavaScript外部框架可能比实际开发者使用的更多。虽然这可能是一个夸张的说法(注意笔者这里说的是 "可能"),但这源于一个事实,那就是我们有这么多的人,试图让这门语言成为我们自己的语言,此举贡献巨大。这并不是一件坏事,证明了这是一个充满生命力并不断尝试发展的社区。

当笔者不得不使用其他语言时,非常怀念的一件事是,人们可以从原社区中获得大量的支持和帮助。这绝对是一个进步的标志,此举还有待完善,并有望在未来取得更多的成就。

  • 适当的发展方式。

撇开框架和库不谈,语言本身也在不断发展。不过值得庆幸的是,这种改变并不是由一个实体控制的。

要澄清一下:虽然JavaScript本身(这个术语)是由Oracle所拥有的,但这门语言是要遵循ECMAScript的规范。而这些规范其实是由社区本身间接控制的,并由TC39委员会来监管和组织。

通过考虑所有不同的建议以发展语言,并不断运行直到语言足够成熟。之后,如果想保持兼容的话,就由例行程序来实现这些更新,而且此后浏览器之间还存在纷争。

作为一个开发者,必须努力保持在兼容性和标准的范围内,因为你更希望你的代码能跨浏览器兼容。现在情况已经不是这样了,所有的例行程序都在努力跟上ECMAScript的最新版本。

· 一个生机勃勃的生态系统。

这与第一点很像。有更多的前端框架可以尝试,没必要去学习所有的框架。每天仅NPM中分享的模块就数以百万计。

这给刚开始尝试该编程语言的人制造了很多麻烦,但同时也吸引了更多的人加入,不同的框架和模块最终都会达成同一件事,只是方式不同而已。而这些不同的方式有助于引起更多个人开发者的共鸣。毕竟,React、Vue和Angular都能帮助开发者创建同样的APP,只需要选择自己喜欢的那一款即可。

那么,综合几年前的情况以及它的发展历程,你如何看待JavaScript的未来?

这绝对是一个很难回答的问题,先看看笔者的想法。

 

近期变化

在过去的几年里,这门语言正在不断发展。如果你是JavaScript的新手,也许还没有注意到,从ECMAScript 第5版到第6版有一个质的飞跃,在未来的版本中应该也会发生许多改动。如果它继续保持现在的路径和发展速度的话,笔者认为不久之后它可能会这样……

作为目标语言的JavaScript

即使JavaScript拥有令人惊叹的社区,为开发者提供工具和框架做了大量工作,却仍然有很大一部分人没有理由地讨厌JavaScript。

是的,没看错,确实有人讨厌它,或者至少不喜欢它的大块头,认为自己可以把它做得更好。于是,就有了CoffeeScript和后来的Dart以及现在的TypeScript这样的项目。

这并不是坏事,事实上,这是一个非常好的机会,让JavaScript不仅可以直接被全世界的开发者广泛使用,还可以成为很多transpiler创造者的目标语言,试图给开发者提供其他选择。

本质上,这场运动将为JavaScript打开大门,通向一个不同的浩瀚宇宙。自从Node.js进入市场并流行以来,JavaScript不再是 “前端语言”,允许公司简化他们的技术堆栈去形成一个跨领域的单一语言。

想一想,如果你也能用Python或Ruby做到这一点,会发生什么?这并不是多么疯狂的想法,过去已经有项目试图实现它,我们可能只是需要更多的时间。

前端开发的问题(笔者认为这是唯一的问题)是,你需要学习JavaScript才能进行工作。这与后端世界完全相反。目前,浏览器只允许一种语言为王,那就是JavaScript,如果想要更多的语言,就必须把你的代码编译(或者说是移植)成JavaScript。

当然,还有WebAssembly,如果他们有更多的能力去访问其他领域,如DOM,它很可能会取代JavaScript。但现在它只能在一个非常狭窄的领域发挥作用:前端的大量计算。这是一个性能工具,而不是一个完全独立的前端开发环境。

 

演变的例子

JavaScript发展到现在的另一个方式是通过社区开发的框架看到社区的需求。如果你已经使用JavaScript有一段时间了,特别是从ECMAScript 5开始,你可能会记得lodash和underscore等库。

对项目来讲,这些库都是必要的,因为它们为语言增加了额外的功能,如map、some、find、reduce、get、set、merge等方法。虽然在最近的更新中,有些功能已经渗透进语言本身,但这些库依旧有存在的必要性。

比如ECMAScript 6,增加了很多数组方法,给编程算法带来了相当大的提升。可选链使得 get 方法被淘汰,或者说几乎被淘汰。传播操作符也几乎淘汰了merge 方法,而这个列表还在继续更新。一个功能越是流行,TC39委员会就越会尝试将其纳入到语言中。

另一个明显的例子是如何引入类。JavaScript试图在一个面向使用者的世界中保持初心,但它失败了。要么是因为没有足够的拥护者,要么是因为没有正确的文档化。但是有那么多的开发者试图强行在上层建立一个OOP模型,于是最终在上层添加了一个薄薄的OOP层。

起初这很浮于表面,但随着不久之后私有字段的加入,它正在慢慢演变成一个更成熟的模型。道阻且长,这只是语言演变的一个例子,说明这门语言是如何发展的,尽管违背了它的初衷,但开发者社区的力量在支持它。

最后一个新增的框架是Svelte框架,它试图将反应性的概念带入语言本身,不像其他框架,比如React,它反而试图为开发者提供工作方法,将JavaScript还没有准备好的概念强加给他们。

使用Svelte框架,可以编写这样的代码:

 

 

 

  1. <script> 
  2.          let count =0; 
  3.             functionhandleClick() { 
  4.              count +=1; 
  5.          } 
  6. </script> 
  7.              <buttonon:click={handleClick}> 
  8.          Clicked {count} {count ===1?'time':'times'
  9.     </button> 

有一个按钮,点它标签值就会更新。当然,目前这需要编译成实际的JavaScript,你估计需要多长时间才能将类似的例子吸收到合适的ECMAScript规范中?

责任编辑:华轩 来源: 读芯术
相关推荐

2021-02-25 15:47:08

IT

2020-11-03 21:11:39

IT

2018-03-05 16:07:38

智能摄像机

2015-11-12 11:01:11

数据中心数据中心发展

2020-12-26 16:59:10

鲲鹏

2019-01-07 05:01:37

2021-12-02 09:38:53

数字货币货币美元

2010-02-07 11:25:20

2013-07-12 12:37:53

云存储云计算

2015-06-29 11:11:33

谷歌眼镜未来可穿戴

2018-12-06 09:55:38

区块链数字货币互联网

2022-03-30 06:08:54

漏洞管理漏洞网络攻击

2022-04-15 19:48:49

上海疫情居家办公

2023-07-18 10:13:39

2020-02-04 10:31:30

互联网数据技术

2013-07-29 17:28:22

移动应用市场乱象移动开发

2020-11-13 14:52:34

Python 微软编程语言

2023-06-05 13:21:49

新华三

2021-01-08 05:28:34

互联网996

2012-03-05 09:13:37

NFS服务器网络文件系统
点赞
收藏

51CTO技术栈公众号