AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

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

评论 2 条评论

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

缓解过拟合方法

linux大本营

winDbg 提示 Unable to verify checksum for IOCommModel.exe

linux大本营

网络安全 数字证书

/sbin/kexec参数说明

linux大本营

Linux 镜像 Linux内核

stl中,cbegin,cend,crbegin,crend区别以及用途

linux大本营

容器 stl C++ STL

【Python实战】XPath采集数据

BROKEN

三周年连更

AI大模型加速RPAxAI时代到来,谁会是RPA领域的杀手级应用?

王吉伟频道

RPA AI大模型 ChatGPT RPAxAI 企业级RPA

【Linux】iptables之防火墙概述及规则匹配+实例(1)

A-刘晨阳

Linux iptables 防火墙规则 三周年连更

delphi中TServerSocker使用stThreadBlocking模式的例子

linux大本营

C++grpc 服务器接收到请求后如何处理

linux大本营

gRPC 序列化 protobuf C++

uniapp配置基本的tabbar和动态修改内容

格斗家不爱在外太空沉思

uni-app 三周年连更

ChatGPT安全受质疑 网信办发布生成式人工智能服务管理办法意见稿

郑州埃文科技

SpringBoot之Tomcat与Undertow容器性能对比 | 超级详细,建议收藏

bug菌

tomcat 三周年连更 Undertow

基于Java+Dubbo设计的智能公交查询系统

DS小龙哥

三周年连更

火山引擎云原生数据仓库ByteHouse技术白皮书V1.0 (Ⅴ)

字节跳动数据平台

数据仓库 云原生 白皮书 企业号 4 月 PK 榜

@PathVariable 和 @RequestParam 的区别

linux大本营

创新引领・数创未来 | 数据流通与治理专题论坛交流会顺利召开

郑州埃文科技

Gradle工程适配为Hvigor工程

坚果

OpenHarmony 三周年连更

面试必考: 手撕代码系列(一)

Immerse

JavaScript 手写代码 前端面试 手撕代码 超全前端面试题

koal_dm8_crypto.so.1.0.9.x86.b6f523 怎么安装

linux大本营

Linux linux文件

ubuntu安装kernel-debuginfo

linux大本营

强大的音频分析编辑工具:Amadeus Pro 汉化激活版

真大的脸盆

Mac Mac 软件 音频编辑 音频处理工具 编辑音频

ES开发指南|如何快速上手ElasticSearch

浅羽技术

全文检索 搜索 Lucence Elastic Search 三周年连更

leaflet加载聚合

linux大本营

创建和管理复杂的项目:OmniPlan Pro 4 mac中文版

真大的脸盆

Mac Mac 软件 项目管理工具 项目流程软件

想转行计算机但不知道转哪个方面比较好?

linux大本营

软件开发 计算机

linux tee命令

linux大本营

linux命令 TEE

linux crash怎么分析

linux大本营

Crash Linux内核

Go 语言中的 Slice 陷阱:如何避免常见错误

陈明勇

Go golang 切片 三周年连更 切片陷阱

什么叫函数的注册,用c++举个例子

linux大本营

c++ 函数

领先企业的数智化进入2.0阶段,需要升级数智底座

用友BIP

arm m4 xpsr每一位的作用

linux大本营

寄存器 arm

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