迟来的真相:关于JavaScript的历史

原创 2012年03月22日 15:13:39

今天看到李松峰老师(@李松峰)发布了新版的《JavaScript高级程序设计》(第三版)的预售消息,于是跑去当当(在这里)仔细地读了一下新版有关“JavaScript起源”的段落。读罢,心中的种种不安一扫而空:在这本书的第三版,总算还原了JavaScript起源的真相。

 

话说有一本《JavaScript权威指南》,以及这本《JavaScript高级程序设计》,算这些年对前端界/JavaScript圈子影响最大的、JavaScript经典译著。然而前者历来对JavaScript的起源语焉不详,后者则正好相反,从第一版起便“详细(而又错误地)”地指出了“JavaScript的起源”:

大概在1992年,一家称作Nombas的公司开始开发一种叫做C减减(C-minus-minus,简称Cmm)的嵌入式脚本语言。这个脚本语言捆绑在一个叫做CEnvi的共享软件产品中,当Netscape Navigator崭露头角时,Nombas开发了一个可以嵌入网页中的CEnvi的版本。这些早期的试验称为Espresso Page(浓咖啡般的页面),它们代表了第一个在万维网上使用的客户端脚本语言。而Nombas丝毫没有料到它的理念将会成为因特网的一块重要基石。

当网上冲浪越来越流行时,对于开发客户端脚本的需求也逐渐增大。当时工作于Netscape的Brendan Eich,开始着手为即将在1995年发行的Netscape Navigator 2.0开发一个称之为LiveScript的脚本语言……

然而正是这误指的源起,(至少在国内)造成了相当多的误解。我后来在写《JavaScript语言精髓与编程实践》过程中,为此甚是苦恼:不说吧,不对;写吧,罗嗦嗦地讲进书里,也是不好。后来才写了:

《还原JavaScript的真实历史》 

http://blog.csdn.net/aimingoo/article/details/1932315

这篇博客,在这里引出了《JavaScript高级程序设计》第一版中“错误叙述”的原文。并在我的书中把考据类的信息指到这里。

 

再后来,我又读到《JavaScript高级程序设计》的第二版,这一版是在2010年的杭州D2(第五届)大会上偶然所得(也是奇遇,呵呵),是Nicholas签名的中文版。然而关于JavaScript的起源这件事,在这一版中仍是采用此前的说法,没有什么变化。

因此,当时Hedger送我这本书时,我便跟他约好,我得再写一篇关于“JavaScript起源”的文章,请他转译、转交给Nicholas。——我所“偶得”的这一本,正是Hedger送来,并且与Nicholas还很熟。这才有了我关于这一问题的“详图实证”:

详图实证:关于JavaScript的语源问题

http://blog.csdn.net/aimingoo/article/details/6654742

这篇文章发在《程序员》杂志上,而我则将一篇摘选另寄给了Hedger。再之后的消息,就不得而知了。
如今新版的《JavaScript高级程序设计》总算在这个问题上有了新的描述,而不再将起源问题指向C--,这便已是相当令人振奋的事实了。至于这中间有或没有几分个人的努力,其实已是在这种欣喜之外的事情。我所关注的,是总算在“JavaScript类的书籍”中,关于这个问题有了较一致的说法,而不至于让人左右难从了。


在新的、第三版《JavaScript高级程序设计》中“JavaScrip简史”的叙述如下:

1.1 JavaScript简史

在Web日益流行的同时,人们对客户端脚本语言的需求也越来越强烈。那个时候,绝大多数因特网用户都使用速度仅为28.8kbit/s的“猫”(调制解调器)上网,但网页的大小和复杂性却不断增加。为完成简单的表单验证而频繁地与服务器交换数据只会加重用户的负担。想象一下:用户填写完一个表单,单击“提交”按钮,然后等待30秒钟,最终服务器返回消息说有一个必填字段没有填好……当时走在技术革新最前沿的Netscape公司,决定着手开发一种客户端语言,用来处理这种简单的验证。

当时就职于Netscape公司的布兰登?艾奇(Brendan Eich),开始着手为计划于1995年2月发布的Netscape Navigator 2开发一种名为LiveScript的脚本语言——该语言将同时在浏览器和服务器中使用(它在服务器上的名字叫LiveWire)。为了赶在发布日期前完成LiveScript的开发,Netscape与Sun公司建立了一个开发联盟。在Netscape Navigator 2正式发布前夕,Netscape为了搭上媒体热炒Java的顺风车,临时把LiveScript改名为JavaScript。

由于JavaScript 1.0获得了巨大成功,Netscape随即在Netscape Navigator 3中又发布了JavaScript 1.1。Web虽然羽翼未丰,但用户关注度却屡创新高。在这样的背景下,Netscape把自己定位为市场领袖型公司。与此同时,微软决定向与Navigator竞争的自家产品Internet Explorer浏览器投入更多资源。Netscape Navigator 3发布后不久,微软就在其Internet Explorer 3中加入了名为JScript的JavaScript实现(命名为JScript是为了避开与Netscape有关的授权问题)。以现在的眼光来看,微软1996年8月为进入Web浏览器领域而实施的这个重大举措,是导致Netscape日后蒙羞的一个标志性事件。然而,这个重大举措同时也标志着JavaScript作为一门语言,其开发向前迈进了一大步。

微软推出其JavaScript实现意味着有了3个不同的JavaScript版本:Netscape Navigator中的JavaScript、Internet Explorer中的Jscript和ScriptEase中的CEnvi。与C及其他编程语言不同,当时还没有标准规定JavaScript的语法和特性,3个不同版本并存的局面已经完全暴露了这个问题。随着业界担心的日益加剧,JavaScript的标准化问题被提上了议事日程。

在“CEnvi是JavaScript的一个实现(而并非起源)”这一点上,Nicholas终于做出了正确的描述。虽然,大概在细节的时间上还略值得探究,但已经是无伤大局的了。


是为纪念,即便来之迟迟,也是真相的成功罢!

 

 

 

_

JS起源及发展历史

iOS开发其他必备技能!JavaScript!
  • yungeIOS
  • yungeIOS
  • 2016年09月26日 10:31
  • 2943

jS历史

JavaScript历史 大概在1992年,一家称作Nombas的公司开始开发一种叫做C–(C-minus-minus,简称Cmm)的嵌入式脚本语言。 Cmm背后的理念很简单:一个足够强大可以替代宏...
  • qq_33220449
  • qq_33220449
  • 2016年08月07日 18:55
  • 736

JavaScript的历史(精简全面的JavaScript发展史总结)

注:转载请注明出处 1.JavaScript最初诞生的原因,是网景公司(Netscape)为解决拨号上网时代(低带宽),服务端验证表单数据低效的问题,而着手开发一种客户端语言。但在其发展过程中,...
  • Rock_Lee_
  • Rock_Lee_
  • 2014年11月19日 21:00
  • 1451

JS起源及发展历史

iOS开发其他必备技能!JavaScript!
  • yungeIOS
  • yungeIOS
  • 2016年09月26日 10:31
  • 2943

Hadoop的发展历史

说到Hadoop的起源,不得不说到一个传奇的IT公司—全球IT技术的引领者Google。Google(自称)为云计算概念的提出者,在自身多年的搜索引擎业务中构建了突破性的GFS(Google File...
  • oraclestudyroad
  • oraclestudyroad
  • 2016年07月15日 10:20
  • 1589

RESTful架构:历史+规范+进阶

近几年,RESTful Web Services渐渐开始流行,大量用于解决异构系统间的通信问题。很多网站和应用提供的API,都是基于RESTful风格的Web Services,比较著名的包括Twit...
  • u013628152
  • u013628152
  • 2015年01月12日 23:35
  • 1723

JavaScript简史和概述

前言:从进入公司工作到现在已经两年半的时间了。我所在公司的项目组从过去的主要由C/S和B/S两条产品线,到现在集中到了一条B/S产品线,项目组的目标是未来争取做互联网医疗高端影像的解决方案平台。而我具...
  • inter_peng
  • inter_peng
  • 2015年09月19日 17:16
  • 1471

MongoDB(一)NoSQL起源

为什么出现NoSQL? 随着互联网的发展,当我们把一台服务器一台服务器变成两台服务器,当我们开始建立数据备份,当我们需要加一个缓冲层,来调整所有的查询,投入更多的硬件。 最后,需要将数据切分多个集群...
  • lovesummerforever
  • lovesummerforever
  • 2014年10月16日 18:10
  • 3014

【设计模式】软件模式起源与诞生

GoF将模式的概念引入软件工程领域,这标志着软件模式的诞生。软件模式并非仅限于设计模式,还包括架构模式、分析模式和过程模式等,实际上,在软件开发生命周期的每一个阶段都存在着一些被认同的模式。...
  • u013036092
  • u013036092
  • 2015年12月28日 12:07
  • 1322

Hadoop回顾之Hadoop发展史

说到了Hadoop,那么,什么是Hadoop呢?我们先来了解一下什么是Hadoop。 Hadoop:这个我们就没法顾名思义了。这只是一个玩具大象的名字。哈哈,是不是挺逗。这只大象也算是闻名世界了。 ...
  • BrotherDong90
  • BrotherDong90
  • 2015年06月04日 11:15
  • 1334
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:迟来的真相:关于JavaScript的历史
举报原因:
原因补充:

(最多只允许输入30个字)