JavaScript语言的诞生

JavaScript诞生于网景(Netscape)公司,它是随着网景的Navigator浏览器来到世人面前,下面看看JavaScript语言诞生的最初过程。

最初的需求

最初的浏览器只能浏览HTML文档,按照定义将HTML文档渲染成合适的页面,不具备与用户互动的能力。1994年,网景公司(Netscape)发布了Navigator浏览器0.9版。这是历史上第一个比较成熟的网络浏览器,轰动一时。

在什么情况下,浏览器需要跟用户互动呢?比如,如果网页上有一栏"用户名"要求填写,浏览器就无法判断访问者是否真的填写了,只有让服务器端判断,没法在浏览器端进行判断。如果没有填写,服务器端就返回错误,要求用户重新填写,按照当时的网络性能,这太浪费时间和服务器资源了。

如何实现上述的功能呢?一个显然的方式就是在HTML文档中增加可编程的能力,在HTML页面中嵌入某种页面逻辑,浏览器通过执行这种页面逻辑,可以实现各种交互功能,这就是最初JavaScript的需求。

因此,网景公司急需一种网页脚本语言,内嵌在页面中,浏览器可以解释执行,使得浏览器可以与网页互动。

JavaSript 的目标是创建一种更富于交互性的动态网站。与软件开发人员相比,设计师的可用性更为重要。因此,代码必须要轻便、简易和简单,按照当时的想法,JavaScript语言承担的功能也不多,如果涉及的太复杂必然影响它的推广使用。

选择--JavaScript名字的由来,尤其是跟Java的关系

网页脚本语言到底是什么语言?显然有两个选择:

一个是采用现有的语言,比如Perl、Tcl、Scheme等等,允许它们直接嵌入网页;

一个是发明一种全新的语言;

这两个选择各有利弊。第一个选择,有利于充分利用现有代码和程序员资源,推广起来比较容易;第二个选择,有利于开发出完全适用的语言,实现起来比较容易。

到底采用哪一个选择,网景公司内部争执不下,管理层一时难以下定决心。

就在这时,发生了另外一件大事:1995年Sun公司将Oak语言改名为Java,正式向市场推出。这家从斯坦福大学孵化出的高科技公司,就像它的名字一样,蒸蒸日上。Sun公司大肆宣传,许诺这种语言可以"一次编写,到处运行"(Write Once, Run Anywhere),它看上去很可能成为未来的主宰。(现在看,好像实现了,虽然2009年,Sun公司被Oracle收购了,估计Oracle主要是看中Sun公司的Java资产,但是Sun公司本身的主营产品是小型机和Solaris操作系统)

网景公司被Sun公司洗脑了,决定与Sun公司结成联盟。它不仅允许Java程序以applet(小程序)的形式,直接在浏览器中运行;甚至还考虑直接将Java作为脚本语言嵌入网页,只是因为这样会使HTML网页过于复杂,后来才不得不放弃。

总之,当时的形势就是,网景公司的整个管理层,都是Java语言的信徒,与此合作的Sun公司完全介入网页脚本语言的决策。因此,Javascript后来就是网景和Sun两家公司一起携手推向市场的,所以这种语言被命名为"Java+script"。

时势造英雄

此时,34岁的系统程序员Brendan Eich登场了。1995年4月,网景公司录用了他。

Brendan Eich本人的主要方向和兴趣是函数式编程,一开始网景公司招聘他的目的,是研究将Scheme语言作为网页脚本语言的可能性。将Java语言直接作用脚本语言的努力失败后,1995年5月,网景公司做出决策,设计一个新的脚本语言,但是必须"看上去与Java足够相似",比Java简单,使得非专业的网页作者也能很快上手。这个决策实际上将Perl、Tcl、Scheme等非面向对象编程的语言都排除在外了。

Brendan Eich被指定为这种"简化版Java语言"的设计师。

设计JavaScript

虽然整个管理层对Java语言充满信心,但是Brendan Eich对Java一点兴趣也没有。为了应付公司安排的任务,他只用10天时间就把Javascript设计出来了。

由于设计时间太短,语言的一些细节考虑得不够严谨,导致后来很长一段时间,Javascript写出来的程序混乱不堪。如果Brendan Eich预见到,未来这种语言会成为互联网第一大语言,全世界有几百万学习者,他会不会多花一点时间呢?

总的来说,他的设计思路是这样的:

(1)借鉴C语言的基本语法;

(2)借鉴Java语言的数据类型和内存管理;

(3)借鉴Scheme语言,将函数提升到"第一等公民"(first class)的地位;

(4)借鉴Self语言,使用基于原型(prototype)的继承机制。

所以,Javascript语言实际上是两种语言风格的混合产物----(简化的)函数式编程+(简化的)面向对象编程。这是由Brendan Eich(函数式编程)与网景公司(面向对象编程)共同决定的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值