自从2004年以后,伴随着“Ajax”和“Web 2.0”的出现,JavaScript正迎来自己的新生。JavaScript对于“Ajax”或者“Web 2.0”这场革命来说,是必不可少的组成部分。人们开始逐渐正视JavaScript,而且很多开发者都声称自己喜欢做JavaScript的开发。
Brendan Eich于1995年在Netscape发明了JavaScript语言,这个语言在过去的一些年里曾是一个最被误解的语言,随着AJAX和Web 2.0的发展,人们逐渐正视JavaScript。这是一篇Computerworld对Brendan Eich的一次采访,对JavaScript的过去、现在和未来都做了阐述。 原文:http://www.computerworld.com.au/index.php/id;243672124 原文作者:Naomi Hamilton、Brendan Eich(被采访对象)
以下是对原文的翻译:
什么原因促使你去开发JavaScript?
对于JavaScript的早期历史,其实在自己的博客中写过:http://Weblogs.mozillazine.org/roadmap/archives/2008/04/popularity.html 。我在1995年4月4日加入了Netscape,当时的目标是把Scheme语言或者类似的语言嵌入到Netscape的浏览器当中。由于申请没有通过,我加入了Netscape的Server团队,这个团队负责Web服务器和代理服务器方面产品的开发,我在这里工作了一个月,主要进行下一代HTTP的研发。到了五月份的时候,我就被调回当初想加入Client团队,从此我就开始了对JavaScript雏形的开发。
Marc Andreessen和我,连同在Sun工作的Bill Joy,坚信HTML需要一种脚本化的语言,这种语言就算对于新手和业余者来说也会很容易上手,而且这种语言的代码可以直接写在HTML的标记之间,以源代码的形式作为网页的一部分发布。这种信念同时成为了我们的动力。我们打算开发一个“胶水语言”,面向网站的设计者和兼职做网站开发的程序员,以替代以前那种通过图片、插件和Java小程序搭建网站的方式。我们把Java看成是由高薪程序员使用的组件语言,而胶水程序员,也就是那些网页设计师,将通过JavaScript把组件组合起来实现交互。
从这个意义上说,纵观在微软的操作系统和应用程序中使用的编程语言家族中,JavaScript应该和Visual Basic是类似的,而Java和C++类似。所以我们除了可以选择像Java和C++那样“ 真正”的编程语言以外,还可以有一些“小巧”的脚本式语言供选择,比如JavaScript,使得贯穿于编程语言金字塔的分工产生差别,以促进了更多的创新。
遇到过什么特别的需要解决的问题么?
不可编程的网页是静态的,堆砌着文字,充其量把图片放到表格里或者干脆浮动在网页的两侧。通过JavaScript这样的脚本语言,我们可以控制网页上的元素,更改他们的属性并响应事件。实际上,JavaScript在最初的时候就有一个操作浏览器的函数库,但这个库的功能很有限。和服务器之间的通讯方法也仅限于重新加载整个网页。
在JavaScript的开发过程中,遇到过什么必须面对而且特别困难的问题么?
在语言的设计阶段冻结以后,每一个小的开发周期主要就是在检验设计时的想法。我在1995年的5月,用了大概10天的时间开发解释器,包括除了Date对象以外的其它内置对象(Date由其同事Ken Smith协作完成)。95年剩下的日子,我的工作就是把这个引擎嵌入到Netscape浏览器中,并建立那个后来十分著名的DOM(文档对象模型),准确的说应该是 Level 0 DOM,这时候已经可以在JavaScript中通过一系列函数接口控制窗口、文档、链接、图片等对象了,并可以响应事件和通过定时器运行代码。
在1996年中期以前,在Netscape只有我一个人在做JavaScript的开发。
你怎样看待这些年来反对JavaScript的“共鸣”声音?
这些反对的共 鸣都是可以理解的。无论是在网络上、在多用户操作系统中还是在各种兼容的浏览器中,JavaScript都是提供互动性的唯一的编程语言(比其他所有平台都大)。其它的编程语言都是通过插件的形式,而且都是同一家公司开发的,这样就可以通过代码的方式来控制操作性。因此,使用JavaScript和DOM进行开发,曾经是一个很困难的经历。
这无助于Netscape和Microsoft的浏览器战争,猛烈的创新革命促使标准化的过早到来,而且这场战争的结束导致了多年来对JavaScript的忽视,和在IE的垄断下制定各种Web标准。
为什么叫JavaScript?好像开始的时候,JavaScript不叫JavaScript,叫LiveScript……
当时Netscape的产品名称启用了Live这个前缀,比如LiveWire、LiveScript等。但在1995-1996这个时间,Java的发展势头太猛了,如日中天,所以大家决定沾沾光,把名字修改为JavaScript。但必须说明Java与JavaScript技术上的鸿沟还是很大的,而且要填平它真的不容易(纵横于Java和JavaScript的开发者应该有此番的感受)。
你对那些未来的程序员有什么建议么?
学习大师们的经典著作:Knuth、Wirth和Hoare。计算机科学就像一个滚动的轮胎,在学术研究方面,每10-20年就会重复发现一些以前曾经被发现过的东西。当然,近些年来大家也做了大量的工作,但我要说的,学生们不止要从最近的知识中学习,还要向过去的那些大师们学习。
JavaScript从最初的开发到现在,什么是让你最骄傲的?
应该是把优秀的函数和对象原型结合到了一起。对于一个已经标准化的产品,我不会说他有多么完美,因为标准化的过程中扩充了不少的内容,其中包含一些错误。但抛出一些小失误和人为原因,核心的思想完全经住了时间的考验。
JavaScript的不断发展和流行给你带来过什么惊喜么?
JavaScript的流行给了我不小的惊喜。我在很长一段时间里,心里已经默认JavaScript是不会流行的了。原因当然包括那些讨厌的弹出 窗口,但更多是由于这种自由组合的函数和基于原型的对象编程的传统。但后来结果发现,很多程序员本来就是从JavaScript开始学习编程的,还有一些擅长面向对象编程的程序员,很喜欢这种非传统的组合。
你怎样看待像Flash这样不断流行的插件对JavaScript的流行度带来的影响?
Flash 在尽力做到完善的支持Ajax,可以编写脚本,可以在外部访问,和其他插件、像图片和表格这样的内置对象、纯粹的JavaScript对 象一样,以组件的方式嵌入到网页中。开放的网络对待每项技术都是一视同仁的,这也确实妨碍了单一厂商的一枝独秀。你可以通过Flash怎样在Web 2.0的世界中畅游,和微软的Silverlight也瞄准了现代Web世界这个大蛋糕看出一些端倪。
人们不想回到一家厂商的插件充斥着整个网页的时代,所有的网站也会这么想。
首先,展示在最前沿浏览器中的Web标准正在不断进化,并努力与Flash和Silverlight在视频、动画、高性能JavaScript等方面分庭抗争。其次,没有网站愿意为了“bling”而牺牲“reach”。和插件始终存在不足相比,浏览器天生就会支持各种Web标准,比如JavaScript。用户不会经常更新他们的插件,用户也会拒绝使用某个插件,但会信任并继续使用浏览器。
JavaScript最初的核心思想是什么
Web因为它涵盖的范围非常广,这是无论多么流行的设备都无法比拟的,但在Web开发上,你会有很多选择的余地来进行开发 JavaScript最开始的被误解,除了它是讨厌的弹出窗口的始作俑者外,更重要的原因在于JavaScript其自身很“怪”的一种特性,就是“自由组合的函数”和“基于原型的对象编程”,并不为当时擅长面向对象编程的程序员所接受。 JavaScript的影响在不断增长,它不仅已经成为浏览器中脚本的标准,还会成为台式机和其他设备(比如iPhone)中脚本的标准。 JavaScript把优秀的函数和对象原型结合到了一起,核心的思想完全经住了时间的考验。
——这就是JavaScript最初的核心思想。
大部分的JavaScript都是手写的,我也希望这种情况会一直延续下去。