互联网的缔造者们:Brendan Eich与JavaScript
本文译自:INNOVATORS OF THE NET: BRENDAN EICH AND JAVASCRIPT,最近因为别的事情从网上搜出来这篇文章,该篇文章是对 JavaScript 之父 Brendan 的采访翻译出来为大家揭开真实的 JavaScript 出生的故事。当然该文已与其他采访集结出版中译本为《编程人生》,请原谅该文翻译得比较粗糙。
Brendan 的技术很牛,眼界宽广,表达能力也非常强,因此在 Netscape 内部他的话很有影响力。与他共事的工程师,在互联网上与他交流的开发者,甚至包括他遇见的高管们都非常赞赏他,赞赏他过人的才华、谦逊的态度和热心肠。
1998年6月24日-作为Netscape网景公司企业软件事业部的执行副总裁,我有幸与一些互联网中最好的工程师共事,他们中有很多人在互联网开发标准和协议方面都有很大的贡献。在接下来几个月中,我将在我的TechVision专栏上分析这些领头羊在互联网方面所做的卓越工作。我第一位采访的“互联网缔造者”是Brendan Eich,他一手设计并实现了著名的JavaScript语言。
Brendan的技术很牛,眼界宽广,表达能力也非常强,因此在Netscape内部他的话很有影响力。与他共事的工程师,在互联网上与他交流的开发者,甚至包括他遇见的高管们都非常赞赏他,赞赏他过人的才华、谦逊的态度和热心肠。
他疯狂的浏览讨论组的新帖子,以了解大家是如何使用和讨论JavaScript的。他对于那些JavaScript在外界中所引发的新闻条目非常关心,感觉良好。在JavaScript标准出现之前,各种新的特性应用户的需要而相继开发出来。用不了多久,有时候就15分钟,Brendan的代码里就会出现一个非常天才的解决方案。
Brendan呆在电脑前就是一个恶魔,从舍不得浪费半点时间。如果同事因为某个问题打断了他与他交谈时,往往的结果就是,他会继续编程,收邮件,或者干脆同时与别人聊天,留给同事的只有半个侧脸。当谈话者要求他专心点,他就说他很忙,需要回去工作了。
Brendan在空闲时,会演奏古典钢琴或者体操。他还喜欢旅行,当然他更喜欢工作!——他很多假期都被填满了,因为他有很多预先打算的事情要做。
JavaScript于1995年发布,到现在已经是一个国际标准,旨在为开发提供一个更加容易的跨浏览器的动态HTML解决方案。
1998年,Brendan的杰出贡献使得他荣获了Builder.com公司该年的“互联网缔造者”大奖。下面就是Brendan和他的JavaScript。
让网页动起来 Brendan Eich,JavaScript之父**
内容建设不需要太高深。这不是什么只有专家或者牛逼哄哄的计算机科学家才能研究的深奥问题。这样有助于在内容创建和分享过程中节约成本有经济优势,。就如Netscape在网络建设中所做的一样。
1995年4月,在SiliconGraphics工作了七年,又在MicroUnity System Enineering工作三年之后,我来到了现在的Netscape公司。Netscape公司一年前就开始找人开发一种脚本语言,希望能够运用到浏览器的网页里,让我网能够动起来。Java从First Person到Sun也经过了五个春秋,1994年是还为了能够应用到Web上而重构过。Netscape第一个获得了Java的认证,因此一个问题出现了:我们直接使用Java,还是令搞一个语言?
有的人极力主张使用Java,Java很好,很适合程序员写组件。但是还有更多的人只是写点脚本,或者直接把别人的脚本拷过来改一改就行。这些人不是专业的程序员,大部分时间都用来干别的事情,而不是敲代码。比如说网管,或者一些只写脚本的业余人员。如果他们想写点代码,他们只希望随便敲打两下键盘就行。最后,我们决定开发一门新语言,必须长得像Java,并且是脚本语言。
与其他所有语言一样,它也是从其他语言借鉴了很多东西。与1995年9月,它第一次跟随Navegator2.0 beta版一起发布,当时取名为LiveScript。紧接着,12月4号,公司与Sun公司一起宣布合作时更名为了JavaScript。
JavaScript吸引到了大量的开发者,因为人所要的东西仅仅是从HTML中迈出一步,使用一点代码是网页动起来——使东西移动,对用户的输入做出反应,或者改变颜色;弹出一个窗口;或者弹出一个对话框问个问题,只有回答了才能继续——这些事情HTML干不了,你需要编程语言,但是要足够简单,不需像Java或者C++这样复杂。
内容建设不需要太高深。这不是什么只有专家或者牛逼哄哄的计算机科学家才能研究的深奥问题。这样有助于在内容创建和分享过程中节约成本有经济优势,。就如Netscape在网络建设中所做的一样。
将JavaScript称作“将网页粘在一起的胶水”,说明了JavaScript短小易于使用,但是这还不够公平。胶水会变硬,但是JavaScript比胶水更动态,它可以创建响应让东西继续运转下去,把JavaScript称作催化剂更合适。
互联网新标准
Navigator 2.0 beta版发布以后,JavaScript非常成功。因此,微软公司实现了兼容的语言跟进。于是有了创建一个标准的需求,上面写着:“它们应该按照这里规定的样子工作”,以便浏览器厂商能够都按照同样的标准来实现,web开发者开发的网页就能工作在各种可能的浏览器上。1996年8月,Navigator 3.0一发布之后,我们就着手以JavaScript为标准写一份草案提交给欧洲计算机制造商协会(ECMA),它是国际通信标准的机构,总部设在瑞士日内瓦。ECMA在1997年6月通过了草案,并且同时作为ISO 标准。
现在该标准正式名称为ECMAScript。在Netscape,我们继续使用有品牌价值的“JavaScript”来称呼我们对ECMAScript的实现。这包括了一套扩展,没有任何冲突,但可以附加价值,所以它可以以这种方式基于标准进行一些创新。我想这是推动标准的正确方式。如委员会一样,将大家聚到一起互相争论打仗最终妥协满足所有人的需求这是做不出东西的。要做的话只有先创建一个原型,看它能进化成什么样子。
ECMA现在正在开会着手制定ECMAScript2.0标准,准备引入异常处理机制(一种显示处理错误的方式)还有几个其他的语言特性。这会使JavaScript更像一门编程语言——有点像Java,但是我觉得它应该悬崖勒马,不然会变得不好使用。
DOM差异的衔接
ECMAScript标准制定的是语言的核心标准,不管它在什么平台上有一样:在浏览器端,服务器端,甚至的多媒体制作工具中。当你把它放到浏览器中,那还存在另外一个层围绕着它,这一层用来处理HTML,处理浏览器窗口,处理对话框等等。这些并没有标准化。HTML标准的一部分,DOM(文档对象模型),现在正在由W3C标准化。该标准并没有以某个具体的实现为基础,它只是以一种更加普通更加抽象的方式来制定,这或许更好。今年的某个时候该标准会发布第一版。
内容制作者一直在抱怨,“我不得不为Netscape和IE不同的DOM模型写两遍代码。”我同意他们,他们有权利呐喊。开发者支出,如果一个函数不能同时工作在这两个浏览器上,他们就不会使用该函数。他们希望W3C的标准能够让动态网页开发走回正确的道路——这两浏览器在下一版是能够实现该标准。
在此期间,你希望你的JS代码能在同样HTML能力水平互相竞争的浏览器上实现功能,你可以写一段而外的JS——在不同的浏览器实现之上放一个薄薄的抽象层。这个普通的层会想搞清楚它运行在什么浏览器上,然后使用该浏览器可用的特性。因此,JavaScript可以扮演一座桥的角色,在没有统一的DOM标准出现之前。
例如,动态HTML包括两个W3C标准的支持,一是层叠样式表级别1(CSS1),它允许你格式化的HTML元素,另一个是层叠样式表定位(CSSP),它允许你放置、堆叠、隐藏并隐显示HTML元素。当前,开发者不得不在Netscape Navigator和IE中使用不同的DOM标准分别处理这些属性设置。但是,文档对象模型允许你使用JavaSript来设置元素的CSS1和CSSP属性。如果你现在写一个饱薄薄的抽象层,使用函数获取一个元素的属性值,然后进行浏览器检测,使用当前浏览器正确的DOM来设置。这个函数层,成为一个高层次的应用程序编程接口(API),你的代码可以随意调用,而不必担心其运行于什么浏览器之上。
为了节省开发者的时间,本周我们正在提供一个文档以及一个基础的跨浏览器的JavaScript代码层来解决这个问题。第一篇名为跨浏览器的JavaScript和DHTML的文档提供了一个浏览器兼容性问题以及如何解决这些问题的概述。第二篇文档如何使用JavaScript设置的两种浏览器的CSS1属性,并且提供了一个代码生成器,自动为你生成必要的JavaScript代码。第三份文档介绍了在这两种浏览器上如何使用JavaScript设置CSSP的属性,并提供了一个跨浏览器的API层。作为一个实际的例子是如何工作的,我们已经更新动态HTML的演示模板,支持Navigator 4.x和Internet Explorer 4.x中,并用它创建一个跨浏览器的DHTML的演示,任何人都可以使用教给别人。 有一个实例能够说明这是如何工作的,我们更新了动态HTML的演示模板示例,现在在Navigator4.x IE4.x上都能正常工作。我们还用它做了一个关于跨浏览器DHTML的介绍,这样任何人都可以用它来教别人了。另一个例子是Web Building 的主页,它利用了跨浏览器DHTML和面向对象的JavaScript创建了一个浮动菜单;这篇文章解释了它是如何工作,还有示例代码。
本着开放源代码的精神,我们鼓励开发人员提交改进的代码,可以并入到将来的版本中。事实上,跨浏览器API层的部分代码也是一个独立的开发者贡献的代码。
COMMUNICATOR SOURCE CODE
现在网景公司的Communicator source code已经可用了。整个开源社区现在都可以推进JavaScript向前发展了。现在我为mozilla.org工作 。这是一个伟大的团队,有很多牛人在一起开发JavaScript。现在我可以预见到的是,开源代码将方便人们走到一起发生一些美妙的事情。这真是太棒了,因为我可以说,“有人想使用JavaScript在浏览器中的东西,这不是以前编写脚本的自动化,而别人想在这里做类似的自动化排序。 这真的很棒,因为我敢说:”有的人想用一些以前没有的脚本来在浏览器中实现一些自动化的事情,而且也有其他人想要类似的东西。我们自动化、钩子或者脚本的统一理论是什么?“然后,我可以帮助做到这一点。我会尽力,以确保没有任何重复努力和语言是最小的,并没有得到与功能,不是绝对必要或重叠以某种方式相互缀满。 去哦会尽力确保避免一些重复的劳动。这语言是最小的,没有那些没有必要的功能,且功能间不会有互相重叠的部分。
我认为 mozilla.org 成功是至关重要的。不只是为了Netscape,还为了开源社区,为了整个世界。反馈是关键的。雷蒙德, 开源软件专家,他写了一个广泛讨论的文件,被称为 “大教堂和集市”,使得一个很好的点:软件主要是让你的代码的同行评审-不仅仅是质量保证,这是一个在审计过程中结束。 Eric Raymond,开源软件专家,他的一篇很有名的文章叫“大教堂和集市”指出:软件其实是对你的代码进行审查——不单单是QA,这是一个不断审视的过程。越多的双眼睛的审查,大多数情况下软件就越好,软件的品质就上去了。更多的目光投向帮助。这实际上在许多情况下,更好的软件。所以质量就上去了。
这是我喜欢做什么东西,拥有大量的受众,富有创造力,对人有帮助的事情。JavaScript能满足人们切实的需要,而且在其他领域也开始显露头角,比如说,Adobe公司将其加入到了Acrobat中。
我的上一个工作从来没有发布过产品,它是一项学要智力,充满挑战跨学科的研究。但是,除非产品可以交付到用户的手中,否则这样对于我来说没什么感觉。