AICon日程100%就绪,9折倒计时最后一周 了解详情
写点什么

JSON 之父:JavaScript 已非常复杂,我们能做的最好的事情就是让它退役

冬雨、闫园园

  • 2022-08-08
  • 本文字数:2538 字

    阅读完需:约 8 分钟

JSON之父:JavaScript已非常复杂,我们能做的最好的事情就是让它退役

编译 | 冬雨、闫园园

 

毫无疑问,提起 JavaScript,其仍是当下最受欢迎的编程语言,全球有将近 1400 万开发者在使用。然而 JSON ( JavaScript 对象表示法)的创建者 Douglas Crockford 却在近日提出一个不同的看法:JavaScript 已经成为了发展的障碍。

 

Crockford 是世界著名前端大师、JSON 的创立者。被 JavaScript 之父 Brendan Eich 称为 JavaScript 的大宗师(Yoda)。除了 JSON,他还是 JSLint、JSMin 和 ADSafe 的创造者,也是名著《JavaScript: The Good Parts》的作者。

 

让 JavaScript 退役?

 

上个月的一次采访中,Crockford 表达了自己的观点:

 

“我们现在能做的最好的事情就是让 JavaScript 退役。20 年前,我是少数几个 JavaScript 的倡导者之一。它将内嵌函数和动态对象拼凑在一起非常巧妙。我花了十年的时间试图修正它的缺陷。我在 ES5 上取得了小小的成功。但从那以后,人们越来越执着于进一步膨胀该语言,而不是改进它。因此,JavaScript 就像其他恐龙级语言一样,成为了发展的障碍。我们应该专注于下一种语言,它应该更像是 E,而不是 JavaScript。”

 

根据大多数调查统计,JavaScript 是世界上最受欢迎的编程语言


根据 StackOverflow 今年的调查,目前有超过 65% 的开发者在使用 JavaScript,已经远远超过了排名第二的 Python 的 48% (忽略了 HTML、CSS 和 SQL 这些非常规语言)。考虑到它的起源,这已经是一份非常难以置信的成就。

 

Brendan Eich 在 1995 年为网景公司发明了这门语言,据说只用了 10 天。2018 年,Eich在 dot.JS 大会上说:“5 月,我苦干了 10 天,睡得很少。”2012 年,Eich告诉Computer 的 Charles Severance:“我开始做…一种 HTML 的编程语言,网页设计师和程序员可以使用,直接嵌入到网页中…不像 Java 那样是一种专业语言,你可以运行带有类型声明的实际代码,你必须以编译的方式编写。”他补充说,“这个名字完全是随便取的。在语法上,它与 Java 的关系并不大,而与共同的祖先 C 语言关系更大些。”

 

Eich 还称这项工作是“一项紧急工作”,但他也说,“我知道会有错误,会有些缺失,所以我把它做成了一种具有可塑性的语言。这使得网页开发人员能够把它变成他们想要的样子。”

 

为什么 JavaScript 会如此成功?

 

那么由 Eich 10 天匆忙赶出来的一门语言为何能流行至今呢?

 

其中的原因有很多,第一个原因就是 Eich 的远见、易于学习和容忍在许多语言中可能出错的代码,比如将字符串与数字进行比较并得到一个常识性的结果——尽管 Eich 后来称这是“一个很大的遗憾,因为它破坏了一个重要的数学特征”。

 

另一个重要原因是谷歌决心让基于浏览器的应用程序与桌面竞争,这给世界带来了 V8 引擎(2008),再加上 Mozilla 的 SpiderMonkey 和苹果的 JavaScript Core,使语言具有惊人的 JIT 编译性能。2009 年,Ryan Dahl 提出了 Node.js,使 V8 能够在浏览器之外运行。Dahl 考虑的是服务器应用程序,但今天在大多数 Web 应用程序的开发过程中 Node.js 和 NPM(节点包管理器)也已经必不可少。

 

得益于上述原因,JavaScript 一路发展至今。不过 Crockford 指出,随着性能的提高,JavaScript 已经变得非常复杂,今天一个典型的应用程序包括使用 webpack、Rollup 或其他绑定器的构建过程,已经与 Eich 最初的概念相去甚远。

 

此外,许多 Web 开发人员不编写 JavaScript,而是编写 TypeScript,然后编译成 JavaScript。TypeScript 是由微软的 Anders Hejlsberg 发明的,它的出现是由于 JavaScript 的可延展性和缺乏类型安全。在上面提到的调查中,TypeScript 排名第三,这证明 JavaScript 也并不是受到了所有人的欢迎;WebAssembly 则是一种二进制格式,可以针对于包括 C、C++、C#和 Rust 在内的多种语言,它的出现是可能削弱 JavaScript 主导地位的另一项创新。

 

“JavaScript 在短短几年内迅速流行起来,是的,这个生态系统非常复杂。这一直以来都是个大笑话,即便在全职 JS 开发者中也显得如此疯狂,我们中没人能跟上。”一名开发者在 Hacker News 的讨论中谈到。

 

JavaScript 还在不断发展着许多新特性,我们可以在此跟踪其进展,尽管兼容性的要求意味着一些缺陷无法被纠正,但从另一方面讲,特性膨胀是一个持续存在的风险。

 

Crockford 选择的替代 JavaScript 的 E 是一个例外。由 Mark Miller、Crockford 和其他人创建的 E 是一种面向对象的语言,用于安全计算。用 Crockford 的话说,它“消除了 Java 中许多不好的部分”。

 

Crockford 还指出,JavaScript 很难改变,特别是因为它是所有浏览器都支持的 DOM(文档对象模型)操作语言。当被问及有什么可以取代它时,Crockford 谈道:“有两个困难。第一,我们还没有下一种语言。它需要是一种专门为安全分布式编程而设计、基于最低限度能力的参与者语言。其次,我们需要所有的浏览器制造商都采用它,同时用一个设计良好的界面取代 DOM。”

 

JavaScript 演变历史

 

行至现在,尽管 JavaScript 会面临诸多争议,但回顾演进过程,这门语言其实也是在曲折中不断前进。

 

1996 年,Netscape 将 JavaScript 提交至 ECMA International(European Computer Manufacturers Association, 一个欧洲标准化组织)。

 

1997 年,ECMAScript 标准第一版发布。ECMA 组织控制的标准控制着 JavaScript 语言的各个方面,帮助确保不同 JavaScript 版本的相互兼容性,因此 JavaScript 有时也称为 ECMAScript。

 

1999 年, ECMAScript 第三版的形式进行了更新,从那之后这个标准没有发生过大的改动。由于委员会在语言特性的讨论上发生分歧,ECMAScript 第四版遭遇“难产”并被废除,但随后于 2009 年 12 月发布的 ECMAScript 第五版引入了第四版草案加入的许多特性。

 

2015 年,第六版标准(ES6)发布,又称为 ES2015。 ES6 语法引入了大量的语法特性,很大程度上改善了最初 JavaScript 设计上的很多缺陷,让 JavaScript 这个语言获得了一次现代化的重生。自此 JavaScript 慢慢从一个被普遍鄙视、嘲笑的粗糙语言变成了一个颇有竞争力的语言。

 

之后,ES 的标准更新开始加快了脚步,每年都有一个版本发布,只不过每次发布,加入的新特性比较少。今年 6 月份,第 123 届 Ecma 大会批准了 ECMAScript 2022 语言规范,这也是 ECMAScript 的第十三版。

 

参考链接:

 

https://devclass.com/2022/08/04/retire_javascript_says-json-creator-douglas-crockford

 

https://www.lema.fun/classroom/d0b79173cc0dd7cc/d0cd878f14cb419c

2022-08-08 14:359143

评论 2 条评论

发布
用户头像
支持……
个球。
JS已经不是DC时代的那个JS了。如果说TS出现之前JS确实难堪重任,在现在有TS和一系列工具链帮助之下JS/TS并不比其他主流语言差到哪去。
2022-08-28 02:50 · 美国
回复
用户头像
支持,跟 Java 没半毛钱关系的一门语言,居然活了这么久。
2022-08-10 11:12 · 广东
回复
没有更多了
发现更多内容

和鲸数据科学专家平台正式成立,凝聚专家资源推进产业数字化升级

ModelWhale

人工智能 数据科学 专家平台 专家资源

重塑未来的1课:组装式交付新引擎——智能化低代码平台

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

华为云Astro低代码平台关键能力技术浅析

华为云PaaS服务小智

云计算 软件开发 低代码 华为云

什么是HTML5?HTML5的含义、元素和好处

互联网工科生

html html5

初识滴滴交易策略之一:交易市场

滴滴技术

算法 滴滴技术

极光笔记 | 解锁Web推送的潜力:提升网站收入

极光JIGUANG

网站 营销 消息推送 推送

TDengine 3.0 性能如何?教你一键复现 IoT 场景 TSBS 测试结果

爱倒腾的程序员

华为云命令行工具服务KooCLI助力一键管理云资源

华为云PaaS服务小智

云计算 软件开发 华为云

一次说清楚:CAE软件可以做什么?

智造软件

CAE 仿真软件 有限元仿真技术 有限元分析 CAE软件

PCB防静电设计的必要性

华秋PCB

工具 PCB PCB设计 电压 防静电

软件测试/测试开发丨Mac Appium环境搭建

测试人

程序员 软件测试 Mac appium

盘古大模型加持,华为云开天aPaaS加速使能千行百业应用创新

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

基于Go语言的滴滴DevOps重塑之路

滴滴技术

DevOps 滴滴技术 #go

华为云5大开源项目发布与更新,助力开发者实现应用创新

华为云开发者联盟

开源 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

30多款大模型亮相,现阶段厂商比客户更需要大模型 | WAIC2023探展

TE智库

人工智能 大模型 WAIC

一文带你上手Servlet

EquatorCoco

Java 前端

低代码在边缘计算工业软件中的应用

力软低代码开发平台

智能制造:低代码开发平台推动数智时代的巨变

EquatorCoco

人工智能 低代码 智能制造 数智化

用友新一代票据云,实现企业票据“支付找零”

用友BIP

全球司库

入选中国数据智能领域 IDC 创新者,柏睿数据创新实力再获肯定

新消费日报

软件测试丨Docker环境安装配置(Mac、Windows、Ubuntu)

测试人

Docker ubuntu 软件测试 Mac windows

苹果APP安装包ipa如何安装在手机上

ios

Hybrid Embedding:蚂蚁集团万亿参数稀疏 CTR 模型解决方案

AI Infra

AI 开发者 海量存储 AI大模型 降本增效

云原生技术分享篇丨浅析Istio流量管理

inBuilder低代码平台

云原生

晴数智慧张晴晴博士当选开放群岛开源社区「首席数据科学家」

Geek_2d6073

2023年值得学习的六种小众编程语言

互联网工科生

编程语言 开发语言

浅析华为云Astro的5大关键能力技术

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

如果小程序越来越多,是不是会直接代替App?

Onegun

小程序 小程序容器

JSON之父:JavaScript已非常复杂,我们能做的最好的事情就是让它退役_大前端_InfoQ精选文章