写点什么

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

评论 2 条评论

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

Playwright和Selenium,深度解析两大测试框架的“王者之争”

测试人

软件测试 playwright selenium

坚守安全高底线,2025奇瑞汽车安全之夜盛大启幕

科技热闻

Blender 入门教程(一):模型创建

北桥苏

blender

Blender 入门教程(二):纹理绘制

北桥苏

建模 blender

就在下周丨中煤科工、山东临工 、中国农机院、中建科…共探离散元仿真技术新视界

Altair RapidMiner

仿真 CAE 离散元仿真 工程机械 颗粒仿真

CST软件如何截取部分封装或者PCB进行仿真

思茂信息

cst操作 电磁仿真 CST Studio Suite

微店平台中关键词获取商品详情数据采集实例演示

代码忍者

微店API

升级遇到坑?一文带你搞定DolphinScheduler 2.0到3.0升级

白鲸开源

开源 技术 干货 Apache DolphinScheduler 版本升级

Metasploit Framework 6.4.63 (macOS, Linux, Windows) - 开源渗透测试框架

sysin

Metasploit

5月15日,向量数据库:数据库与AI的交叉点”线上技术直播,文附详细演讲介绍!

NineData

AI Milvus 向量数据库 NineData 数据库与 AI 的交叉点

提高敏捷性,塑造财务规划的未来趋势

智达方通

企业管理 全面预算管理 财务管理

最新日程!Altair 区域技术交流会华东站:邀您共探仿真智能化实践

Altair RapidMiner

人工智能 AI 数字孪生 仿真 CAE

蒙纳宣布收购韩国知名字体公司DESIGN210,推动高质量字体全球化

财见

什么是im即时通讯?私有化im即时通讯软件优势是什么?

BeeWorks

即时通讯 IM 私有化部署 企业级应用

Metasploit Pro 4.22.7-2025051201 (Linux, Windows) - 专业渗透测试框架

sysin

Metasploit

AI题库APP的核心功能

北京木奇移动技术有限公司

AI技术 题库系统 软件外包公司

华为音乐携手库客音乐,共筑高品质古典音乐新生态

最新动态

你没见过的调度玩法!Zoom首次公开DolphinScheduler创新应用

白鲸开源

开源 Zoom 技术分享 Apache DolphinScheduler

AI题库APP的开发框架

北京木奇移动技术有限公司

题库系统 软件外包公司 AI题库

博云 AIOS 通过国家工信安全中心测试,产品完整性与功能性获权威认证

BoCloud博云

博云

腾讯云与宝德计算深化战略合作,打造融合创新生态标杆

极客天地

MCP教程:一文教你用 Trae 实现网页自动化测试

TRAE.ai

计算机 #程序员 Trae

DotNet 入门(二):项目运行

北桥苏

.net

AI题库APP的开发流程

北京木奇移动技术有限公司

AI技术 软件外包公司 AI题库

SpringAI更新:废弃tools方法、正式支持DeepSeek!

王磊

Apache DolphinScheduler社区答疑Star第三期评选结果公示

白鲸开源

大数据 开源 大数据任务调度 Apache DolphinScheduler

HyperWorks飞机复合材料结构分析(OptiStruct)

智造软件

仿真 建模 CAE hyperworks 复合材料

去中心化云算力重构3A云游戏,元宇宙游戏还会远吗?

PowerVerse

元宇宙 云游戏 去中心化云算力

链上交易平台 MyStonks 上线美股代币链上市场,首批 5000 万美元美股资产由富达托管

TechubNews

中小企业怎么低成本实现智能改造,数字化转型?

积木链小链

数字化转型 智能制造 中小企业

国内到美国的网络问题怎么解决?美国专线网络方案详解

Ogcloud

SD-WAN 美国专线网络 美国网络专线 美国专线 中美网络专线

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