如你所愿?如果有一天,JavaScript彻底消失了……

开发 前端
“世界上只有两种语言:一种为人抱怨,一种无人使用。”并不是每个人都爱JavaScript。时不时就会有人抱怨说JavaScript应由其他语言代替。

 “世界上只有两种语言:一种为人抱怨,一种无人使用。”

——C++语言之父BjarneStroustrup 

[[286719]]

并不是每个人都爱JavaScript。

时不时就会有人抱怨说JavaScript应由其他语言代替。

理由是:JavaScript有许多地方十分莫名其妙,早该修复了。

由于开发人员尚未对这些地方进行修复,于是人们想当然地以为JavaScript就是一种蹩脚的语言,根本无法修复。既然如此,就应该用其他语言把它换掉,最好是用吐槽者们最喜欢的语言。

但事实真的如此吗?

我们如何走到今天?

JavaScript很难称得上是一种完美的语言,因为它确实有些地方很奇怪。仅仅十日之内开发者就完成了JavaScript的开发设计并使其更像Java,那么便不得不承受这一后果。

但是没有一种语言是完美的,自ES6以来,JavaScript已经取得了巨大进步,而且还在持续改进。它从一种仅用于web页面上制作动画的“玩具语言”,现已演变为一种严格意义上的编程语言,现如今JavaScript运用于各类大型且复杂的web应用程序中。

JavaScript几乎无处不在,成为目前世界上使用最多的编程语言。

那么,为什么有些开发人员还在吵着要换掉它?

了解这门语言

人们对JavaScript的诸多吐槽源于他们的无知,他们不了解这门语言,也不愿意真正用心去学习这门语言。

this关键字、原型继承和不变性缺乏是JavaScript中的三大混淆源。如果开发人员已经习惯了另一种语言,笔者能理解。同样的,笔者也能理解由此造成的困惑和愤怒。

但这些都并非不可逾越。只要愿意学,JavaScript也没那么高深莫测。

开发人员以为用另一种语言换掉JavaScript,便能一劳永逸,虽然这种想法可以理解,但这既不现实,也非真正的解决之策。

“不破坏web”原则

JavaScript、HTML和CSS的首要设计原则是新特征可能永远不会破坏现有的网站。

这实质上是将JavaScript变成了一种只可添加的编程语言:只要不破坏现有的网站,就可以添加特征,而新添加的特征可能永远不会改变或者移除现有的特征。

这一原则能够确保现有网站永不崩溃,即便这些网站创建于几十年前,第39号技术专家委员会(TC39) 也会不遗余力坚持这一原则。

这固然是件好事,但也确实给JavaScript增添了负担,因为特征只能添加到其中而不能更改。

因此,虽然JavaScript中令人混淆的方面在理论上是可以修复的,比如this关键字,但可能会破坏现有的网站,而这些网站在修复之前是可以完美运行的。显然这是不可接受的,因为它违反了“不破坏web”的原则。

使用另一种语言并非解决之策

理论上可以用一种新的语言取代JavaScript,不过在技术和逻辑处理上却十分棘手,且无休无止,这也不无可能。

但是这种语言也需要遵循“不破坏web”的原则,这基本上也把这种语言变成了一种只可添加的语言。可能已经可以预测到,人们对该种语言的热情将会下降,很快人们就会听到同样的呼声要求替换掉该种语言。

这个原则对JavaScript的约束,限制了其发展的方式,这也将适用于任何需要遵守该原则的语言。这就造就了今天的JavaScript,任何一种语言都无法取代它而不受该原则的约束。

在过去20多年里,JavaScript保持着前所未有的向后兼容性,这实际上是一巨大成就。web发展到今天,JavaScript功不可没,它该因此而受到喝彩,而不该遭到人们的痛恨。

从头开始? 

希望开发人员现在已经意识到,用另一种语言完全替代JavaScript是不太可能的。但如果真的不想好好学习JavaScript,还可以通过WebAssembly和其他十几种可编译成JavaScript的语言来学习。

笔者对TypeScript印象深刻,这是因为它可以将静态类型的特征添加到JavaScript和PureScript中,这就好比浏览器中的Haskell,可以进行成熟的函数式编程。

但是额外的编辑步骤一如既往,使学习变得更加复杂,那么问题来了:这样做是否值得。目前笔者建议使用TypeScript,因为它是JavaScript的一个超集,两者非常类似。TypeScript也在积极发展壮大,拥有一个庞大的社区。

需要花时间去学习它,也可以用这些时间好好学习JavaScript。它没那么高深莫测,不可学习,一旦掌握它的奇怪之处,就会发现它是一种非常强大且通用的语言。它并非完美无暇,但却是必不可少的。

话说回来,没有一种语言是完美的。

选择权在你。

 

责任编辑:华轩 来源: 今日头条
相关推荐

2022-06-09 09:27:16

前端行业生存

2013-10-15 10:02:24

IEIE10IE11

2016-05-06 10:02:33

CSSJavaScript工具

2019-12-26 10:47:55

程序员Google电脑

2023-09-25 10:24:47

CIOIT团队

2012-10-18 13:26:53

Wi-Fi以太网FDDI

2019-12-10 09:08:29

分布式开源RocketMQ

2018-10-22 17:52:28

GitHub代码开发者

2017-11-02 15:04:15

2018-12-09 14:55:07

区块链加密货币比特币

2021-04-01 07:44:45

排名调整Java Java基础

2019-04-28 09:56:15

程序员互联网脱发

2021-03-29 08:20:51

入职后端官场

2020-05-11 08:36:21

程序员工作生活

2018-03-19 10:30:17

程序员永久断网

2022-12-12 16:37:31

云迁移云计算IaaS

2017-11-09 19:40:40

2012-08-10 22:44:52

ArchSummit

2015-11-18 10:44:12

智能

2020-02-13 10:54:29

源码模式Mybatis
点赞
收藏

51CTO技术栈公众号