写点什么

JavaScript 应该分成两种语言吗?谷歌新提案引发了意见分歧

  • 2024-11-12
    北京
  • 本文字数:1293 字

    阅读完需:约 4 分钟

大小:601.11K时长:03:25
JavaScript 应该分成两种语言吗?谷歌新提案引发了意见分歧

一名谷歌工程师向官方标准化委员会提交了一份提案,该提案将 JavaScript 分为两种语言,一种是由运行时引擎实现的核心语言,另一种则是更强大的变体语言,依赖将其编译为核心语言的工具。

 

这份提案是在本月初的 Emca TC39 会议上提出的,TC39 是 Ecma International 的一个委员会,负责制定 JavaScript(正式名称为 ECMAScript)规范。

 

谷歌的一名软件工程师 Shu-yu Guo 发表了演讲,他专攻 JIT、VM、编译器和标准化,幻灯片由 Guo 与 Mozilla、苹果、Moddable 和索尼的合作者共同撰写。Moddable 是一家提供嵌入式编程开源 SDK 的公司,其中包括 XS JavaScript 引擎。

 

作者认为,新的语言特性对用户的影响大多是负面的。新特性“几乎总是”会降低安全性,使性能受到“中性到负面影响”,稳定性有时会更差,并且只有开发人员使用新特性时,应用程序功能才会得到改进。

 

他们说,JavaScript VM(虚拟机)“由于速度压力已经变得非常复杂”,这会损害安全性,并且当新特性未被采用时“感觉特别糟糕”。他们引用了一些例子,一个例子是 JavaScript 的 MDN web 参考,已经报告“引擎实现者正在调查是否删除此特性”,以及用于大数值的 BigInt。关于 BigInt,演示指出“用例从未得到实现”。

 

根据该提案,JavaScript 的基础技术应该很简单,因为安全漏洞和运行时的“复杂性成本”影响了数十亿次用例,而好处只有能真正利用这种复杂性的开发人员和应用程序才能享受到。

 

尽管涉及多个组织,但该计划似乎在某种程度上是由谷歌推动的,其中一张幻灯片包含免责声明:“这一可能的解决方案是谷歌的首选解决方案,不一定是其他实施者的首选解决方案”

JavaScript 开发人员主要根据新提案使用编译器,但一些开发人员希望摆脱这种模式

 

提议的解决方案不是回溯现有特性,或者撤回那些处于后期提案阶段的新特性,而是将未来的方法改为大多数新特性在工具中,而不是在 JavaScript 引擎中实现。引擎实现的语言称为“JS0”,而工具实现的语言称为“JSSugar”;这些名称是用于讨论起的,并非最终名称。

 

工具理念特别适用于 JavaScript,因为许多开发人员实际上是在使用 TypeScript 编写代码,并依赖 Babel、Webpack 或 TypeScript 编译器等编译器来输出 JavaScript。从开发人员的角度来看,JavaScript 是 JSSugar,但运行时引擎只需实现 JS0。这意味着各种工具应该更加符合一致的标准。

 

如果该提案被采纳,则意味着未来的语法特性将进入 JSSugar,而只有 API 和功能特性将进入 JS0。兼容引擎只需支持 JS0。支持 JSSugar 的负担将转移到工具实现者身上,而副作用是工具实现者需要更多地参与标准流程,并可能组建一个新的技术小组。

 

该提案已经引起争议。“请不要给当前一批 JavaScript 工具授予官方地位……许多 JavaScript 开发人员,包括我自己,都希望减少对这些工具的依赖,”其中一位开发人员说道。

 

人们普遍认为,优先考虑安全性、性能和稳定性是一件好事,但让 JavaScript 依赖中间工具的想法并不受欢迎。“RIP Vanilla JS”另一位开发人员说道。

 

原文链接:https://devclass.com/2024/10/22/should-javascript-be-split-into-two-languages-new-google-driven-proposal-divides-opinion/

2024-11-12 18:087316

评论 1 条评论

发布
用户头像
我赞成,其实现在的前端开发不就是这样么?现在还有哪些稍微大些的下难过吗项目没有编译打包之后发布的?
2024-11-19 08:30 · 浙江
回复
没有更多了
发现更多内容

Flutter&鸿蒙next 中使用 MobX 进行状态管理

淼.

Flutter & 鸿蒙 Next 中的 Drawer 导航栏

淼.

Flutter & 鸿蒙 Next 的 Sliver 实现自定义滚动效果

淼.

Flutter & 鸿蒙 Next 中的 Stack 和 Positioned 用法详解

淼.

Flutter 的 Widget 概述与常用 Widgets 与鸿蒙 Next 的对比

淼.

Flutter & 鸿蒙 Next 中的表单封装:提升开发效率与用户体验

淼.

加量不加价!华为云Flexus云数据库RDS精准解决中小企业上云难题

平平无奇爱好科技

云数据库安全吗?华为云Flexus云数据库RDS多重安全机制全面守护

平平无奇爱好科技

电能管理系统(源码+文档+讲解+演示)

深圳亥时科技

Flutter & 鸿蒙 Next 中使用 InheritedWidget 实现跨 Widget 传递状态

淼.

Flutter & 鸿蒙 Next 中的 setState 使用场景与最佳实践

淼.

开箱即用、稳定可靠!上云优选华为云Flexus云数据库RDS

平平无奇爱好科技

Flutter&鸿蒙next 状态管理框架对比分析

淼.

Flutter & 鸿蒙 Next 中的按钮封装:自定义样式与交互

淼.

基于arkTS开发鸿蒙app应用案例——通讯录案例

淼.

Flutter & 鸿蒙 Next 中的 Expanded 和 Flexible 使用技巧详解

淼.

鸿蒙 Next 选择 Flutter 开发跨平台应用的原因

淼.

小白也能看懂!华为云Flexus云数据库RDS有效降低上云门槛

平平无奇爱好科技

BOE(京东方)绵阳“零碳工厂”探访活动圆满落幕 树立显示产业绿色转型新标杆

爱极客侠

场景题:100G的文件里有很多id,用1G内存的机器排序,怎么做?

卷福同学

Java 面试 场景题

WebGL开发医学影像软件的技术难点

北京木奇移动技术有限公司

软件外包公司 数字孪生开发 webgl开发

使用 Redux 在 Flutter&鸿蒙next 中实现状态管理

淼.

专为中小企业打造!华为云Flexus云数据库RDS“零配置”开箱即用

平平无奇爱好科技

WebGL开发医学影像软件

北京木奇移动技术有限公司

软件外包公司 webgl开发 医学影像软件

仓储管理系统(源码+文档+讲解+演示)

深圳亥时科技

Flutter & 鸿蒙 Next 版本:自定义对话框与表单验证的动态反馈与错误处理

淼.

食品配送管理系统(源码+文档+讲解+演示)

深圳亥时科技

Flutter & 鸿蒙 Next 实现一个计算器应用

淼.

Flutter & 鸿蒙 Next 实现长按录音按钮及动画特效

淼.

4大优势,刷新体验!华为云Flexus云数据库RDS助力中小企业高效上云

平平无奇爱好科技

Flutter & 鸿蒙 Next 使用 BLoC 模式进行状态管理详解

淼.

JavaScript 应该分成两种语言吗?谷歌新提案引发了意见分歧_编程语言_Tim Anderson_InfoQ精选文章