JavaScript成功背后的四个关键人物!

开发 前端
在90年代已经出现了令人惊叹的虚拟世界,你可以拥有一个Avartar(化身),在3D世界中到处走走,还可以瞬间从一个地方被传送到另外一个地方,在里边和其他人交谈,买卖物品,建造东西。

JavaScript能如此成功,至少有四位关键人物:

1. JavaScript作者Brendan Eich

2. JSLint,JSON作者Douglas Crockford

3. jQuery作者John Resig 

4. Node.js作者Ryan Dahl。

Brendan Eich以及JavaScript的发明过程大家已经非常熟悉了,我们从Douglas Crockford这位JS的二号人物开始说起。

图片图片

1、结盟

上世纪90年代,微软霸权笼罩着整个世界。

这时候,两个挑战者出现了,一个是IT巨头Sun,另外一个是IT新星Netscape。

Sun认为:Java程序只能看到JVM,至于底层的操作系统?爱谁谁。

Netscape更加激进:以后都是Web应用程序,有浏览器就行了,管操作系统啥事儿?

“屏蔽操作系统”的共同目标让两家走到了一起,成功结盟,挑战微软霸权。

双方“结盟”以后,第一件事就是将Java以Applet的形式在Netscape浏览器中运行,Applet让Java迅速蹿红,成为了编程语言界的明星。

但是,结盟的双方也不是亲密无间的。

Netscape内部居然也在发展一个语言叫LiveScript。

Sun:兄弟,咱们不是说好了吗,Java是大家所需要的最后一种语言,你们家的Brendan Eich怎么又搞了一个LiveScript啊?我们之间牢不可破的友谊已经出现裂痕了!

Netscape:不不不,JVM太重量级了,Web编程需要一个脚本语言,得让新手快速上手才行。这样吧,我们妥协,把LiveScript改名为JavaScript,可以吗?

Sun:看起来像Java的子集,Java的缩水版,Java的弟弟,行,就这样。

2、上世纪的元宇宙

这个时候,我们的主人公Douglas Crockford(下文就简称为“道哥”吧)还在创业中,他的公司叫做Electric Communities,就在JavaSoft的隔壁。

公司的创业项目非常牛逼:元宇宙。

没错,在90年代已经出现了令人惊叹的虚拟世界,你可以拥有一个Avartar(化身),在3D世界中到处走走,还可以瞬间从一个地方被传送到另外一个地方,在里边和其他人交谈,买卖物品,建造东西。

图片图片

也许是离Java很近的缘故,道哥选择了Java来实现它。

但是这个概念实在是太超前,90年代的网络速度根本支持不了,Java启动也超级慢,“元宇宙”三分钟时间才能把环境加载完成。

2000年左右,网络泡沫破灭,元宇宙无疾而终。

为了生存,道哥接了一个特纳广播公司的一个项目:在线纸牌游戏。

特纳公司要求,这个游戏一定要在浏览器中运行,不要让用户点击安装任何东西。

道哥环顾四周,发现只有JavaScript满足这个要求。

但是公司的程序员都看不上JavaScript这门“烂”语言,不想做,道哥只好找来《JavaScript:权威指南》,亲自动手。

在开发的过程,道哥逐渐发现:JavaScript根本不是Java的子集,它是一个完全独立的编程语言。

JavaScript的优秀部分有着远超Java的能力,它是第一个为我们提供Lambda的语言,这是一个了不起的突破。

一旦明白了这一点,道哥瞬间从Java的拥趸变身为JavaScript的粉丝。

他写了一篇文章《 JavaScript,世界上最容易被误解的编程语言》的文章,说JavaScript是披着C语言外衣的Lisp,从此走上JavaScript的布道之路。

3、JSLint

项目做完以后,道哥无事可做,开始将时间花在JavaScript新闻组上,回答各式各样的问题。

比如“这是我写的一些 JavaScript 代码,我不明白为什么它有问题,谁能告诉我?”

这样的问题回答多了,道哥干脆写了一个神器:JSLint。这也是第一个JavaScript语法分析器

图片图片

只需要把有问题的代码放进去,一运行就能发现问题所在。

道哥发现,JavaScript的某些用法更容易导致Bug,如果不用这些形式,错误更容易被发现,程序会变得更好。

于是道哥提出了一个原则:如果在JS中有两种方法可以做事,请选择不太可能导致错误的一种。

比如:使用分号来消除语法歧义;

不要使用++,用+=1代替。

但是在那个“蛮荒”的年代,大家对道哥建议的原则并不感冒,甚至认为这样的要求冒犯了他们,他们依然是我行我素,想怎么写就怎么写。

4、重新创业

闲了一段时间以后,道哥按捺内心的冲动,打算第二次创业。

这一次,他和前同事成立了一个叫做State Software的公司,要用JavaScript做一个叫做“单页应用程序”的东西。

此时的Web应用基本上都是用ASP,JSP实现页面,用户需要在页面之间来回跳转,单页应用程序闻所未闻,可见道哥的理念是非常超前的。

单页应用程序必然涉及到浏览器的JavaScript代码和服务器接口之间的数据交互,用什么格式呢?

当时最热门的是XML,微软、IBM、Sun、HP当时都在鼓吹Web Service,其中核心技术如SOAP、WSDL全是用XML来描述的。

但是XML是个非常笨重的格式,解析它、验证它需要的工具可不少。

道哥发明了一种新的数据格式:JSON(JavaScript Object Notation )

道哥拿着单页应用程序和JSON去忽悠客户:“看看我们的系统和技术栈,JSON是浏览器和服务器交互的最方便的方式。”

客户:“我们都用Web Service,SOAP,XML!JSON是啥?”

道哥:“JSON可以直接把数据转化成JavaScript,非常方便!”

客户:“JSON是标准吗?不是标准我可不用!”

JSON不是标准,没有大厂的背书。

和“元宇宙”一样,道哥的创业再次因为过于超前而失败。

不过,这次创业留下了一个重要的遗产:www.json.org。

5、AJAX革命

2004年,Google发布了Gmail。2005年,又发布了GMap。

异步调用,局部刷新,新奇的用户体验引发了全世界的关注。

用户体验设计师Jesse James Garrett在一篇文章中造了一个词:AJAX(Asynchronous JavaScript and XML),来描述Gmail ,GMap背后的技术。

AJAX迅速火遍全球。

AJAX中的X就是XML,但是人们很快发现,XML复杂的格式和语义并不是传输数据的最好选择。

XML数据需要经过复杂的解析器解析以后才能使用,而JSON格式和JavaScript对象非常接近,可以轻松转换,并且简单明了。

程序员开始觉醒,越来越多的人采用JSON,而RESTful风格更是添了一把火,RESTful+JSON形成绝配,向繁杂的SOAP+XML发起猛烈攻击。

XML的疆域不断退缩,最后偏安于配置文件的领地,继续发挥余热。

图片图片

(蓝色为XML,红色为JSON)

互联网的发展就是这么神奇,巨头们为了控制,为了赚钱,经常是联合制定标准,通过强大的营销推给程序员。

这种方式能赢得一时,但不会赢得一世。

拍脑袋制定的标准,很快就会被民间的最佳实践给打败,扔到历史的垃圾堆中,SOAP,EJB都是典型代表。

6、布道者

道哥在前同事的邀请下,加入了雅虎公司,成为了一名真正的JavaScript布道者。

他会去世界各地,参与各种各样的会议,教大家如何正确地使用JavaScript,使用分号,使用JSLint,使用函数式风格,不要用eval......

道哥向大家展示如果使用正确的话,JavaScript将是一门强大的语言。

道哥甚至拜访了MIT,因为这里有一本著名的书《计算机程序的构造和解释》,用的编程语言是Scheme, 这也是JavaScript的函数式编程的设计来源,道哥去了一趟MIT,向他们描述JavaScript的工作原理和如何执行闭包。

多年后,MIT出了《计算机程序的构造和解释》:JavaScript版本。

图片图片

道哥写了一本书《JavaScript语言精粹》,这本书只有薄薄的150页,但是却剥除了JavaScript丑陋的外衣,让我们看到了JavaScript的真实面目:一个简洁的、优雅的,富有表现力的语言。

图片图片

道哥去了ITEF(互联网工程任务组),给JSON争取应有的名分:MIME类型经过了一个痛苦的流程,他得到了application/json,而不是text/json。

道哥感到困惑,JSON只是个文本格式,并不是应用程序啊,这可能是一些对JSON不满的XML粉丝搞的鬼吧。

7、JavaScript的二号人物

当年Brendan Eich为了向公司交差,用十天时间发明了JavaScript,仓促的设计让它一直背负各种骂名,例如没有命名空间,难以控制的全局变量,神奇的加号运算符,反直觉的==...... 都让初学者掉进无数坑中。

但是JavaScript能如此流行,语言层面肯定有优秀的成分。 

道哥慧眼识珠,他从一堆丑陋的JavaScript特性中把精华捡了出来,展示给大众,让我们意识到JavaScript也可以如此简洁、高效、灵活。

“JavaScript Lambda编程的精神领袖”,JavaScript的二号人物,道哥实至名归!

对不住了!各位!这篇已经太长了。

就此打住吧...... 下一篇再写John Resig......

图片图片

参考资料:https://corecursive.com/json-vs-xml-douglas-crockford/

https://www.youtube.com/watch?v=_kFrf-zafFU

如需转载,请通过作者微信公众号coderising获取授权。

责任编辑:武晓燕 来源: 码农翻身
相关推荐

2022-06-09 17:45:29

AI人工智能数据科学

2021-10-11 09:30:21

零信任网络安全网络攻击

2022-08-02 10:33:11

JavaScript代码

2011-08-25 10:39:19

云计算

2023-04-18 14:21:36

2022-12-07 10:06:19

2023-08-02 16:14:51

2021-09-26 13:55:33

5G切片网络切片5G

2017-10-12 10:35:01

私有云公有云云计算

2011-09-20 16:59:21

微软Windows人物

2023-06-06 15:47:26

人工智能ChatGPT

2022-06-27 23:31:01

JavaScript框架开发

2021-08-30 10:14:48

数字孪生数字化CIO

2021-08-24 08:00:00

人工智能数字孪生技术

2021-07-12 10:38:51

预测分析数据分析大数据

2022-01-12 15:50:24

JavaScript开发循环

2020-04-21 15:35:19

谷歌量子计算John Martin

2011-05-24 14:28:00

云计算

2020-07-13 11:14:48

大数据人工智能技术
点赞
收藏

51CTO技术栈公众号