全文共2189字,预计学习时长7分钟
图源:Unsplash
“世界上只有两种语言:一种为人抱怨,一种无人使用。”
——C++语言之父BjarneStroustrup
并不是每个人都爱JavaScript。
时不时就会有人抱怨说JavaScript应由其他语言代替。
理由是:JavaScript有许多地方十分莫名其妙,早该修复了。
由于开发人员尚未对这些地方进行修复,于是人们想当然地以为JavaScript就是一种蹩脚的语言,根本无法修复。既然如此,就应该用其他语言把它换掉,最好是用吐槽者们最喜欢的语言。
但事实真的如此吗?
我们如何走到今天?
图源:Unsplash
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”的原则。
使用另一种语言并非解决之策
图源:Unsplash
理论上可以用一种新的语言取代JavaScript,不过在技术和逻辑处理上却十分棘手,且无休无止,这也不无可能。
但是这种语言也需要遵循“不破坏web”的原则,这基本上也把这种语言变成了一种只可添加的语言。可能已经可以预测到,人们对该种语言的热情将会下降,很快人们就会听到同样的呼声要求替换掉该种语言。
这个原则对JavaScript的约束,限制了其发展的方式,这也将适用于任何需要遵守该原则的语言。这就造就了今天的JavaScript,任何一种语言都无法取代它而不受该原则的约束。
在过去20多年里,JavaScript保持着前所未有的向后兼容性,这实际上是一巨大成就。web发展到今天,JavaScript功不可没,它该因此而受到喝彩,而不该遭到人们的痛恨。
从头开始?
图源:Unsplash
希望开发人员现在已经意识到,用另一种语言完全替代JavaScript是不太可能的。但如果真的不想好好学习JavaScript,还可以通过WebAssembly和其他十几种可编译成JavaScript的语言来学习。
笔者对TypeScript印象深刻,这是因为它可以将静态类型的特征添加到JavaScript和PureScript中,这就好比浏览器中的Haskell,可以进行成熟的函数式编程。
但是额外的编辑步骤一如既往,使学习变得更加复杂,那么问题来了:这样做是否值得。目前笔者建议使用TypeScript,因为它是JavaScript的一个超集,两者非常类似。TypeScript也在积极发展壮大,拥有一个庞大的社区。
需要花时间去学习它,也可以用这些时间好好学习JavaScript。它没那么高深莫测,不可学习,一旦掌握它的奇怪之处,就会发现它是一种非常强大且通用的语言。它并非完美无暇,但却是必不可少的。
话说回来,没有一种语言是完美的。
选择权在你。
留言 点赞 关注
我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”
(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)
转载:https://blog.csdn.net/duxinshuxiaobian/article/details/103681394