JavaScript创始人Brendan Eich访谈录(2)
作者:Computerworld 来源:站徒 发布时间:2008-09-16 12:01:00
你知道有什么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)中脚本的标准。
猜你喜欢
- WebSocket与HTTP协议的主要区别HTTP 和 WebSocket 协议的区别 HTTP 是单向的,而 WebSocket 是双向的
- 变量不是盒子在示例所示的交互式控制台中,无法使用“变量是盒子”做解释。图说明了在 Python 中为什么不能使用盒子比喻,而便利贴则指出了变
- 八九年前,我在公司做设计,当时就已经做到技术总监,Photoshop是自学的,当时觉得全世界比我Photoshop强的人也不在多数。七年前,
- 1.概述pyecharts 是百度开源的,适用于数据可视化的工具,配置灵活,展示图表相对美观,顺滑。2.安装python3环境下的安装:pi
- -- 任意的测试表 CREATE TABLE test_delete( name varchar(10), value INT ); go
- 首先一起来复习一下死锁的概念:死锁是指两个或者多个事务在同一资源上相互占用,并请求锁定对方占用的资源,从而导致恶性循环的现象。下面我们通过几
- #!/usr/bin/env python# -*- coding: utf-8 -*-# @File : 自实现一个线性回归.py# @A
- ERROR 1665 (HY000)【环境描述】msyql5.6.14【报错信息】执行SQL语句的时候报错:ERROR 1665 (HY00
- 1,System.ComponentModelSystem.ComponentModel 命名空间提供用于实现组件和控件的运行时和设计时行为
- jQuery 真是一个非常伟大的 javascript library,至少在我不会写 JS 的时候第一时间接触了它,虽然还有其他很多优秀的
- 数据库安全性问题一直是围绕着数据库管理员的恶梦,数据库数据的丢失以及数据库被非法用户的侵入使得数据库管理员身心疲惫不堪。围绕数据库的安全性问
- 1. 概述在Numpy 1.24版本中,删除了像np.float、np.int 这样的 Python 内置类型的 alias,因此以后在代码
- 前言以下述环境为例:python=3.7pytorch=1.7.1torchvision==0.8.2cudatoolkit=10.1pyt
- 参考资料:正则表达式语法–菜鸟教程Java正则表达式实现简单批量替换举例:将and 批量替换为&&Python实现impor
- CSV means Comma Separated Values. It is plain text (ansi).The CSV (&qu
- 本文研究的主要是Python爬虫天气预报的相关内容,具体介绍如下。这次要爬的站点是这个:http://www.weather.com.cn/
- 前言小程序本身是不支持async/await语法的,但有些应用场景,我们使用async/await会使得代码更简洁,也更易于维护,用过都知道
- 背景在微信分享开发的时候我们通常的流程是 <?php require_once "jssdk.php"; $jss
- 自己前端开发中常用到的一些技巧及问题解决方法,会常更新,希望对前端路上的朋友有帮助。1、文章标题列表中日期居右显示的方法(提供了两种方法,使
- 读取和存储dict()与.json格式文件读取.json格式文件并将数据保存到字典中数据文件:hg.json{"商家名称"









