写点什么

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

评论 1 条评论

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

nacos注册中心之服务注册

急需上岸的小谢

7月月更

全新出品!阿里P5工程师~P8架构师晋升路线揭秘

程序员小毕

Java 程序员 面试 架构师 学习路线

jdbc自带MySQL连接池实践

FunTester

uni-app进阶之内嵌应用【day14】

恒山其若陋兮

7月月更

JAVA编程规范之控制语句

源字节1号

后端开发

B站挂了登上全网热搜!技术人员为你还原前因后果

雨果

4 个 JavaScript 最基础的问题 —— Eric Elliott

掘金安东尼

JavaScript 面试 前端 7月月更

Okaleido或杀出NFT重围,你看好它吗?

鳄鱼视界

易周金融 | 邮惠万家银行开业;微信公众号叫停四类金融营销宣传

易观分析

金融

声网传输层协议 AUT 的总结与展望丨Dev for Dev 专栏

声网

传输协议 Dev for Dev

不会吧!钉钉都下载了,你还不知道可以这样玩?

Jianmu

钉钉 持续集成 自动化运维 建木CI 通知

Google上网神器Ghelper

源字节1号

软件开发 小程序开发

云计算和大数据的关系以及区别详细讲解

行云管家

云计算 大大数据

SAP Fiori Launchpad 应用的两个实用技巧分享

汪子熙

JavaScript SAP SAP UI5 ui5 7月月更

还在羡慕其它平台有跨店满减,其实你也可以!

CRMEB

边无际 Shifu IoT 开源开发框架 助力物联网应用开发加速十倍

亚马逊云科技 (Amazon Web Services)

开源 Kubernetes 物联网 应用开发

向量化执行引擎框架 Gluten 宣布正式开源,并亮相 Spark 技术峰会

Kyligence

spark Gluten

模块七作业 - 王者荣耀商城异地多活架构设计

TPC藏宝计划质押系统开发(Dapp)

薇電13242772558

智能合约 dapp

短视频直播系统源码——如何优化满足用户需求?

开源直播系统源码

直播系统源码 开源源码 短视频直播系统源码

Verilog HDL

贾献华

7月月更

如何快速有效的定位应用抖动问题?| 龙蜥技术

OpenAnolis小助手

Linux 系统 龙蜥技术 SysAK 抖动

TiKV & TiFlash 加速复杂业务查询

TiDB 社区干货传送门

python小知识-rethinking python 生成器

AIWeker

Python python小知识 7月月更

Lite Actor:方舟Actor并发模型的轻量级优化

HarmonyOS开发者

HarmonyOS

软件研发落地实践,要从设计就开始

华为云开发者联盟

云计算 后端 开发

2022年浙江省等保备案流程指南

行云管家

等保 等保备案

查找——B-树

乔乔

7月月更

音视频开发进阶|第四讲:音频自动增益控制 AGC

ZEGO即构

音视频开发 AGC

MySQL数据库优化

五分钟学大数据

MySQL 7月月更

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