004-0001 javascript的由来

 

JavaScript语言的前身叫作Livescript。自从Sun公司推出著名的Java语言之后,Netscape公司引进了Sun公司有关Java的程序概念,将自己原有的Livescript 重新进行设计,并改名为JavaScript

JavaScript是一种基于对象和事件驱动并具有安全性能的脚本语言,有了JavaScript,可使网页变得生动。使用它的目的是与HTML超文本标识语言、Java 脚本语言一起实现在一个网页中链接多个对象,与网络客户交互作用,从而可以开发客户端的应用程序。它是通过嵌入或调入在标准的HTML语言中实现的。

JavaScript具有很多优点:

1.简单性  JavaScript是一种脚本编写语言,它采用小程序段的方式实现编程,像其它脚本语言一样,JavaScript同样已是一种解释性语言,它提供了一个简易的开发过程。它的基本结构形式与CC++VBDelphi十分类似。但它不像这些语言一样,需要先编译,而是在程序运行过程中被逐行地解释。它与HTML标识结合在一起,从而方便用户的使用操作。

2.动态性  JavaScript是动态的,它可以直接对用户或客户输入做出响应,无须经过Web服务程序。它对用户的反映响应,是采用以事件驱动的方式进行的。所谓事件驱动,就是指在主页中执行了某种操作所产生的动作,就称为“事件”。比如按下鼠标、移动窗口、选择菜单等都可以视为事件。当事件发生后,可能会引起相应的事件响应。

3.跨平台性  JavaScript是依赖于浏览器本身,与操作环境无关,只要能运行浏览器的计算机,并支持JavaScript的浏览器就可以正确执行。

4.节省CGI的交互时间 随着WWW的迅速发展有许WWW服务器提供的服务要与浏览者进行交流,确浏览的身份、需服务的内等等,这项工作通常由CGI/PERL编写相应的接口程序与用户进行交互来完成。很显然,通过网络与用户的交互过程一方面增大了网络的通信量,另一方面影响了服务器的服务性能。服务器为一个用户运行一个CGI时,需要一个进程为它服务,它要占用服务器的资源(CPU服务、内存耗费等),如果用户填表出现错误,交互服务占用的时间就会相应增加。被访问的热点主机与用户交互越多,服务器的性能影响就越大。

JavaScript是一种基于客户端浏览器的语言,用户在浏览中填表、验证的交互过程只是通过浏览器对调入HTML文档中的JavaScript源代码进行解释执行来完成的,即使是必须调用CGI的部分,浏览器只将用户输入验证后的信息提交给远程的服务器,大大减少了服务器的开销。

 

 

--------------------------

 

 

问题
============

JavaScript真的继承自Cmm吗?
JavaScript与Java有多少关系?
JavaScirpt最初的设计是怎样的?


在许多资料,JavaScript的语源被追溯到一种名为Cmm的语言。同样是在这一溯源的过程中,人
们发现“其实”JavaScript不是第一种网页中的脚本语言。现在一些所谓“公认”的情况是这样的:
----------------
大概在1992年,一家称作Nombas的公司开始开发一种叫做C减减(C-minus-minus,简称Cmm)的
嵌入式脚本语言。这个脚本语言捆绑在一个叫做CEnvi的共享软件产品中,当Netscape Navigator
崭露头角时,Nombas开发了一个可以嵌入网页中的CEnvi的版本。这些早期的试验称为Espresso
Page(浓咖啡般的页面),它们代表了第一个在万维网上使用的客户端脚本语言。而Nombas丝毫
没有料到它的理念将会成为因特网的一块重要基石。

----------------

然而,这是真实的情况吗?运行在Netscape中的第一个“客户端脚本语言”真的是Cmm的浓咖啡?
又或者真的象Wiki中记述的那样,Brendan Eich在JavaScript引用了Cmm语言特性?

不是的。尽管上述的资料看起来出权威:《Javascript高级程序设计》(Professional JavaScript
for Web Developers),但他的确错了。


JavaScript与Cmm在语言特性上无关
============
为了弄明白JavaScript与Cmm的关系,我大概用了三天的时间,从网上收集了多个Cmm的版本。这
些版本既包括早期的Cmm(1993年),也包括在JavaScript初创时的Cmm(1995年),还包括在后来,
Cmm更名为ScriptEase的第一个版本(3.0, 1997年),作为参考,我还考察了它在服务器端的版本。

遗憾的是,在1996年之前,在Cmm的2.x的最后一个版本之前,Cmm都并不是一个面向对象(或基于
对象)的语言,Cmm正如它自己的名字所说的一样:是一个精减版的C,而不是C++或以C++为基础
的变种。所以Cmm中有“结构”,也有#include等,整个的体系是参考C语言的。

由于JavaScript在基本的语法特性(例如大括号、语句关键字等)上参考了C,在对象系统上(例
如“.”作为成员存取)上参考了Java,因此在一定程度上Cmm与JavaScript存在相似性——主要是
与共同借鉴自C的部分。但是除了这些之外,JavaScript与Cmm在语言特性上完全无关。


JavaScript最初的基本设计是怎样的?
============

我需要补充一下JavaScript初始设计目标。Brendan Eich在1995年4月前后被Netscape公司雇佣,
目标是完成一套语言系统。最初的设计里,该语言系统是为Netscape的LiveWire战略服务的。该
战略彰显了Netscape当年的勃勃野心,它是Netscape公司的一个通用的Web开发环境,包括Netscape
Enterprise、FastTrack Server等。LiveWire架构也成为所有Web服务器提供SP(Server Page)技
术的蓝本。例如在IIS中的ASP,以及更早期的IDC(Internet Database Connect)。

这种技术在服务器端通过内嵌于网页的LiveScript代码,使用名为database、DbPool、Cursor等
的一组对象来存取LiveWire Database。作为整套的解决方案,Netscape在客户端网页上也提供
LiveScript脚本语言的支持,除了访问Array、String等这些内置对象之外,也可以访问window等
浏览器对象。

不过并不清楚的是:LiveScript最初的设计是先考虑服务器端应用,还是先考虑网页中应用。但这
些应用环境的决策上的变化,时间仅仅限制在1995年4月至1995年10月之前,因为当月发布的netscape
2.0 beta1已经包含了脚本支持。

在netscape 2.0 beta1中并不支持

你可能感兴趣的:(004,JavaScript)