“我们今天可以对JavaScript做的最好的事情就是让它退役!”
大神总是能说出让人印象深刻的话,上面这句话来自JSON和JSLint的作者Douglas Crockford。
Douglas还写过两本非常知名的书《How JavaScript Works》和《JavaScript语言精粹》,前端的同学应该读过。
照理说,这么一位JavaScript领域的领军人物应该是JS的铁杆,但是他却说:
“20年前,我是JavaScript的少数狂热支持者,嵌套函数和动态对象的组合非常出色,我花了10年时间试图纠正他的缺陷,在ES5上取得了小小的成功。
但是从那时起,人们对进一步扩展JS产生了浓厚的兴趣,而不是使其变得更好。
所以JavaScript和其他恐龙语言一样,已经成为进步的阻碍,我们应该关注下一门语言,它看起来应该更像E而不是JavaScript。”
JavaScript各种各样的问题大家应该深有体会了,但是今年Stackoverflow的调查显示,使用JavaScript的程序员高达65%,远超其他语言,雄踞第一。
可能很多人并不知道,JavaScript是Brendan Eich仅仅花了10天突击出的语言,可以说是几门语言的混合体:
1.借鉴C的语法
2.借鉴Java的数据类型
3.借鉴Scheme语言,将函数提升到"第一等公民"(first class)的地位;
4.借鉴Self语言,使用基于原型(prototype)的继承机制。
所以Douglas Crockford说JavaScript是一个披着C语言外衣的Lisp。
Brendan自己也承认,这是一项匆忙的工作,设计有错误,有缺陷,尤其是名称,完全是谎言,和Java一点关系都没有。
JavaScript为什么能成长为前端之王呢?
在JavaScript发展过程中其实遇到过很多挑战:
VBScript:在90年代,这是第一个同时支撑服务器端编程和浏览器端编程的语言,可以在服务器端写ASP网页,在浏览器端弄动态效果,微软阵营的程序员很喜欢。
但是它属于微软,只能跑在Windows和IE中,没有其他浏览器支持。
而JavaScript早在1996年就开始标准化,1997年ECMAScript第一版就发布了,标准化后浏览器厂商抛弃了后顾之忧,放心使用。
JScript :在IE和网景大战时,微软对 Navigator解释器进行了逆向工程以创建自己的解释器,称为JScript。
随着IE击败网景,市场占有率达到95%,JScript也达到巅峰。
但是微软并没有把JScript给标准化,随后IE不思进取,故步自封,被Firefox, Chrome等超越,JScript也变得无人问津。
Sun的Applet和微软的ActiveX:它们俩由于安全问题、安装部署问题、用户体验问题一直没能起飞。
Macromedia的Flash :早期极其火爆,技术漏洞多,不安全,无法支持移动设备,最终败给了JS+HTML5
微软的Silverlight:本来是要和Flash竞争的,后来Flash都不行了,所以....
除了技术缺陷,这些挑战者技术都是厂商锁定的,都需要学习一门新语言,Applet、Flash、Sliverlight还需要在浏览器中安装个“插件”才能运行,这就太不方便了!
反观JavaScript,一开始就标准化,被所有浏览器支持。虽然是披着C语言外衣的Lisp,但是它的C语言外衣极其简单,任何程序员都可以轻松写几行JavaScript,在浏览器中搞点儿动态效果(虽然代码质量可能不咋地)。
2008年,Google给JavaScript添的那把柴火非常关键。
GMail , GMap等复杂Web应用的不断成功,让Google看到了Web应用和桌面竞争的可能性,它开发了V8引擎,惊人地提升了JavaScript的执行速度。
2009 年,Ryan Dahl 推出了 Node.js,使 V8 能够在浏览器之外运行,JavaScript一下子把领地拓展到了后端领域。
JavaScript自身似乎并不努力,但是各个厂商必须要寻找一个公共的、不会被某家控制的浏览器端编程语言,找来找去,也就是标准化的JavaScript能满足要求了。
JavaScript真的应该退役了吗?
精通JavaScript的大神虽然都发出了呼吁,但是JavaScript无法退役,它还要在多条道路上继续狂奔。
在软件业,最厉害的就是生态系统,这玩意儿一旦建立,很难攻破。
JavaScript经过20多年的发展,生态已经极其完善了。
强如微软的TypeScript,也只能把自己最后编译成JavaScript来执行,而不能另起炉灶。
浏览器厂商之间也会互相竞争,阻挠某一方发明的更好的新语言。
Stackoverflow联合创始人Jeff Atwood曾经预言:任何可以用 JavaScript 来写的应用,最终都将用 JavaScript 来写。
在某种程度上,他确实是对的,JavaScript现在可以写网页,写App,写小程序,写后端,写桌面程序,甚至IoT应用。
我们都知道JavaScript还很丑陋,但是没办法,只要浏览器存在,它就会存在,直到下一次重大技术变革的发生。
参考资料:
https://www.reddit.com/r/programming/comments/whipmk/the_best_thing_we_can_do_today_to_javascript_is/
https://devclass.com/2022/08/04/retire_javascript_says-json-creator-douglas-crockford/
https://evrone.com/douglas-crockford-interview