整理 | 屠敏
出品 | CSDN(ID:CSDNnews)
编程语言界,纷争不断,争论不休。
“让 JavaScript 退休!”
近日,美国程序员、企业家、数据交换格式 JSON 之父,同时也是众多 JavaScript 语言开发工具的创造者 Douglas Crockford 在接受软件开发商 Evrone 采访时,发表的一个观点引发轩然大波。
Douglas Crockford,图源:https://www.crockford.com/about.html
其表示,「我们今天对 JavaScript 能做最好的事就就是让它退役。二十多年前,我是为数不多的 JavaScript 倡导者之一。它将嵌套函数和动态对象拼凑在一起的做法非常出色。随后,我花了十年时间试图纠正它的缺陷。我在 ES5 上取得了小小的成功。但从那时起,人们一直对进一步扩展语言而不是让它变得更好有着强烈的兴趣。」
因此,在他看来,如今的 JavaScript 与其他“恐龙”语言一样,已经成为进步的障碍。大家应该专注于下一种语言如 E 语言,而并非要抱着 JavaScript 不放手。
拥有 1750 万开发者的 JavaScript
不过,据开发者调查分析公司 SlashData 数据显示,全球有近 1750 万的开发者在使用 JavaScript。JavaScript 当前不仅被世界上的绝大多数网站所使用,而且被世界主流浏览器如 Chrome、IE、Firefox、Safari、Opera 支持。
同时,据多项调查报告显示,JavaScript 已霸榜多年。其中,根据今年早些时候的 Stack Overflow 发布的《2022 Developer Survey》报告显示,2022 年是 JavaScript 连续第十年成为最常用的编程语言。超过 65% 的开发人员使用 JavaScript,远远领先于排名第二占比 48% 的 Python(忽略 HTML、CSS 和 sql,它们不是通用语言)。对于初学习编码的人员而言,他们最常用的语言是 HTML / CSS、JavaScript 和 Python,而专业开发者则是 JavaScript、HTML/CSS 和 sql。
作为一门主流语言,想要让大家不用 JavaScript 来开发似乎非常难。
冲进一线语言的背后蕴藏 27 年的积累
回看 JavaScript 能有今天的成就,其成长历程也可以用「传奇」二字来形容。
如果在 1995 年诞生之初,有人说 JavaScript 会成为 20 年后世界上最流行的语言之一,有开发者 Matthew MacDonald 评价道,“你要么有通灵术,要么是个疯子。”
因为当初 JavaScript 的原型开发只花费了 10 天的时间。此前,CSDN 也在《仅用 10 天设计的 JavaScript,凭什么成为程序员最受欢迎的编程语言?》一文中,分享过 JavaScript 的成长历程:
在 1995 年,网络浏览器先驱网景(netscape)公司意识到,他们需要为人们提供一个更简单的选择。那时候他们处境艰难,与微软的市场大战正在紧锣密鼓,即将与 Sun 微系统公司达成重大战略合作伙伴关系,时间紧迫。他们雇佣了布兰登·艾奇(Brendan Eich),要求他尽可能快地创造一种新的语言。他在 10 天内就完成了 JavaScript 的第一个版本,正好赶上了这个漂亮的浏览器——netscape 2。
netscape 2: JavaScript的首次登场
不过,Brendan Eich 真正想做的是构建一个像 Scheme 这样的学术编程语言的浏览器托管版本(网页脚本语言),但网景公司的愿景与此不同。他们想要一种看上去与 Java 足够相似,即使它的行为和 Java 不一样的语言。两个类似的名字:Java 和 JavaScript,导致了多年的混乱。
彼时,Brendan Eich 说道,“我是根据公司高层指令开发这门语言,让它看上去和 Java 足够相似,但又不要让它太大。它只是有那么点儿像这种愚蠢语言的弟弟,对吧? ”
如果说 JavaScript 之父 Brendan Eich 将这门语言取名为 JavaScript 是“碰瓷” Java,那么在此后的 26 年间,JavaScript 的成功发展,外媒 DevClass 将其归因主要有两重要素。
一是,Brendan Eich 的先见之明。JavaScript 设计得更加容易学习与上手,以及对许多语言中会出现错误的代码的容忍度,比如将字符串和数字进行比较并得到一个常识性的结果。虽然后来 Eich 本人将这个功能称之为“一个很大的遗憾,因为其打破了一个重要的数据属性”,但不影响 JavaScript 能够被用户接受。
二是,Google 决心让基于浏览器的应用程序与桌面应用程序竞争,并开发了 JavaScript 运行时 V8 引擎(2008 年)。同时,Google 还与 Mozilla 的 SpiderMonkey(世界上第一款 JavaScript 引擎)和苹果的 JavaScriptCore(Safari 浏览器的 JavaScript 引擎)一起为 JavaScript 开发了惊人的 JIT。这也极大地促进了 JavaScript 的广泛应用。
霸榜多年的 JavaScript 为何惨遭嫌弃?
就是这样一款较为实用且主流的编程语言,为何一步一步惨遭嫌弃?为此,Douglas Crockford 在采访中提到,随着能力的提高,JavaScript 变得越来越复杂,这与 Eich 的原始概念相差甚远。
这也如同今天的 jQuery 技术一样,“在开发 jQuery 时,文档对象模型是一团糟。有必要有一个层来纠正它的错误、局限性和 Bug,并提高可移植性。但从那时起,更好的标准被开发出来,浏览器制造商也终于被说服遵守这些标准,IE 浏览器也终于退役了。与此同时,jQuery 变得臃肿。”
简单来看,复杂性、功能不断膨胀,让不少开发者不得不弃用 JavaScript。“JavaScript 在短短几年内爆发式发展,是的,生态系统复杂得可怕。即使对全职 JS 开发者而言,这也是一种困扰,JavaScript 已经变得非常疯狂,我们都无法跟上它的脚步”,一位开发者在 HN 评论区说道。
也有人表示,“试图让一个普通的新开发者在现代 JS 环境中跟上开发速度是非常困难的。JavaScript 里面覆盖的东西太多了,就像一个大泥球。不过,作为一个大泥球,却又真的很难被取代掉。”
JavaScript 真的能被取而代之吗?
Douglas Crockford 在文章伊始提到取代 JavaScript 的 E(http://erights.org/),是他与 Mark Miller 共同开发而成,为安全计算而设计。这并非是一门新的编程语言,而是早于 1997 年就被开发出来,后来,Mark Miller 对 E 进行了重新设计,消除了 Java 许多不良的部分,主要目标的支持安全的分布式系统的开发。
除了 E 之外,不少网友也提出了几种可能在一定程度上替代 JavaScript 的语言或技术:
TypeScript。TypeScript 是由微软的 Anders Hejlsberg 发明的,它是 JavaScript 的严格语法超集,提供了可选的静态类型检查,可用于开发大型应用。“作为一名 Typescript 开发人员,我早就放弃了对 JavaScript 的使用......除非必须,否则我不会碰它(在这种情况下,我可能会转换它)”,一名开发者分享道。
WebAssembly。作为一种二进制格式,可以被包括 C、C++、C# 和 Rust 在内的语言作为目标,它的出现是另一个可能破坏 JavaScript 主导地位的创新。
“我希望用 Ruby 来取代 JavaScript,将其嵌入到浏览器中”;
Dart 可能是目前“替换” JavaScript 的最佳竞争者。Dart 的类型和空安全,内置对 JIT 和 AOT 编译的支持,出色的开发工具以及快速增长的生态系统,使其成为了一种可能性。
不过,虽然想让 JavaScript 早点退休,Douglas Crockford 指出,还是有些不太现实,“目前主要有两个困难。首先,我们还没有下一种语言,这种语言是一种基于最小能力的参与者语言,专门为安全的分布式编程而设计,不应再考虑其他任何事情。其次,我们需要所有的浏览器制造商都采用它,同时用精心设计的界面取代 DOM。祝你好运。”
参考链接:
https://evrone.com/douglas-crockford-interview
https://devclass.com/2022/08/04/retire_javascript_says-json-creator-douglas-crockford/
https://news.ycombinator.com/item?id=32367589