写点什么

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:087428

评论 1 条评论

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

零门槛接入DeepSeek!无影云、ToDesk、青椒云的隐藏玩法大揭秘

小喵子

云电脑 ToDesk云电脑 云电竞 知识库管理 DeepSeek

Active Directory审核的常见误区(2)

运维有小邓

IT 运维 AD域管理

AI 破圈,你知道运维才是关键的稳压器吗?

嘉为蓝鲸

AIOPS 智能运维 DeepSeek

联想AI服务器首次实现低于1TB本地部署DeepSeek满血大模型

新消费日报

企业级智能办公演进:基于低代码平台的流程自动化与系统集成架构设计

不在线第一只蜗牛

财务领导者应如何转型以提高企业运营的效率

智达方通

企业管理 财务管理 财务规划

直击 MWC 2025:英特尔至强 6 处理器助力网络基础设施新成果

E科讯

分布式锁—原理算法和使用建议

不在线第一只蜗牛

分布式 算法

YashanDB安装前服务器准备

YashanDB

数据库 yashandb

借 AI 之力,在 DevOps 中实现智能排错与高效开发

嘉为蓝鲸

DevOps 智能化运维 DeepSeek

团队信息沟通不畅?用这个功能试试!

axe

项目管理 项目管理工具 办公软件 项目协作 办公工具

接入语音盒子,广东成人玩偶公司走红;AI 语音访谈员 Chikka 登顶 PH 日榜:AI 语音收集反馈,即时生成洞察报告丨日报

RTE开发者社区

直播预告|TinyEngine低代码引擎v2.2版本特性介绍

OpenTiny社区

前端开发 低代码 开源项目 OpenTiny

不重视数据质量,企业要出大问题!

白鲸开源

人工智能 大数据 WhaleStudio 数据准备

SD-WAN技术是怎样提高TikTok海外直播流畅度的?

Ogcloud

SD-WAN SD-WAN组网 tiktok直播网络 tiktok直播加速 sd-wan专线

Deepseek R1 的技术揭秘与低成本复现,中科院计算所工程师『致 Great』的分享实录已整理!

ModelWhale

人工智能 大数据 大语言模型 DeepSeeek

人工智能丨FlashMLA开源:解锁AI技术新高度,赋能软件测试行业创新

测试人

人工智能

理解Rust引用及其生命周期标识(上)

不在线第一只蜗牛

算法 rust

聚焦存储:设备到数据的监控实践

嘉为蓝鲸

智能运维 weops IT 运维

轻帆云(ITSM)IT共享服务中心解决方案,引领企业高效转型

云智慧AIOps社区

ITSM ITSM软件 工单管理 工单系统

SD-WAN实践案例解析:跨国企业异地组网方案

Ogcloud

SD-WAN 企业组网 企业网络 SD-WAN组网 sd-wan专线

YashanDB安装前依赖项准备

YashanDB

数据库 yashandb

Kubernetes Secrets 加密实践

俞凡

Kubernetes 云原生 安全

麦杰openPlant实时数据库入选工信部先进适用技术名单,赋能工业数字化!

麦杰研究院

淘宝天猫API实战指南:1分钟抓取商品详情+精准搜索关键词

代码忍者

淘宝API接口

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