JavaScript 和 Java
在谈到JavaScript的诞生前,先聊聊JavaScript和Java的一些渊源。笔者在刚开始接触到JavaScript的时候,看到JavaScript的英文单词是Java,就简单的认为JavaScript是隶属于Java的编程语言。在后续才知道,JavaScript和Java是俩种完全不同的编程语言。
在1994年左右,网景(Netscape)公司发布了Netscape Navigator浏览器,这个浏览器是1990年代互联网的主要浏览器。而当时的浏览器跟现在的不一样,无法交互(比如简单的判断是否输入姓名)只能浏览网页,Netscape Navigator也是这样,于是网景公司雇佣了布兰登让他设计一种可以嵌入网页的脚本语言。由于网景与发明Java的Sun公司有合作,Sun公司也打算为Java(面向对象语言,当时面向对象语言很火热)大力宣传。而之前浏览器也先支持了Java,但Java难度高,嵌入页面也会让页面太复杂,于是放弃了Java。。
JavaScript的诞生
在上文的背景下,一位名叫Brendan Eich的传奇程序员登场了。当时Brendan Eich的主要方向和兴趣是函数式编程,网景公司招聘他的目的,是研究将Scheme语言作为网页脚本语言的可能性。Brendan Eich本人也是这样想的,以为进入新公司后,会主要与Scheme语言打交道。
仅仅一个月之后,1995年5月,网景公司做出决策,未来的网页脚本语言必须"看上去与Java足够相似",但是比Java简单,使得非专业的 网页作者也能很快上手。 这个决策实际上将Perl、Python、Tcl、Scheme等非面向对象编程的语言都排除在外了。
Brendan Eich被指定为这种"简化版Java语言"的设计师。 但是,他对Java一点兴趣也没有。为了应付公司安排的任务,他只用10天时间就把Javascript设计出来了。
由于设计时间太短,语言的一些细节考虑得不够严谨,导致后来很长一段时间,Javascript写出来的程序混乱不堪。如果Brendan Eich预见到,未来这种语言会成为互联网第一大语言,全世界有几百万学习者,他会不会多花一点时间呢? 总的来说,他的设计思路是这样的:
(1)借鉴C语言的基本语法;
(2)借鉴Java语言的数据类型和内存管理;
(3)借鉴Scheme语言,将函数提升到"第一等公民"(first class)的地位;
(4)借鉴Self语言,使用基于原型(prototype)的继承机制。
所以,Javascript语言实际上是两种语言风格的混合产物----(简化的)函数式编程+(简化的)面向对象编程。 这是由Brendan Eich(函数式编程)与网景公司(面向对象编程)共同决定的。
总结
JavaScript的诞生存在一定的机缘巧合,包括语言的设计也存在一定的缺陷。但随着JavaScript在前端上的广泛使用,经过一代代开发者的维护和开发,在今天已经爆发出了强大而蓬勃的生命力。在今天,JavaScript的使用范围已经不仅仅局限于前端,随着nodejs的出现,在后端的使用也成家常便饭。由于JavaScript的强大之处,对于任何的开发者都可以去尝试这门极富生命力的语言。