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

发表于:2019-12-25 09:22

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:读芯术

#
java
#
Java
  “世界上只有两种语言:一种为人抱怨,一种无人使用。”
  ——C++语言之父BjarneStroustrup
  并不是每个人都爱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。它没那么高深莫测,不可学习,一旦掌握它的奇怪之处,就会发现它是一种非常强大且通用的语言。它并非完美无暇,但却是必不可少的。
  话说回来,没有一种语言是完美的。
  选择权在你。

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号