论文部分内容阅读
有的人认为,在过去的10到20年时间里,计算机研究在许多方面已经取得了很大的成绩,并且使用计算机的人越来越多,因此在这方面,要做的可能并不多了。但是,我认为,计算机革命实际上刚刚开始。有些让人兴奋的事,可能会在今后的10到20年内发生。
看待计算机研究有两种不同的方式。一种方式就是把这个学科看作一门科学。它的任务是为了说明某种现象,如有可能,则解释这种现象,最好以一种比较简单的理论来解释这种现象;另一种方式是从工程的角度来研究,它的最基本的挑战就是构造某些东西。当今的计算机研究主要是从工程角度出发的。我们的某些想法本来可能为建立计算机系统做出很大贡献,但实际上没有取得预期的成果。事实上,我们很难预测做某项工作所需要的时间。
过去二十年的巨大进展
过去二十年中计算机研究所涉及的领域非常广泛,其中一些问题人们做得比较成功,另外一些则不太成功。比如说虚拟内存,还有地址空间。这些都是现代计算机系统的基础。包括交换网络对互联网和万维网(World Wide Web)的实现也至关重要。目前在此方面,我们看到人们的生活和社会经济正经历革命性的变化。再比如对象/子类型、关系数据库和SQL编程语言等现已被人们广泛接受,而交换任务则成为现代商业计算机的基础。Bitmaps和图形用户界面是70年代人们所进行的研究,现在它们已经成为人们与计算机进行交流的标准。互联网更是取得了空前的成功。在过去二、三十年中,计算机在算法方面有了巨大的进展。
成功中的遗憾
另外还有其它一些领域,我们做得不太成功。比如性能方面,我们认为性能应该是使计算机系统更稳定,更强大的一个方面,但实际上我们在性能方面做得并不那么好。另外就是功能编程,事实上也没有能取得理想的效果。我们希望能让计算机语言更加容易写,更加容易用,可是到目前为止,虽然说人们做了很多工作,但实际效果并不大,没有能够做成实际系统来实现功能编程。再比如说软件工程,人们希望通过软件工程使得计算机和系统的构造以及编程变得更加方便,使得人们象造房子、或造发电站那样,通过这种基本方法来使整个计算机系统更加好用,更加高效。但是由于很多原因,如计算机科学变化太大、太快,人们还没有足够时间来把这些软件工程方面的新成果真正变成可用的。再比如,RPC也是分布式计算机系统的一个基础技术,但实际上除了外部方面,也就是用于Web之外,其它方面RPC做得都不太成功。再比如说分布式计算,20年前我们曾梦想,能够通过一些分开的计算机,用网络把它们联起来,来构建分布式计算环境,而且我们当时希望,把它们看作一个单一的程序,这样不同的机器可以在性能和强壮性方面能够通过几个分布式计算环境获益。但现在我们发现,我们实际上并没有做成那种意义上的分布式计算,我们实际所做的只是把一个机器作为一个终端,然后使用外部浏览器把另外一个机器当作服务器、外部器或者其它什么服务器。这就是我们今天所看到的分布式计算的结构。人们通过这样一种结构来做在线的数据库处理,或者在线交易,而这种分布式计算环境和20年前或25年前我们所梦想的分布式计算完全不同。当时我们所说的是不同的计算机针对同一个问题共同工作。除了最初那些应用之外,实际上在推进当初分布式计算的概念方面,我们做得并不太成功。再比如说连续对象,人们当时希望除了核心的那些来来回回使用不同的繁杂的数据库结构和不同的程序之外,在这个磁盘上能够按对象进行存储,这个对象应该是连续的,这中间的差距应该可以弥补起来,但现在在这方面人们做得也不太成功。
在安全性方面,我们希望通过提高计算机的安全性来进一步提高其可靠性,这是当时人们认为应该做的工作。当然,这种安全性和你给门上把锁,保护你们家的安全是不一样的。事实上,安全性是很复杂的,远远超过了我们当时从技术角度所设想的程度。它给社会带来很多方面的影响。我们最初那种认为给系统上把锁就安全了的想法真是太天真了。虽然说锁有锁的用途,确实能够保证一定的安全,比如说阻止非法侵入,但还应该有警察。在计算机的安全性方面有很多问题没有解决,在此方面人们也没有开发出更多的能够真正付诸实践的安全技术。
再说并行理论。并行理论在很多方面有很大的作用。人们运用它建造了超级计算机,从而使得当今的计算机能对单一问题进行一些并行处理。而并行处理理论在数据库方面也做得非常成功,我们已有不少技术,可以在大的数据库上进行查询,也就是说查询可以进行并行处理。但从更广泛的计算领域来讲,并行处理实际上还是困难重重。RISC计算也没有达到当初发明人的设想,因为现在有一些非RISC的计算机,它们本身好象更聪明。再比如说内存垃圾的收集,我们希望通过这种技术能够解决那些困难的问题,但是这涉及到自动对内存进行分配的一个任务。在90年代末,随着Java的出现,有越来越多的编程人员接受了这种技术,但实际上这种技术还没有得到广泛的应用。人们认为计算机的模块与模块之间应有很好的界面,而且每个模块都能预测不同部件的行为,并且遵守这个系统的建造结构。这些研究在某一方面取得了一些成功,但实际上它和人们做计算机的方式是不一样的,有时候这种方式反而更慢。人们也认为软件应该能够重新利用,这样的话,就没有必要每次都从头写起。这一直是人们的梦想。起码说,从1968年软件大会之后,这一直是人们的梦想。在一个很窄的范围内,也说是在unix操作系统上(即所谓的过滤器),重用软件确实做得不错。此外,令人惊奇的是,在不同范围内,它也取得了一定的成功。有时候,一些较大的辅件,象浏览器或者操作系统等是可以重用的。现在当我们做企业应用系统时,我们没有必要又重新坐下来,一行一行地重头开始写,我们可以用浏览器作界面,用数据库来存储数据,用交易处理技术来做容错方面的工作,用操作系统来做很多独立于硬件的工件。但是重用性软件实际上只是在很窄的领域取得了成功。我们知道计算机系统有很多的组件,所以只有很少的软件可以被称为重用性软件。
过去十年中最大的失败
最后,我想谈一谈计算机研究在过去10年中最大的失败,那就是不是计算机研究人员,而是物理学家发明了Web。而Web已经成为过去十年中计算机领域最大的成功。所以我想问:为什么我们研究人员自己没有发明出Web?我不知道,我们是不是能真正给出一个答案?我觉得原因可能是大家觉得那太简单了。Web text 超级文本这种东西,25年前就有人提出来了,因此,大家都不去试了。也有人说,http太浪费时间了,每次你点击一个鼠标,它就给联接到其他画面,太浪费精力了。还有人说,这个Web有时太脆弱了,有时你点击鼠标,除了一些错误信息,什么都没有。但是你看看现实世界,就会发现即使这个系统本身从本质上来讲,可靠性并不如人们想象的那么好,可是这个系统在现在中确实在发挥它的作用。我们还要注意另外一点,就是你如果问那些计算机系统的研究人员,那么他们会说Web的升级性不好。实际上最初有100个人用Web,而现在有1亿个人用Web,所以Web的成功实际上比任何其它计算机领域都要巨大。因此,我们必须考虑一个问题,为什么这样大的一个计算机领域事件,是在计算机研究外取得的?我们应该问问这个问题。
作者简介:Butler Lampson博士是微软研究院首席软件工程师,并在麻省理工学院(MIT)担任计算机与电气系客座教授。他曾经从事的研究包括计算机体系结构、局域网、光栅打印机、页面描述、语言、操作系统、远程过程调用、编程语言和语义、大型容错计算的编程、计算机安全和WYSIWYG编辑程序等领域。在施乐 PARC实验室, Lampson博士曾参与多项重大发明的设计工作,其中包括SDS 940分时系统、Alto个人分布式计算系统、施乐9700激光打印机、二相确认协议、Autonet局域网和多种程序语言等。
Lampson博士获美国加州大学伯克利分校计算机科学和电气工程博士学位及瑞士苏黎士Eidgenoessische Techniche Hochschule荣誉博士学位。他在网络、计算机安全、光栅打印机和事务处理领域拥有多项专利。
Lampson博士是美国国家工程院院士,美国计算机协会(ACM)院士和美国科学院院士 。因其在图形用户界面领域的贡献,Lampson博士分别于1984年和1992年被授予美国计算机协会软件系统奖和美国计算机协会图灵奖。
看待计算机研究有两种不同的方式。一种方式就是把这个学科看作一门科学。它的任务是为了说明某种现象,如有可能,则解释这种现象,最好以一种比较简单的理论来解释这种现象;另一种方式是从工程的角度来研究,它的最基本的挑战就是构造某些东西。当今的计算机研究主要是从工程角度出发的。我们的某些想法本来可能为建立计算机系统做出很大贡献,但实际上没有取得预期的成果。事实上,我们很难预测做某项工作所需要的时间。
过去二十年的巨大进展
过去二十年中计算机研究所涉及的领域非常广泛,其中一些问题人们做得比较成功,另外一些则不太成功。比如说虚拟内存,还有地址空间。这些都是现代计算机系统的基础。包括交换网络对互联网和万维网(World Wide Web)的实现也至关重要。目前在此方面,我们看到人们的生活和社会经济正经历革命性的变化。再比如对象/子类型、关系数据库和SQL编程语言等现已被人们广泛接受,而交换任务则成为现代商业计算机的基础。Bitmaps和图形用户界面是70年代人们所进行的研究,现在它们已经成为人们与计算机进行交流的标准。互联网更是取得了空前的成功。在过去二、三十年中,计算机在算法方面有了巨大的进展。
成功中的遗憾
另外还有其它一些领域,我们做得不太成功。比如性能方面,我们认为性能应该是使计算机系统更稳定,更强大的一个方面,但实际上我们在性能方面做得并不那么好。另外就是功能编程,事实上也没有能取得理想的效果。我们希望能让计算机语言更加容易写,更加容易用,可是到目前为止,虽然说人们做了很多工作,但实际效果并不大,没有能够做成实际系统来实现功能编程。再比如说软件工程,人们希望通过软件工程使得计算机和系统的构造以及编程变得更加方便,使得人们象造房子、或造发电站那样,通过这种基本方法来使整个计算机系统更加好用,更加高效。但是由于很多原因,如计算机科学变化太大、太快,人们还没有足够时间来把这些软件工程方面的新成果真正变成可用的。再比如,RPC也是分布式计算机系统的一个基础技术,但实际上除了外部方面,也就是用于Web之外,其它方面RPC做得都不太成功。再比如说分布式计算,20年前我们曾梦想,能够通过一些分开的计算机,用网络把它们联起来,来构建分布式计算环境,而且我们当时希望,把它们看作一个单一的程序,这样不同的机器可以在性能和强壮性方面能够通过几个分布式计算环境获益。但现在我们发现,我们实际上并没有做成那种意义上的分布式计算,我们实际所做的只是把一个机器作为一个终端,然后使用外部浏览器把另外一个机器当作服务器、外部器或者其它什么服务器。这就是我们今天所看到的分布式计算的结构。人们通过这样一种结构来做在线的数据库处理,或者在线交易,而这种分布式计算环境和20年前或25年前我们所梦想的分布式计算完全不同。当时我们所说的是不同的计算机针对同一个问题共同工作。除了最初那些应用之外,实际上在推进当初分布式计算的概念方面,我们做得并不太成功。再比如说连续对象,人们当时希望除了核心的那些来来回回使用不同的繁杂的数据库结构和不同的程序之外,在这个磁盘上能够按对象进行存储,这个对象应该是连续的,这中间的差距应该可以弥补起来,但现在在这方面人们做得也不太成功。
在安全性方面,我们希望通过提高计算机的安全性来进一步提高其可靠性,这是当时人们认为应该做的工作。当然,这种安全性和你给门上把锁,保护你们家的安全是不一样的。事实上,安全性是很复杂的,远远超过了我们当时从技术角度所设想的程度。它给社会带来很多方面的影响。我们最初那种认为给系统上把锁就安全了的想法真是太天真了。虽然说锁有锁的用途,确实能够保证一定的安全,比如说阻止非法侵入,但还应该有警察。在计算机的安全性方面有很多问题没有解决,在此方面人们也没有开发出更多的能够真正付诸实践的安全技术。
再说并行理论。并行理论在很多方面有很大的作用。人们运用它建造了超级计算机,从而使得当今的计算机能对单一问题进行一些并行处理。而并行处理理论在数据库方面也做得非常成功,我们已有不少技术,可以在大的数据库上进行查询,也就是说查询可以进行并行处理。但从更广泛的计算领域来讲,并行处理实际上还是困难重重。RISC计算也没有达到当初发明人的设想,因为现在有一些非RISC的计算机,它们本身好象更聪明。再比如说内存垃圾的收集,我们希望通过这种技术能够解决那些困难的问题,但是这涉及到自动对内存进行分配的一个任务。在90年代末,随着Java的出现,有越来越多的编程人员接受了这种技术,但实际上这种技术还没有得到广泛的应用。人们认为计算机的模块与模块之间应有很好的界面,而且每个模块都能预测不同部件的行为,并且遵守这个系统的建造结构。这些研究在某一方面取得了一些成功,但实际上它和人们做计算机的方式是不一样的,有时候这种方式反而更慢。人们也认为软件应该能够重新利用,这样的话,就没有必要每次都从头写起。这一直是人们的梦想。起码说,从1968年软件大会之后,这一直是人们的梦想。在一个很窄的范围内,也说是在unix操作系统上(即所谓的过滤器),重用软件确实做得不错。此外,令人惊奇的是,在不同范围内,它也取得了一定的成功。有时候,一些较大的辅件,象浏览器或者操作系统等是可以重用的。现在当我们做企业应用系统时,我们没有必要又重新坐下来,一行一行地重头开始写,我们可以用浏览器作界面,用数据库来存储数据,用交易处理技术来做容错方面的工作,用操作系统来做很多独立于硬件的工件。但是重用性软件实际上只是在很窄的领域取得了成功。我们知道计算机系统有很多的组件,所以只有很少的软件可以被称为重用性软件。
过去十年中最大的失败
最后,我想谈一谈计算机研究在过去10年中最大的失败,那就是不是计算机研究人员,而是物理学家发明了Web。而Web已经成为过去十年中计算机领域最大的成功。所以我想问:为什么我们研究人员自己没有发明出Web?我不知道,我们是不是能真正给出一个答案?我觉得原因可能是大家觉得那太简单了。Web text 超级文本这种东西,25年前就有人提出来了,因此,大家都不去试了。也有人说,http太浪费时间了,每次你点击一个鼠标,它就给联接到其他画面,太浪费精力了。还有人说,这个Web有时太脆弱了,有时你点击鼠标,除了一些错误信息,什么都没有。但是你看看现实世界,就会发现即使这个系统本身从本质上来讲,可靠性并不如人们想象的那么好,可是这个系统在现在中确实在发挥它的作用。我们还要注意另外一点,就是你如果问那些计算机系统的研究人员,那么他们会说Web的升级性不好。实际上最初有100个人用Web,而现在有1亿个人用Web,所以Web的成功实际上比任何其它计算机领域都要巨大。因此,我们必须考虑一个问题,为什么这样大的一个计算机领域事件,是在计算机研究外取得的?我们应该问问这个问题。
作者简介:Butler Lampson博士是微软研究院首席软件工程师,并在麻省理工学院(MIT)担任计算机与电气系客座教授。他曾经从事的研究包括计算机体系结构、局域网、光栅打印机、页面描述、语言、操作系统、远程过程调用、编程语言和语义、大型容错计算的编程、计算机安全和WYSIWYG编辑程序等领域。在施乐 PARC实验室, Lampson博士曾参与多项重大发明的设计工作,其中包括SDS 940分时系统、Alto个人分布式计算系统、施乐9700激光打印机、二相确认协议、Autonet局域网和多种程序语言等。
Lampson博士获美国加州大学伯克利分校计算机科学和电气工程博士学位及瑞士苏黎士Eidgenoessische Techniche Hochschule荣誉博士学位。他在网络、计算机安全、光栅打印机和事务处理领域拥有多项专利。
Lampson博士是美国国家工程院院士,美国计算机协会(ACM)院士和美国科学院院士 。因其在图形用户界面领域的贡献,Lampson博士分别于1984年和1992年被授予美国计算机协会软件系统奖和美国计算机协会图灵奖。