精华内容
下载资源
问答
  • JavaScript创始人Brendan Eich访谈录   Brendan Eich于1995年在Netscape发明了JavaScript语言,这个语言在过去的一些年里曾是一个最被误解的语言,随着AJAX和Web 2.0的发展,人们逐渐正视JavaScript。这是一篇...

                               JavaScript创始人Brendan Eich访谈录

     


    Brendan Eich于1995年在Netscape发明了JavaScript语言,这个语言在过去的一些年里曾是一个最被误解的语言,随着AJAX和Web 2.0的发展,人们逐渐正视JavaScript。这是一篇Computerworld对Brendan Eich的一次采访,对JavaScript的过去、现在和未来都做了阐述。

    是什么促使你去开发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这样的脚本语言,我们可以控制网页上的元素,更改他们的属性并响应事件。可以设想这样一个更具有活力的网络,只通过一些网页就可以实现以前应用程序才能实现的效果。

    实际上,一些早期的开发者从1995年下半年就开始通过JavaScript和framesets中的框架来构建Web应用程序,这应该是最早的 ”Ajax“或者”Web 2.0“风格的Web应用程序,但是采用这种方式开发会导致机器速度变慢。JavaScript在最初的时候就有一个操作浏览器的函数库,但这个库的功能 很有限。和服务器之间的通讯方法也仅限于重新加载整个网页。

    JavaScript和Java在本质上是不相干的,但为什么要给他取这个名字呢?


    通过上面的链接,在我的博客中可以找到答案。

    JavaScript最初的名字Mocha和LiveScript是根据什么起的?

    Mocha是Marc Andreessen起的项目名称,但Netscape的市场部发现这个名字存在潜在的商标冲突,所以对外决定启用新的名称,他们为Netscape的产 品名称启用了Live这个前缀,比如LiveWire、LiveScript等。但在1995-1996这个时间,Java的发展势头太猛了,所以大家决 定沾沾光,把名字修改为JavaScript。

    JavaScript和ECMAScript有什么不同?

    ECMA-262第三版是ECMAScript标准的最新版本。第一版的制定建立在我在Netscape时的工作成果,同时吸收了JScript(微软在IE平台上对JavaScript进行反向工程的成果)的内容,还包括Borland和少数其他公司的成果。

    ECMA-262第三版明确允许对之进行各种扩展,JavaScript所能作的就比标准多得多,这门语言的演化已经赶在了当前执行标准的前面。 比如Mozilla的SpiderMonkey(SpiderMonkey也是Firefox中的JavaScript引擎)和Rhino引擎。

    Ecma标准只是描述了核心的语言,不包括DOM,大家还是会把DOM当成JavaScript的一部分看待。

    你认为JavaScript和JScript是两个可以或者应该互相被替换的术语么?


    在跨浏览器的文档和书籍中,当提到这门语言,没有人会使用JScript。JavaScript才是这些书籍、文档、参考手册等中使用的名字,无论你认为这个名字好还是坏,JavaScript就是这个语言的真实名字。

    在JavaScript的开发过程中,遇到过什么必须面对而且特别困难或者讨厌的问题么?


    在语言的设计阶段冻结以后,每一个小的开发周期主要就是在检验设计时的想法。我在1995年的5月,用了大概10天的时间开发解释器,包括除了 Date对象以外的其它内置对象。在这期间,Netscape的Ken Smith用C语言重写了Java的java.util.Date类,这个类的千年虫Bug也在无意间被带进了JavaScript。

    1995年剩下的日子,我的工作就是把这个引擎嵌入到Netscape浏览器中,并建立那个后来十分著名的DOM(文档对象模型),准确的说应该 是第0级DOM,这时候已经可以在JavaScript中通过一系列函数接口控制窗口、文档、链接、图片等对象了,并可以响应事件和通过定时器运行代码。

    在1996年中期以前,在Netscape只有我一个人在做JavaScript的开发。

    在你所见过的用JavaScript编写的程序中,你认为哪个是最有趣的?


    TIBET是早期很有野心的一个模仿Smalltalk的框架。

    现在有很多用JavaScript写的程序非常叹为观止。比如HotRuby,在这里可以看到更多的内容,这个程序完全可以让用户在浏览器中通过JavaScript运行Ruby的代码。有人还用JavaScript实现了一个Java虚拟机,叫做Orto,在这里可以看到更多的信息,需要注意的是,我不确定Orto究竟实现了Java虚拟机多少的功能,但确实人人都说这是一个非常出色的程序。

    还有很多用JavaScript编写的游戏,这其中有新开发的,也有从其他平台移植过来的,比如以下两个:

    http://blog.nihilogic.dk/2008/04/super-mario-in-14kb-javascript.html
    http://canvex.lazyilluminati.com/83/play.xhtml

    John Resig移植的Processing Visualization Language是我认为最棒的。

    你见过最差的是哪一个?


    我可能选不出一个最差的JavaScript程序。但老实说在过去,JavaScript主要被用来做弹出窗口,在状态栏滚动文字等这些令人讨厌 的事情。一个像Firefox这样的好浏览器,提供带有默认值的用户控件来实现功能,Netscape在最开始也应该这样做,这样JavaScript就 不会被滥用了。

    你知道有什么JavaScript的应用是在你最初计划之外的么?如果有,是什么?这个应用现在运作得怎么样?

    上面提到Orto这个Java虚拟机就在我当初的意料之外。我不想让JavaScript通过GWT、HaXe或者类似的代码生成器,成为一个“目标(target)”语言,这是另外一种解释语言,在这里JavaScript只是一个对象,或者经过编译可以执行的语言。

    这些代码生成器把JavaScript当成一个安全的中间语言来使用,介于运行于服务器端的高级语言和经过优化的运行于浏览器中的C或者C++代 码。这将过分在JavaScript引擎的代码中强调性能,潜在上会把更多的大部分开发者不会使用的特性填充到Ecma标准中去。

    用这些工具生成的JavaScript代码运行时看起来很“有效”,但从某种意义上说,JavaScripty已经有足够好并且会越来越好的性 能,每个人都想把JavaScript的性能最大化。但是大部分的JavaScript都是手写的,我也希望这种情况会一直延续下去。

    似乎有很多跨站脚本攻击都是通过JavaScript开发的,对于这方面你有什么看法?现在有什么计划来解决这个问题么?

    是的,在这方面我们现在有具体的计划。一方面通过W3C这样的组织制定标准,另一方面通过Web开发者必须遵守的内容约束。更多的内容可以参考下面这个文档:

    http://www.gerv.net/security/content-restrictions/

    Mozilla的缺陷跟踪系统可以确保这些限制的实施:

    https://bugzilla.mozilla.org/show_bug.cgi?id=390910

    你预计JavaScript的下个版本会在什么时候发布?你认为哪些改进会被整合到新版本中?

    ECMA-262标准的3.1版预计会在2009年年中的时候出炉,我希望一个协调的第四版会在接下来的一年中诞生。我相信无论对于我自己,还是 对于委员会中的每位委员,经过多种多样可操作的雏形实现验证的新版本规范,比定下某个特定日期,在这个日期前必须发布一个法律上认可的但却贸然上线的规范 更加重要。但根据现在的努力,3.1版在短期内就可以实现,而一个协调的第四大版有望在一到两年内成为与3.1兼容的继任者。

    3.1版本的规范,主要致力于修复现有的缺陷,整合一些已经被SpiderMonkey(比如getters和setters)和其他浏览器中的引擎开发出来的功能,以及为对象和属性提供更加完善的功能。(现在的对象不能被继承,属性也不能被重写等问题)。

    紧随3.1版本的这个主要版本,所有的改进都会基于3.1版本的基础上,致力于易用性(包括新语法)、模块化以及更多更完善的功能。总的来说,这个版本就会成为终结使用全局函数进行JavaScript编程的现状的一个解决方案。

    你认为JavayScript在Web 2.0中扮演什么样的角色?


    很明显,JavaScript对于“Ajax”或者“Web 2.0”这场革命来说,是必不可少的组成部分。我还要说,Firefox、Safari和其他新浏览器之间的竞争,以及由于这些竞争所催生的新标准,同样很重要。

    真正的程序都可以运行在浏览器中,而且这些程序都是用JavaScript写的。

    这就使JavaScript不得不变得十分强大,作为可以运行在现存所有浏览器中的前提。这些浏览器甚至包括微软在新千年的头五年勉强维护的IE 5.5和IE 6.0。因此可以用支柱(tap root)来形容JavaScript。

    你怎样看待这些年来反对JavaScript的“共鸣”声音?


    对我来说这些“共鸣”主要有几个方面:

    * 早期的异议主要是反对把脚本语言直接嵌入到HTML中的。

    * 对JavaScript开启的一些讨厌的功能的排斥(在Firefox出现以前,缺乏完善的控件支持,比如弹出式窗口等)。

    * 不同浏览器对DOM的兼容性不同,这让开发者感到很头痛。让JavaScript可以更好的兼容所有的浏览器,同样很头痛。

    * 当然,有人对Netscape市场部在JavaScript命名时的花招一直耿耿于怀,因为这暗示着JavaScript和Java存在联系,不然的话就 是故意传播JavaScript和Java之间的混乱(必须郑重声明,Netscape的所有人都不想故意传播这种混乱)。

    这些反对的共鸣都是可以理解的。无论是在网络上、在多用户操作系统中还是在各种兼容的浏览器中,JavaScript都是提供互动性的唯一的编程 语言(比其他所有平台都大)。其它的编程语言都是通过插件的形式,而且都是同一家公司开发的,这样就可以通过代码的方式来控制操作性。因此,使用 JavaScript和DOM进行开发,曾经是一个很困难的经历。

    这无助于Netscape和Microsoft的浏览器战争,猛烈的创新革命促使标准化的过早到来,而且这场战争的结束导致了多年来对JavaScript的忽视,和在IE的垄断下制定各种Web标准。

    另一方面,很多开发者都声称自己喜欢做JavaScript的开发,而且自从2004年以后,伴随着“Ajax”和“Web 2.0”的出现,JavaScript正迎来自己的新生。

    你怎样看待JavaScript对未来的影响?你认为在网络上是否会出现新的客户端脚本语言?

    我认为JavaScript暂时还是默认的,也是唯一需要的浏览器编程语言。但是其它语言也会在浏览器中被支持,开始的时候可能只在某个浏览器中 被支持,最终会演变为跨浏览器的标准形式。Mozilla的浏览器,包括 Firefox,现在已经有选择的整合了C-Python,但是有很多工作还是要由你自己来做,你还要确保你的用户已经安装了C-Python运行库。我 们现在正致力于通过安全地、可兼容地以及可以自动更新的运行库来支持更多流行的语言。

    现在已经很清楚,Web的客户端是很值得进行编程的,这与1995年Marc Andreessen和我预料的一样。现在世界上的台式电脑和笔记本有足够强大的运算能力和存储空间,和以往任何时间相比,都可以做更多有用的任务,不限 制他们的自动化能力,把表单或者消息提交给Web服务器上真正的程序。真正的程序同样可以运行在浏览器中,而且他们是用JavaScript写的。

    JavaScript的影响在不断增长,它不仅已经成为浏览器中脚本的标准,还会成为台式机和其他设备(比如iPhone)中脚本的标准。

    你怎样看待最近发布的JavaScript框架,比如SproutCode和Objective-J/Cappuccino?你认为他们会给未来的Web应用程序带来什么影响?

    Apple的炒作机器无疑使一些人把这个产品当成了Ajax的第二代。对我来说,他们只是进化在不同阶段的JavaScript库和框架而已。包 括 Google GWT和一些比较流行的库,比如Dojo、JQuery、YUI以及Prototype。我不大想看到某个框架或者库过于强大,至少不希望会持续很多年, 最好他们只是在Web的某个领域很流行。在某些特定的设备上开发,你当然没有什么选择的余地,但在Web上就不一样,因为它涵盖的范围非常广,这是无论多 么流行的设备都无法比拟的。

    你认为我们有可能会看到桌面应用程序最终走向灭亡么?


    我认为不会,但你会看到更多使用Web技术构建的桌面应用程序,他们甚至是安装在本地的,而不是储存在某个Web服务器主机中。当然Web应用程 序也会持续不断的发展。伴随着JavaScript的成长和其他基于浏览器的Web标准的诞生,我们将能看到Web应用程序可以做更多的互动行的工作,而 这些工作以前都是必须使用桌面应用程序来完成的。我们已经在前沿的浏览器中看到离线应用、二维和三维渲染等已经变为事实。

    你怎样看待像Flash这样不断流行的插件对JavaScript的流行度带来的影响?

    Flash在尽力做到完善的支持Ajax,可以编写脚本,可以在外部访问,和其他插件、像图片和表格这样的内置对象、纯粹的JavaScript 对象一样,以组件的方式嵌入到网页中。开放的网络对待每项技术都是一视同仁的,这也确实妨碍了单一厂商的一枝独秀。你可以通过Flash怎样在Web 2.0的世界中畅游,和微软的Silverlight也瞄准了现代Web世界这个大蛋糕看出一些端倪。

    人们不想回到一家厂商的插件充斥着整个网页的时代,所有的网站也会这么想。

    首先,展示在最前沿浏览器中的Web标准正在不断进化,并努力与Flash和Silverlight在视频、动画、高性能JavaScript等方面分庭抗争。

    其次,没有网站愿意为了“bling”而牺牲“reach”。和插件始终存在不足相比,浏览器天生就会支持各种Web标准,比如JavaScript。用户不会经常更新他们的插件,用户也会拒绝使用某个插件,但会信任并继续使用浏览器。

    你认为JavaScript将来会在哪些地方延伸?


    首先自然会在浏览器中,但以后可能会更广,比如在服务器端,或者成为一个端到端的编程语言(更多的替代传统意义上桌面或操作系统的脚本职责)。

    你是否依旧认为(就像你之前说过的)“ECMAScript和皮肤病一样,只是一个多余的商业名称而已”?

    我没有印象说过这句话,但是有一点很确认:这不是一个理想的名字,而且听起来有点像湿疹(eczema)。

    你是否依然预计ECMA-262会在2008年10月前发布?你是否期望新版本将会完全向后不兼容?

    如果你说的是ECMA-262的第四版,那我的答案肯定是不,我们不指望这个版本会在2008年发布。负责下一个版本的技术委员会(ECMA TC39)正在努力协调各种提议,协调的结果将包含一个短期的3.1版本,这将在2009年春天发布,还包括一个接下来发布的更大的版本(其实也不是特别 大),我们称之为ECMA-262第四版。

    JavaScript的不断发展和流行给你带来过什么惊喜么?

    JavaScript的流行给了我不小的惊喜。我在很长一段时间里,心里已经默认JavaScript是不会流行的了。原因当然包括那些讨厌的弹 出窗口,但更多是由于这种自由组合的函数和基于原型的对象编程的传统。但后来结果发现,很多程序员本来就是从JavaScript开始学习编程的,还有一 些擅长面向对象编程的程序员,很喜欢这种非传统的组合。

    JavaScript从最初的开发到现在,什么是让你最骄傲的?


    应该是把优秀的函数和对象原型结合到了一起。对于一个已经标准化的产品,我不会说他有多么完美,因为标准化的过程中扩充了不少的内容,其中包含一些错误。但抛出一些小失误和人为原因,核心的思想完全经住了时间的考验。

    你认为编程语言会朝什么方向发展?尤其是在接下来的5-20年间?


    未来的编程语言必须在我们都要面对的两个方面做得更好:

    * 多核/大规模并行计算机现在已经出现在大家的身边,现在只是出现在台式机上,不久移动设备也会具有相应的能力。计算机科学家们在最近的十五年里,正在努力 使并行计算可以做更多有用的事情,也更加容易使用。JavaScript在多核的世界里面有自己的角色需要扮演,从相对简单的扩展开始,比如Google Gear的工作池,“零共享(shared nothing)”的后台线程,通过浏览器中的JavaScript互相发送和接收消息进行通讯。

    * 安全。一个编程语言无法用自身建立起来的安全体系保证安全,因为安全是一套系统属性,涵盖所有层次的抽象,包括上游和下游的语言。但一个编程语言当然可以向用户提供各种更好或者更差的工具来构建安全系统,并证明这些安全属性可以在这个编程语言中得到保证。

    你对那些未来的程序员有什么建议么?

    学习大师们的经典著作:Knuth、Wirth和Hoare。计算机科学就像一个滚动的轮胎,在学术研究方面,每10-20年就会重复发现一些以 前曾经被发现过的东西。当然,近些年来大家也做了大量的工作,但我要说的,学生们不止要从最近的知识中学习,还要向过去的那些大师们学习。

    你还有什么要补充的么?


    目前没有了,而且我要回去工作了。

    展开全文
  • JavaScript创始人Brendan Eich访谈录 BrendanEich于1995年在Netscape发明了JavaScript语言,这个语言在过去的一些年里曾是一个最被误解的语言,随着AJAX和Web2.0的发展,人们逐渐正视JavaScript。这是一篇...

    JavaScript创始人Brendan Eich访谈录

    Brendan Eich于1995年在Netscape发明了JavaScript语言,这个语言在过去的一些年里曾是一个最被误解的语言,随着AJAX和Web 2.0的发展,人们逐渐正视JavaScript。这是一篇Computerworld对Brendan Eich的一次采访,对JavaScript的过去、现在和未来都做了阐述。

    是什么促使你去开发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这样的脚本语言,我们可以控制网 页上的元素,更改他们的属性并响应事件。可以设想这样一个更具有活力的网络,只通过一些网页就可以实现以前应用程序才能实现的效果。 

    实际上,一些早期的开发者从1995年下半年就开始通过JavaScript和framesets中的框架来构建Web应用程序,这应该是最早的 ”Ajax“或者”Web 2.0“风格的Web应用程序,但是采用这种方式开发会导致机器速度变慢。JavaScript在最初的时候就有一个操作浏览器的函数库,但这个库的功能 很有限。和服务器之间的通讯方法也仅限于重新加载整个网页。 

    JavaScript和Java在本质上是不相干的,但为什么要给他取这个名字呢?
     

    通过上面的链接,在我的博客中可以找到答案。 

    JavaScript最初的名字Mocha和LiveScript是根据什么起的? 

    Mocha是Marc Andreessen起的项目名称,但Netscape的市场部发现这个名字存在潜在的商标冲突,所以对外决定启用新的名称,他们为Netscape的产 品名称启用了Live这个前缀,比如LiveWire、LiveScript等。但在1995-1996这个时间,Java的发展势头太猛了,所以大家决 定沾沾光,把名字修改为JavaScript。 

    JavaScript和ECMAScript有什么不同? 

    ECMA-262第三版是ECMAScript标准的最新版本。第一版的制定建立在我在Netscape时的工作成果,同时吸收了JScript(微软在IE平台上对JavaScript进行反向工程的成果)的内容,还包括Borland和少数其他公司的成果。 

    ECMA-262第三版明确允许对之进行各种扩展,JavaScript所能作的就比标准多得多,这门语言的演化已经赶在了当前执行标准的前面。 比如Mozilla的SpiderMonkey(SpiderMonkey也是Firefox中的JavaScript引擎)和Rhino引擎。 

    Ecma标准只是描述了核心的语言,不包括DOM,大家还是会把DOM当成JavaScript的一部分看待。 

    你认为JavaScript和JScript是两个可以或者应该互相被替换的术语么?
     

    在跨浏览器的文档和书籍中,当提到这门语言,没有人会使用JScript。JavaScript才是这些书籍、文档、参考手册等中使用的名字,无论你认为这个名字好还是坏,JavaScript就是这个语言的真实名字。 

    在JavaScript的开发过程中,遇到过什么必须面对而且特别困难或者讨厌的问题么?
     

    在语言的设计阶段冻结以后,每一个小的开发周期主要就是在检验设计时的想法。我在1995年的5月,用了大概10天的时间开发解释器,包括除了 Date对象以外的其它内置对象。在这期间,Netscape的Ken Smith用C语言重写了Java的java.util.Date类,这个类的千年虫Bug也在无意间被带进了JavaScript。 

    1995年剩下的日子,我的工作就是把这个引擎嵌入到Netscape浏览器中,并建立那个后来十分著名的DOM(文档对象模型),准确的说应该 是第0级DOM,这时候已经可以在JavaScript中通过一系列函数接口控制窗口、文档、链接、图片等对象了,并可以响应事件和通过定时器运行代码。  

    在1996年中期以前,在Netscape只有我一个人在做JavaScript的开发。 

    在你所见过的用JavaScript编写的程序中,你认为哪个是最有趣的?
     

    TIBET是早期很有野心的一个模仿Smalltalk的框架。 

    现在有很多用JavaScript写的程序非常叹为观止。比如HotRuby,在这里可以看到更多的内容,这个程序完全可以让用户在浏览器中通过JavaScript运行Ruby的代码。有人还用JavaScript实现了一个Java虚拟机,叫做Orto,在这里可以看到更多的信息,需要注意的是,我不确定Orto究竟实现了Java虚拟机多少的功能,但确实人人都说这是一个非常出色的程序。 

    还有很多用JavaScript编写的游戏,这其中有新开发的,也有从其他平台移植过来的,比如以下两个: 

    http://blog.nihilogic.dk/2008/04/super-mario-in-14kb-javascript.html 
    http://canvex.lazyilluminati.com/83/play.xhtml 

    John Resig移植的Processing Visualization Language是我认为最棒的。 

    你见过最差的是哪一个?
     

    我可能选不出一个最差的JavaScript程序。但老实说在过去,JavaScript主要被用来做弹出窗口,在状态栏滚动文字等这些令人讨厌 的事情。一个像Firefox这样的好浏览器,提供带有默认值的用户控件来实现功能,Netscape在最开始也应该这样做,这样JavaScript就 不会被滥用了。 

    你知道有什么JavaScript的应用是在你最初计划之外的么?如果有,是什么?这个应用现在运作得怎么样? 

    上面提到Orto这个Java虚拟机就在我当初的意料之外。我不想让JavaScript通过GWT、HaXe或者类似的代码生成器,成为一个“目标(target)”语言,这是另外一种解释语言,在这里JavaScript只是一个对象,或者经过编译可以执行的语言。 

    这些代码生成器把JavaScript当成一个安全的中间语言来使用,介于运行于服务器端的高级语言和经过优化的运行于浏览器中的C或者C++代 码。这将过分在JavaScript引擎的代码中强调性能,潜在上会把更多的大部分开发者不会使用的特性填充到Ecma标准中去。 

    用这些工具生成的JavaScript代码运行时看起来很“有效”,但从某种意义上说,JavaScripty已经有足够好并且会越来越好的性 能,每个人都想把JavaScript的性能最大化。但是大部分的JavaScript都是手写的,我也希望这种情况会一直延续下去。 

    似乎有很多跨站脚本攻击都是通过JavaScript开发的,对于这方面你有什么看法?现在有什么计划来解决这个问题么? 

    是的,在这方面我们现在有具体的计划。一方面通过W3C这样的组织制定标准,另一方面通过Web开发者必须遵守的内容约束。更多的内容可以参考下面这个文档: 

    http://www.gerv.net/security/content-restrictions/ 

    Mozilla的缺陷跟踪系统可以确保这些限制的实施: 

    https://bugzilla.mozilla.org/show_bug.cgi?id=390910 

    你预计JavaScript的下个版本会在什么时候发布?你认为哪些改进会被整合到新版本中? 

    ECMA-262标准的3.1版预计会在2009年年中的时候出炉,我希望一个协调的第四版会在接下来的一年中诞生。我相信无论对于我自己,还是 对于委员会中的每位委员,经过多种多样可操作的雏形实现验证的新版本规范,比定下某个特定日期,在这个日期前必须发布一个法律上认可的但却贸然上线的规范 更加重要。但根据现在的努力,3.1版在短期内就可以实现,而一个协调的第四大版有望在一到两年内成为与3.1兼容的继任者。 

    3.1版本的规范,主要致力于修复现有的缺陷,整合一些已经被SpiderMonkey(比如getters和setters)和其他浏览器中的引擎开发出来的功能,以及为对象和属性提供更加完善的功能。(现在的对象不能被继承,属性也不能被重写等问题)。 

    紧随3.1版本的这个主要版本,所有的改进都会基于3.1版本的基础上,致力于易用性(包括新语法)、模块化以及更多更完善的功能。总的来说,这个版本就会成为终结使用全局函数进行JavaScript编程的现状的一个解决方案。 

    你认为JavayScript在Web 2.0中扮演什么样的角色?
     

    很明显,JavaScript对于“Ajax”或者“Web 2.0”这场革命来说,是必不可少的组成部分。我还要说,Firefox、Safari和其他新浏览器之间的竞争,以及由于这些竞争所催生的新标准,同样很重要。 

    真正的程序都可以运行在浏览器中,而且这些程序都是用JavaScript写的。 

    这就使JavaScript不得不变得十分强大,作为可以运行在现存所有浏览器中的前提。这些浏览器甚至包括微软在新千年的头五年勉强维护的IE 5.5和IE 6.0。因此可以用支柱(tap root)来形容JavaScript。 

    你怎样看待这些年来反对JavaScript的“共鸣”声音?
     

    对我来说这些“共鸣”主要有几个方面: 

    * 早期的异议主要是反对把脚本语言直接嵌入到HTML中的。 

    * 对JavaScript开启的一些讨厌的功能的排斥(在Firefox出现以前,缺乏完善的控件支持,比如弹出式窗口等)。 

    * 不同浏览器对DOM的兼容性不同,这让开发者感到很头痛。让JavaScript可以更好的兼容所有的浏览器,同样很头痛。 

    * 当然,有人对Netscape市场部在JavaScript命名时的花招一直耿耿于怀,因为这暗示着JavaScript和Java存在联系,不然的话就 是故意传播JavaScript和Java之间的混乱(必须郑重声明,Netscape的所有人都不想故意传播这种混乱)。 

    这些反对的共鸣都是可以理解的。无论是在网络上、在多用户操作系统中还是在各种兼容的浏览器中,JavaScript都是提供互动性的唯一的编程 语言(比其他所有平台都大)。其它的编程语言都是通过插件的形式,而且都是同一家公司开发的,这样就可以通过代码的方式来控制操作性。因此,使用 JavaScript和DOM进行开发,曾经是一个很困难的经历。 

    这无助于Netscape和Microsoft的浏览器战争,猛烈的创新革命促使标准化的过早到来,而且这场战争的结束导致了多年来对JavaScript的忽视,和在IE的垄断下制定各种Web标准。 

    另一方面,很多开发者都声称自己喜欢做JavaScript的开发,而且自从2004年以后,伴随着“Ajax”和“Web 2.0”的出现,JavaScript正迎来自己的新生。 

    你怎样看待JavaScript对未来的影响?你认为在网络上是否会出现新的客户端脚本语言? 

    我认为JavaScript暂时还是默认的,也是唯一需要的浏览器编程语言。但是其它语言也会在浏览器中被支持,开始的时候可能只在某个浏览器中 被支持,最终会演变为跨浏览器的标准形式。Mozilla的浏览器,包括 Firefox,现在已经有选择的整合了C-Python,但是有很多工作还是要由你自己来做,你还要确保你的用户已经安装了C-Python运行库。我 们现在正致力于通过安全地、可兼容地以及可以自动更新的运行库来支持更多流行的语言。 

    现在已经很清楚,Web的客户端是很值得进行编程的,这与1995年Marc Andreessen和我预料的一样。现在世界上的台式电脑和笔记本有足够强大的运算能力和存储空间,和以往任何时间相比,都可以做更多有用的任务,不限 制他们的自动化能力,把表单或者消息提交给Web服务器上真正的程序。真正的程序同样可以运行在浏览器中,而且他们是用JavaScript写的。 

    JavaScript的影响在不断增长,它不仅已经成为浏览器中脚本的标准,还会成为台式机和其他设备(比如iPhone)中脚本的标准。 

    你怎样看待最近发布的JavaScript框架,比如SproutCode和Objective-J/Cappuccino?你认为他们会给未来的Web应用程序带来什么影响? 

    Apple的炒作机器无疑使一些人把这个产品当成了Ajax的第二代。对我来说,他们只是进化在不同阶段的JavaScript库和框架而已。包 括 Google GWT和一些比较流行的库,比如Dojo、JQuery、YUI以及Prototype。我不大想看到某个框架或者库过于强大,至少不希望会持续很多年, 最好他们只是在Web的某个领域很流行。在某些特定的设备上开发,你当然没有什么选择的余地,但在Web上就不一样,因为它涵盖的范围非常广,这是无论多 么流行的设备都无法比拟的。 

    你认为我们有可能会看到桌面应用程序最终走向灭亡么?
     

    我认为不会,但你会看到更多使用Web技术构建的桌面应用程序,他们甚至是安装在本地的,而不是储存在某个Web服务器主机中。当然Web应用程 序也会持续不断的发展。伴随着JavaScript的成长和其他基于浏览器的Web标准的诞生,我们将能看到Web应用程序可以做更多的互动行的工作,而 这些工作以前都是必须使用桌面应用程序来完成的。我们已经在前沿的浏览器中看到离线应用、二维和三维渲染等已经变为事实。 

    你怎样看待像Flash这样不断流行的插件对JavaScript的流行度带来的影响? 

    Flash在尽力做到完善的支持Ajax,可以编写脚本,可以在外部访问,和其他插件、像图片和表格这样的内置对象、纯粹的JavaScript 对象一样,以组件的方式嵌入到网页中。开放的网络对待每项技术都是一视同仁的,这也确实妨碍了单一厂商的一枝独秀。你可以通过Flash怎样在Web 2.0的世界中畅游,和微软的Silverlight也瞄准了现代Web世界这个大蛋糕看出一些端倪。 

    人们不想回到一家厂商的插件充斥着整个网页的时代,所有的网站也会这么想。 

    首先,展示在最前沿浏览器中的Web标准正在不断进化,并努力与Flash和Silverlight在视频、动画、高性能JavaScript等方面分庭抗争。 

    其次,没有网站愿意为了“bling”而牺牲“reach”。和插件始终存在不足相比,浏览器天生就会支持各种Web标准,比如JavaScript。用户不会经常更新他们的插件,用户也会拒绝使用某个插件,但会信任并继续使用浏览器。 

    你认为JavaScript将来会在哪些地方延伸?
     

    首先自然会在浏览器中,但以后可能会更广,比如在服务器端,或者成为一个端到端的编程语言(更多的替代传统意义上桌面或操作系统的脚本职责)。 

    你是否依旧认为(就像你之前说过的)“ECMAScript和皮肤病一样,只是一个多余的商业名称而已”? 

    我没有印象说过这句话,但是有一点很确认:这不是一个理想的名字,而且听起来有点像湿疹(eczema)。 

    你是否依然预计ECMA-262会在2008年10月前发布?你是否期望新版本将会完全向后不兼容? 

    如果你说的是ECMA-262的第四版,那我的答案肯定是不,我们不指望这个版本会在2008年发布。负责下一个版本的技术委员会(ECMA TC39)正在努力协调各种提议,协调的结果将包含一个短期的3.1版本,这将在2009年春天发布,还包括一个接下来发布的更大的版本(其实也不是特别 大),我们称之为ECMA-262第四版。 

    JavaScript的不断发展和流行给你带来过什么惊喜么? 

    JavaScript的流行给了我不小的惊喜。我在很长一段时间里,心里已经默认JavaScript是不会流行的了。原因当然包括那些讨厌的弹 出窗口,但更多是由于这种自由组合的函数和基于原型的对象编程的传统。但后来结果发现,很多程序员本来就是从JavaScript开始学习编程的,还有一 些擅长面向对象编程的程序员,很喜欢这种非传统的组合。 

    JavaScript从最初的开发到现在,什么是让你最骄傲的?
     

    应该是把优秀的函数和对象原型结合到了一起。对于一个已经标准化的产品,我不会说他有多么完美,因为标准化的过程中扩充了不少的内容,其中包含一些错误。但抛出一些小失误和人为原因,核心的思想完全经住了时间的考验。 

    你认为编程语言会朝什么方向发展?尤其是在接下来的5-20年间?
     

    未来的编程语言必须在我们都要面对的两个方面做得更好: 

    * 多核/大规模并行计算机现在已经出现在大家的身边,现在只是出现在台式机上,不久移动设备也会具有相应的能力。计算机科学家们在最近的十五年里,正在努力 使并行计算可以做更多有用的事情,也更加容易使用。JavaScript在多核的世界里面有自己的角色需要扮演,从相对简单的扩展开始,比如Google Gear的工作池,“零共享(shared nothing)”的后台线程,通过浏览器中的JavaScript互相发送和接收消息进行通讯。 

    * 安全。一个编程语言无法用自身建立起来的安全体系保证安全,因为安全是一套系统属性,涵盖所有层次的抽象,包括上游和下游的语言。但一个编程语言当然可以向用户提供各种更好或者更差的工具来构建安全系统,并证明这些安全属性可以在这个编程语言中得到保证。 

    你对那些未来的程序员有什么建议么? 

    学习大师们的经典著作:Knuth、Wirth和Hoare。计算机科学就像一个滚动的轮胎,在学术研究方面,每10-20年就会重复发现一些以 前曾经被发现过的东西。当然,近些年来大家也做了大量的工作,但我要说的,学生们不止要从最近的知识中学习,还要向过去的那些大师们学习。 

    你还有什么要补充的么?
     

    目前没有了,而且我要回去工作了。


    来源:http://www.zhan2.com/?p=3078

    展开全文
  • Native Client是Google支持的开源技术,用来在浏览器中像桌面程序一样运行编译过的代码,满足...\JavaScript创始人Brendan Eich上个月在旧金山召开的O'Reilly Fluent ConfereNative Cliente大会上解释说JavaScript...

    Native Client是Google支持的开源技术,用来在浏览器中像桌面程序一样运行编译过的代码,满足人们对web应用程序的可移植性和安全性的期望,提供更好的富客户端用户体验,允许开发者编写更强大的移动Web应用程序。

    \

    JavaScript创始人Brendan Eich上个月在旧金山召开的O'Reilly Fluent ConfereNative Cliente大会上解释说JavaScript足以满足Google对Native Client的设计目的,并怀疑Native Client是否能够像JavaScript一样,得到浏览器厂商的广泛支持

    \

    Eich认为JavaScript自17年前诞生起就能够在浏览器中安全运行可移植的本地代码,而且得到各大浏览器厂商如Apple、Microsoft、Mozilla的支持。而出品了Chrome浏览器的Google想要使Native Client获得同样的支持会比较困难,因其自己也是浏览器市场竞争者。

    \

    现任Mozilla的首席技术官Eich谈到JavaScript的可达性和内存安全等优点。或许是回应Native Client的“双沙箱”技术, Eich指出“JavaScript也能以沙箱运行,我们不需要Native Client”。 另外,Native Client支持C/C++程序员将代码编译为Native Client模块,从而获得类似JavaScript的可移植性。对此Eich引用Low Level JavaScript项目作为回应。该项目可以将代码编译为JavaScript,并提供类C语言类型系统的手动内存管理和内存安全特性。

    \

    Eich谈到下一个JavaScript官方升级版本- ECMAScript 6已经在Chrome和Spider Monkey引擎上揭开部分面纱,并将更好的支持应用程序、库和代码生成,他强调并不打算将JavaScript变成类似Java的东西。ECMAScript 6将包含字符串插值、代替undefined值的缺省值、对象索引等变化,并淘汰参数对象。Eich认为JavaScript将不断变化成为更好的编译目标语言,“有趣的是,人们以我所不能预见的方式在使用它”。

    \

    有人认为即使JavaScript V8引擎也要比Native Client慢上许多倍,JavaScript并不能胜任高性能移动应用,对此Eich认为与版本和CPU架构有关。 另外有人质疑JavaScript的创始人并不喜欢来自Native Cient的竞争,对此,Eich亲自现身称无论Native Client还是Dart语言,都很难赢得Chrome之外的浏览器支持

    \

    给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

    展开全文
  • Brendan Eich于1995年在Netscape发明了JavaScript语言,这个语言在过去的一些年里曾是一个最被误解的语言,随着AJAX和Web 2.0的发展,人们逐渐正视JavaScript。这是一篇Computerworld对Brendan Eich的一次采访,对...
      
    

    Brendan Eich于1995年在Netscape发明了JavaScript语言,这个语言在过去的一些年里曾是一个最被误解的语言,随着AJAX和Web 2.0的发展,人们逐渐正视JavaScript。这是一篇Computerworld对Brendan Eich的一次采访,对JavaScript的过去、现在和未来都做了阐述。

     

    是什么促使你去开发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这样的脚本语言,我们可以控制网页上的元素,更改他们的属性并响应事件。可以设想这样一个更具有活力的网络,只通过一些网页就可以实现以前应用程序才能实现的效果。

     

    实际上,一些早期的开发者从1995年下半年就开始通过JavaScript和framesets中的框架来构建Web应用程序,这应该是最早的 ”Ajax“或者”Web 2.0“风格的Web应用程序,但是采用这种方式开发会导致机器速度变慢。JavaScript在最初的时候就有一个操作浏览器的函数库,但这个库的功能 很有限。和服务器之间的通讯方法也仅限于重新加载整个网页。

     

    JavaScript和Java在本质上是不相干的,但为什么要给他取这个名字呢?

     

    通过上面的链接,在我的博客中可以找到答案。

     

    JavaScript最初的名字Mocha和LiveScript是根据什么起的?

     

    Mocha是Marc Andreessen起的项目名称,但Netscape的市场部发现这个名字存在潜在的商标冲突,所以对外决定启用新的名称,他们为Netscape的产 品名称启用了Live这个前缀,比如LiveWire、LiveScript等。但在1995-1996这个时间,Java的发展势头太猛了,所以大家决 定沾沾光,把名字修改为JavaScript。

     

    JavaScript和ECMAScript有什么不同?

     

    ECMA-262第三版是ECMAScript标准的最新版本。第一版的制定建立在我在Netscape时的工作成果,同时吸收了JScript(微软在IE平台上对JavaScript进行反向工程的成果)的内容,还包括Borland和少数其他公司的成果。

     

    ECMA-262第三版明确允许对之进行各种扩展,JavaScript所能作的就比标准多得多,这门语言的演化已经赶在了当前执行标准的前面。 比如Mozilla的SpiderMonkey(SpiderMonkey也是Firefox中的JavaScript引擎)和Rhino引擎。

     

    Ecma标准只是描述了核心的语言,不包括DOM,大家还是会把DOM当成JavaScript的一部分看待。

     

    你认为JavaScript和JScript是两个可以或者应该互相被替换的术语么?

     

    在跨浏览器的文档和书籍中,当提到这门语言,没有人会使用JScript。JavaScript才是这些书籍、文档、参考手册等中使用的名字,无论你认为这个名字好还是坏,JavaScript就是这个语言的真实名字。

     

    在JavaScript的开发过程中,遇到过什么必须面对而且特别困难或者讨厌的问题么?

     

    在语言的设计阶段冻结以后,每一个小的开发周期主要就是在检验设计时的想法。我在1995年的5月,用了大概10天的时间开发解释器,包括除了 Date对象以外的其它内置对象。在这期间,Netscape的Ken Smith用C语言重写了Java的java.util.Date类,这个类的千年虫Bug也在无意间被带进了JavaScript。

     

    1995年剩下的日子,我的工作就是把这个引擎嵌入到Netscape浏览器中,并建立那个后来十分著名的DOM(文档对象模型),准确的说应该 是第0级DOM,这时候已经可以在JavaScript中通过一系列函数接口控制窗口、文档、链接、图片等对象了,并可以响应事件和通过定时器运行代码。

     

    在1996年中期以前,在Netscape只有我一个人在做JavaScript的开发。

     

    在你所见过的用JavaScript编写的程序中,你认为哪个是最有趣的?

     

    TIBET是早期很有野心的一个模仿Smalltalk的框架。

     

    现在有很多用JavaScript写的程序非常叹为观止。比如HotRuby,在这里可以看到更多的内容,这个程序完全可以让用户在浏览器中通过JavaScript运行Ruby的代码。有人还用JavaScript实现了一个Java虚拟机,叫做Orto,在这里可以看到更多的信息,需要注意的是,我不确定Orto究竟实现了Java虚拟机多少的功能,但确实人人都说这是一个非常出色的程序。

     

    还有很多用JavaScript编写的游戏,这其中有新开发的,也有从其他平台移植过来的,比如以下两个:

     

    http://blog.nihilogic.dk/2008/04/super-mario-in-14kb-javascript.html
    http://canvex.lazyilluminati.com/83/play.xhtml

     

    John Resig移植的Processing Visualization Language是我认为最棒的。

     

    你见过最差的是哪一个?

     

    我可能选不出一个最差的JavaScript程序。但老实说在过去,JavaScript主要被用来做弹出窗口,在状态栏滚动文字等这些令人讨厌 的事情。一个像Firefox这样的好浏览器,提供带有默认值的用户控件来实现功能,Netscape在最开始也应该这样做,这样JavaScript就 不会被滥用了。

     

    你知道有什么JavaScript的应用是在你最初计划之外的么?如果有,是什么?这个应用现在运作得怎么样?

     

    上面提到Orto这个Java虚拟机就在我当初的意料之外。我不想让JavaScript通过GWT、HaXe或者类似的代码生成器,成为一个“目标(target)”语言,这是另外一种解释语言,在这里JavaScript只是一个对象,或者经过编译可以执行的语言。

     

    这些代码生成器把JavaScript当成一个安全的中间语言来使用,介于运行于服务器端的高级语言和经过优化的运行于浏览器中的C或者C++代 码。这将过分在JavaScript引擎的代码中强调性能,潜在上会把更多的大部分开发者不会使用的特性填充到Ecma标准中去。

     

    用这些工具生成的JavaScript代码运行时看起来很“有效”,但从某种意义上说,JavaScripty已经有足够好并且会越来越好的性 能,每个人都想把JavaScript的性能最大化。但是大部分的JavaScript都是手写的,我也希望这种情况会一直延续下去。

     

    似乎有很多跨站脚本攻击都是通过JavaScript开发的,对于这方面你有什么看法?现在有什么计划来解决这个问题么?

     

    是的,在这方面我们现在有具体的计划。一方面通过W3C这样的组织制定标准,另一方面通过Web开发者必须遵守的内容约束。更多的内容可以参考下面这个文档:

     

    http://www.gerv.net/security/content-restrictions/

     

    Mozilla的缺陷跟踪系统可以确保这些限制的实施:

     

    https://bugzilla.mozilla.org/show_bug.cgi?id=390910

     

    你预计JavaScript的下个版本会在什么时候发布?你认为哪些改进会被整合到新版本中?

     

    ECMA-262标准的3.1版预计会在2009年年中的时候出炉,我希望一个协调的第四版会在接下来的一年中诞生。我相信无论对于我自己,还是 对于委员会中的每位委员,经过多种多样可操作的雏形实现验证的新版本规范,比定下某个特定日期,在这个日期前必须发布一个法律上认可的但却贸然上线的规范 更加重要。但根据现在的努力,3.1版在短期内就可以实现,而一个协调的第四大版有望在一到两年内成为与3.1兼容的继任者。

     

    3.1版本的规范,主要致力于修复现有的缺陷,整合一些已经被SpiderMonkey(比如getters和setters)和其他浏览器中的引擎开发出来的功能,以及为对象和属性提供更加完善的功能。(现在的对象不能被继承,属性也不能被重写等问题)。

     

    紧随3.1版本的这个主要版本,所有的改进都会基于3.1版本的基础上,致力于易用性(包括新语法)、模块化以及更多更完善的功能。总的来说,这个版本就会成为终结使用全局函数进行JavaScript编程的现状的一个解决方案。

     

    你认为JavayScript在Web 2.0中扮演什么样的角色?

     

    很明显,JavaScript对于“Ajax”或者“Web 2.0”这场革命来说,是必不可少的组成部分。我还要说,Firefox、Safari和其他新浏览器之间的竞争,以及由于这些竞争所催生的新标准,同样很重要。

     

    真正的程序都可以运行在浏览器中,而且这些程序都是用JavaScript写的。

     

    这就使JavaScript不得不变得十分强大,作为可以运行在现存所有浏览器中的前提。这些浏览器甚至包括微软在新千年的头五年勉强维护的IE 5.5和IE 6.0。因此可以用支柱(tap root)来形容JavaScript。

     

    你怎样看待这些年来反对JavaScript的“共鸣”声音?

     

    对我来说这些“共鸣”主要有几个方面:

     

    * 早期的异议主要是反对把脚本语言直接嵌入到HTML中的。

     

    * 对JavaScript开启的一些讨厌的功能的排斥(在Firefox出现以前,缺乏完善的控件支持,比如弹出式窗口等)。

     

    * 不同浏览器对DOM的兼容性不同,这让开发者感到很头痛。让JavaScript可以更好的兼容所有的浏览器,同样很头痛。

     

    * 当然,有人对Netscape市场部在JavaScript命名时的花招一直耿耿于怀,因为这暗示着JavaScript和Java存在联系,不然的话就 是故意传播JavaScript和Java之间的混乱(必须郑重声明,Netscape的所有人都不想故意传播这种混乱)。

     

    这些反对的共鸣都是可以理解的。无论是在网络上、在多用户操作系统中还是在各种兼容的浏览器中,JavaScript都是提供互动性的唯一的编程 语言(比其他所有平台都大)。其它的编程语言都是通过插件的形式,而且都是同一家公司开发的,这样就可以通过代码的方式来控制操作性。因此,使用 JavaScript和DOM进行开发,曾经是一个很困难的经历。

     

    这无助于Netscape和Microsoft的浏览器战争,猛烈的创新革命促使标准化的过早到来,而且这场战争的结束导致了多年来对JavaScript的忽视,和在IE的垄断下制定各种Web标准。

     

    另一方面,很多开发者都声称自己喜欢做JavaScript的开发,而且自从2004年以后,伴随着“Ajax”和“Web 2.0”的出现,JavaScript正迎来自己的新生。

     

    你怎样看待JavaScript对未来的影响?你认为在网络上是否会出现新的客户端脚本语言?

     

    我认为JavaScript暂时还是默认的,也是唯一需要的浏览器编程语言。但是其它语言也会在浏览器中被支持,开始的时候可能只在某个浏览器中 被支持,最终会演变为跨浏览器的标准形式。Mozilla的浏览器,包括 Firefox,现在已经有选择的整合了C-Python,但是有很多工作还是要由你自己来做,你还要确保你的用户已经安装了C-Python运行库。我 们现在正致力于通过安全地、可兼容地以及可以自动更新的运行库来支持更多流行的语言。

     

    现在已经很清楚,Web的客户端是很值得进行编程的,这与1995年Marc Andreessen和我预料的一样。现在世界上的台式电脑和笔记本有足够强大的运算能力和存储空间,和以往任何时间相比,都可以做更多有用的任务,不限 制他们的自动化能力,把表单或者消息提交给Web服务器上真正的程序。真正的程序同样可以运行在浏览器中,而且他们是用JavaScript写的。

     

    JavaScript的影响在不断增长,它不仅已经成为浏览器中脚本的标准,还会成为台式机和其他设备(比如iPhone)中脚本的标准。

     

    你怎样看待最近发布的JavaScript框架,比如SproutCode和Objective-J/Cappuccino?你认为他们会给未来的Web应用程序带来什么影响?

     

    Apple的炒作机器无疑使一些人把这个产品当成了Ajax的第二代。对我来说,他们只是进化在不同阶段的JavaScript库和框架而已。包 括 Google GWT和一些比较流行的库,比如Dojo、JQuery、YUI以及Prototype。我不大想看到某个框架或者库过于强大,至少不希望会持续很多年, 最好他们只是在Web的某个领域很流行。在某些特定的设备上开发,你当然没有什么选择的余地,但在Web上就不一样,因为它涵盖的范围非常广,这是无论多 么流行的设备都无法比拟的。

     

    你认为我们有可能会看到桌面应用程序最终走向灭亡么?

     

    我认为不会,但你会看到更多使用Web技术构建的桌面应用程序,他们甚至是安装在本地的,而不是储存在某个Web服务器主机中。当然Web应用程 序也会持续不断的发展。伴随着JavaScript的成长和其他基于浏览器的Web标准的诞生,我们将能看到Web应用程序可以做更多的互动行的工作,而 这些工作以前都是必须使用桌面应用程序来完成的。我们已经在前沿的浏览器中看到离线应用、二维和三维渲染等已经变为事实。

     

    你怎样看待像Flash这样不断流行的插件对JavaScript的流行度带来的影响?

     

    Flash在尽力做到完善的支持Ajax,可以编写脚本,可以在外部访问,和其他插件、像图片和表格这样的内置对象、纯粹的JavaScript 对象一样,以组件的方式嵌入到网页中。开放的网络对待每项技术都是一视同仁的,这也确实妨碍了单一厂商的一枝独秀。你可以通过Flash怎样在Web 2.0的世界中畅游,和微软的Silverlight也瞄准了现代Web世界这个大蛋糕看出一些端倪。

     

    人们不想回到一家厂商的插件充斥着整个网页的时代,所有的网站也会这么想。

     

    首先,展示在最前沿浏览器中的Web标准正在不断进化,并努力与Flash和Silverlight在视频、动画、高性能JavaScript等方面分庭抗争。

     

    其次,没有网站愿意为了“bling”而牺牲“reach”。和插件始终存在不足相比,浏览器天生就会支持各种Web标准,比如JavaScript。用户不会经常更新他们的插件,用户也会拒绝使用某个插件,但会信任并继续使用浏览器。

     

    你认为JavaScript将来会在哪些地方延伸?

     

    首先自然会在浏览器中,但以后可能会更广,比如在服务器端,或者成为一个端到端的编程语言(更多的替代传统意义上桌面或操作系统的脚本职责)。

     

    你是否依旧认为(就像你之前说过的)“ECMAScript和皮肤病一样,只是一个多余的商业名称而已”?

     

    我没有印象说过这句话,但是有一点很确认:这不是一个理想的名字,而且听起来有点像湿疹(eczema)。

     

    你是否依然预计ECMA-262会在2008年10月前发布?你是否期望新版本将会完全向后不兼容?

     

    如果你说的是ECMA-262的第四版,那我的答案肯定是不,我们不指望这个版本会在2008年发布。负责下一个版本的技术委员会(ECMA TC39)正在努力协调各种提议,协调的结果将包含一个短期的3.1版本,这将在2009年春天发布,还包括一个接下来发布的更大的版本(其实也不是特别 大),我们称之为ECMA-262第四版。

     

    JavaScript的不断发展和流行给你带来过什么惊喜么?

     

    JavaScript的流行给了我不小的惊喜。我在很长一段时间里,心里已经默认JavaScript是不会流行的了。原因当然包括那些讨厌的弹 出窗口,但更多是由于这种自由组合的函数和基于原型的对象编程的传统。但后来结果发现,很多程序员本来就是从JavaScript开始学习编程的,还有一 些擅长面向对象编程的程序员,很喜欢这种非传统的组合。

     

    JavaScript从最初的开发到现在,什么是让你最骄傲的?

     

    应该是把优秀的函数和对象原型结合到了一起。对于一个已经标准化的产品,我不会说他有多么完美,因为标准化的过程中扩充了不少的内容,其中包含一些错误。但抛出一些小失误和人为原因,核心的思想完全经住了时间的考验。

     

    你认为编程语言会朝什么方向发展?尤其是在接下来的5-20年间?

     

    未来的编程语言必须在我们都要面对的两个方面做得更好:

     

    * 多核/大规模并行计算机现在已经出现在大家的身边,现在只是出现在台式机上,不久移动设备也会具有相应的能力。计算机科学家们在最近的十五年里,正在努力 使并行计算可以做更多有用的事情,也更加容易使用。JavaScript在多核的世界里面有自己的角色需要扮演,从相对简单的扩展开始,比如Google Gear的工作池,“零共享(shared nothing)”的后台线程,通过浏览器中的JavaScript互相发送和接收消息进行通讯。

     

    * 安全。一个编程语言无法用自身建立起来的安全体系保证安全,因为安全是一套系统属性,涵盖所有层次的抽象,包括上游和下游的语言。但一个编程语言当然可以向用户提供各种更好或者更差的工具来构建安全系统,并证明这些安全属性可以在这个编程语言中得到保证。

     

    你对那些未来的程序员有什么建议么?

     

    学习大师们的经典著作:Knuth、Wirth和Hoare。计算机科学就像一个滚动的轮胎,在学术研究方面,每10-20年就会重复发现一些以 前曾经被发现过的东西。当然,近些年来大家也做了大量的工作,但我要说的,学生们不止要从最近的知识中学习,还要向过去的那些大师们学习。

     

    你还有什么要补充的么?

    目前没有了,而且我要回去工作了。

    展开全文
  • 简介 Brendan Eich于1995年在Netscape发明了JavaScript语言,这个语言在过去的一些年里曾是一个最被误解的语言,随着AJAX和Web 2.0的发展,人们逐渐正视JavaScript。这是一篇Computerworld对Brendan Eich的一次...
  • Brendan Eich于1995年在Netscape发明了JavaScript语言,这个语言在过去的一些年里曾是一个最被误解的语言,随着AJAX和Web 2.0的发展,人们逐渐正视JavaScript。这是一篇Computerworld对Brendan Eich的一次采访,对...
  • 《精通JavaScript》讲述了现代JavaScript的所有知识,展现了这门技术将能给网站建设带来如何丰富的体验。《精通JavaScript》关注于基础且重要的主题——现代JavaScript是什么和不是什么,浏览器支持的当前状态,以及...
  • 初识JavaScript

    2021-03-22 19:22:12
    JavaScript创始人是布兰登·艾奇(Brendan Eich),在1995年只用了十天时间开发出了LiveScript,后和Sun合作改名为JavaScript。不得不吐槽一句,这哥们头发居然还这么多… JavaScript是一种运行在客户端的脚本语言(不...
  • JavaScript权威指南是javascript创始人写的一本超经典的书,这是其中的代码供大家使用
  • javascript中的继承

    2015-03-13 15:45:37
    咱们伟大的javascript创始人布兰登.艾奇仅用10天时间就创造了一门这么伟大的语言,以至于真正认识了这门语言的时候,有种掉坑里的感觉。 闲话不多扯,虽然这门语言漏洞百出,但它是当今最流行的脚本之一,证明它的...
  • jquery创始人

    2013-12-27 21:45:00
    jQuery由美国John Resig创建,至今已吸引了来自世界各地的众多javascript高手加入其team,包括来自德国的Jörn Zaefferer,罗马尼亚的Stefan Petre等等。jQuery是继prototype之后又一个优秀的Javascrīpt框架。其...
  • 饮水思源,向每一位编程语言创始人致敬。”精通很多编程语言,却不知道它们的创始人,这怎么说的过去呢。今天编程教授和大家分享下这些语言创始人,快来看看你知道几个?1、C语言创始人丹尼斯·里奇,C语言之父,...
  • d3仪表板 创始人和程序员第 5 周的 d3 项目
  • 优方达 哟“ ”并获取有关您附近最近的初创公司的联系信息和其他详细信息。
  • Dojo Toolkit 创始人谈Dojo学习   学习 Dojo Toolkit 时至少要清楚一点——你想要的是什么!在刚开始使用 Dojo 时,我基本的目标就是创建一个有用的 JavaScript 工具集而不必让专业的 JavaScript ...
  • IT江湖根据TIOBE 编程语言排行榜(2015年4月)来介绍编程语言创始人,我们感谢这些人,为我们提供这些优秀的编程语言。 C语言创始人 丹尼斯·麦卡利斯泰尔·里奇(英语:Dennis MacAlistair Ritchie,1941年9月9...
  • OSM合并审核 该网站从获取JSON输出,并向登录用户提供一个界面,用于逐个验证每个导入点。 它记录所有更改并生成一个文件,以后可以将其反馈给Conflator。 作者和许可 这一切都是由Ilya Zverev为MAPS.ME编写的。...
  • g-保护 G-Protect不和谐突袭防护机器人 G-Protect是一种不和谐的机器人,可保护您的服务器免遭突袭 指令 默认前缀是. 命令 争论 帮助 。帮助 ...将检查您服务器上的每个用户是否将其列入黑名单,并禁止他们 ...
  • 这是一个用引导的项目。 入门 首先,运行开发服务器: npm run dev # or yarn dev 用浏览器打开以查看结果。 您可以通过修改pages/index.js来开始编辑页面。 页面在您编辑文件时自动更新。... 可以在pages/api/hello...
  • 饮水思源,向每一位编程语言创始人致敬。 1.C语言创始人 丹尼斯·里奇,C语言之父,UNIX之父。曾担任朗讯科技公司贝尔实验室下属的计算机科学研究中 心系统软件研究部的主任一职。1978年与布莱恩·科尔尼干(Brian ...
  • 晨间挑战 这个 repo 包含在 Founders & Coders 的早间挑战中编写的代码。
  • Cointext联合创始人Vin Armani旨在改善数据隐私的Javascript库。具体而言,用户可以将被加密过的数据(短信、文件等)发送到BCH网络上的地址。该地址的私钥持有者可以使用该工具下载和解密数据。 更多区块链资讯:...
  • JavaScript忍者秘籍

    2017-10-11 13:16:31
    本书是jQuery库创始人编写的一本深入剖析JavaScript语言的书。, 本书共分四个部分,从准入训练、见习训练、忍者训练和火影训练四个层次讲述了逐步成为JavaScript高手的全过程。全书从高级Web应用程序开发者所面临的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,380
精华内容 5,752
热门标签
关键字:

javascript创始人

java 订阅