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获取授权。