写点什么

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

评论 1 条评论

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

性能测试技术笔记(二):如何准备测试环境和数据

老张

性能测试

再快一点?动态内容如何加速

蔡农曰

程序员 互联网

零基础怎么培训学习前端开发技术

小谷哥

web前端技术培训后怎么不断提高自己

小谷哥

创业邦2022中国未来独角兽100强揭晓:总估值超3000亿元,累计融资总额达685亿元;红杉中国、顺为资本成年度最佳捕手

创业邦

华为云CDN,多场景网络加速服务,为企业发展强势赋能

i生活i科技

CDN

为什么说IO密集型业务,线程数是CPU数的2倍?

Java永远的神

程序员 程序人生 后端 cpu io

平安银行携手StarRocks荣获2022金融业数字化转型突出贡献奖

StarRocks

数据库 金融

架构训练营模块三作业

gigifrog

架构训练营

网络拥堵?上网体验差,还不赶紧看看华为云CDN!

i生活i科技

CDN

RelativeLayout(相对布局)

芯动大师

Android Studio padding margin

如何在15分钟内,度量 DORA 指标?

Apache Devlake

Apache 大数据 开源 研发效能 DOAR

云存储生态构建的技术基因和最佳实践

云布道师

阿里云 云存储

华为云弹性负载均衡服务,赋能现代企业加速发展

i生活i科技

ELB

市面上到底有没有免费的云渲染平台?

Renderbus瑞云渲染农场

云渲染 云渲染平台 免费云渲染平台

基于 EventBridge API Destination 构建 SaaS 集成实践方案

阿里巴巴云原生

阿里云 云原生 EventBridge

大数据培训和自学哪个适合零基础

小谷哥

java程序员培训学习后好找工作

小谷哥

下载速度不尽人意,华为云CDN来助力,尽享高速体验!

i生活i科技

CDN

SpringBoot 自动装配原理,一文掌握!

程序员小毕

源码 程序员 面试 springboot 自动装配

一些Web安全漏洞

穿过生命散发芬芳

HTTP 1月月更

模块四作业

张贺

架构训练营

flutter系列之:flutter中listview的高级用法

程序那些事

flutter 程序那些事

爱奇艺:基于龙蜥与 Koordinator 在离线混部的实践解析 | 龙蜥技术

阿里巴巴云原生

阿里云 云原生 Koordinator

云原生技术在离线交付场景中的实践

北京好雨科技有限公司

Kubernetes 云原生交付 离线交付

阿里云 ACK One 多集群管理再升级:GitOps 多集群持续集成,统一报警管理

阿里巴巴云原生

阿里云 云原生 容器服务

2023-01-03:超过5名学生的课。编写一个SQL查询来报告 至少有5个学生 的所有班级,返回结果不限顺序。请问sql语句如何写? +---------+ | class | +-----

福大大架构师每日一题

数据库 sql 福大大

怎么入门大数据开发技术

小谷哥

下载速度慢怎么办?使用华为云CDN,让网速更快更稳

i生活i科技

CDN

外包学生管理系统详细架构设计文档

Geek_7d539e

Wallys/QCN9074 WiFi 6E Card OpenWRT, IPQ6010,802.11ax/Support:QUECTEL RM500Q-GL/QCN9074 11ax 4x4 6G M.2

wallysmeng

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