王选语录

科学研究本身就是一种美,给人带来的愉快是最大的报酬,是一种高级享受。献身科学就没有权利再像普通人那么样生活,必然会失掉常人所能享受的不少乐趣,但也会得到常人享受不到的很多乐趣。

一个好的科学家或企业家首先应该是一个好人,才能带领队伍。什么叫好人?季羡林先生曾说过,考虑别人比考虑自己更多就是好人。这一标准我觉得可以再降低一点:考虑别人与考虑自己一样多就是好人。

我的座右铭是:“多做好事,少做错事,不做坏事”。

中国古代有句话,上士忘名,将名利彻底淡忘;中士立名,靠自己的成就把名立起来;下士窃名,自己不行就窃取人家的。我做不到上士,但是我不会为了立名而去窃名。

更多>>
 
论科研与创新

数学基础和跨领域研究是取得创新成果的重要因素

——从事计算机研究的体会之一

加入WTO后,我们的工业将纳入国际大市场,大家都关心如何提高我国产品的竞争能力。在与计算机相关的领域内,既有挑战,又有重大的机遇。能够抓住机遇的人往往会获得意想不到的成功。近年来经常有人问我下列问题:“1975年你怎么想到要从事照排系统的研制?”“怎么想到跳过当时国外流行的做法,而采用新的技术途径?”“你在从事计算机系统的研制中最重要的体会是什么?”。我想在本文中谈一下我的一些粗浅的看法,供大家参考。

数学基础是至关重要的

数学基础对从事计算机软硬件及应用系统的研究是十分重要的计算机本身就是数学和电子学结合的产物,存储程序计算机概念的提出者冯?诺依曼(Von Neumann)就是一位杰出的数学家。大家知道国际上计算机领域内最高奖是图灵(Turing)奖,为了纪念对计算机理论作出历史性贡献的英国数学家Turing。从1966年开始,每年授一次奖,一般授予一人,有时授予一个领域内的两名科学家,图灵奖只授予对计算机事业作出有深远影响贡献的科学家。迄今为止,三十多名获奖人中除少数几位纯粹属理论方面的贡献外,大多数获奖者的工作对计算机工业产生了重大影响。例如编译系统的先驱Perlis,微程序的发明人Wilkes,人工智能先驱和LISP语言的提出者Mc Carthy,操作系统层次结构和结构程序设计的创始人Dijkstra,第一个数据库的提出和实现者Bachman,在算法研究和科技排版语言TEX方面作出重要贡献的 Knuth,FORTRAN的提出和实现者 Backus,APL语言的设计人Iverson,关系数据库的提出者Codd,UNIX和C语言的创始人Thompson和Ritchie,PASCAL语言的设计和实现者Wirth等。图灵奖的获奖人,或者是数学出身,或者有很好的数学修养,几乎无一例外。美国微软公司董事长Bill Gates,现年37岁,是美国最年轻的富豪,他也是一位数学天才,中学数学成绩十分突出,常得满分,高中时对抽象数学和经济学深感兴趣,这两方面的兴趣和才能与他成为世界上头号软件企业家不无关系。我国计算机领域内获得国家自然科学奖的科学家中绝大多数为学数学出身,个别非数学系毕业的获奖人也有良好的数学基础。计算机领域内获国家科技进步二等奖以上的主要获奖人中,很多也是学数学出身,尽管这些项目的技术性都很强。数学基础为什么对计算机研究如此重要呢?根据我自己的体会,至少有下面三方面原因。

1“抽象”是数学的本质,而计算机硬件、操作系统、高级语言和应用系统的设计中经常使用“抽象”的手法。有一个很能说明问题的故事,大概在1946年,冯?诺依曼在一次讨论班上说,他可以用六个电子管设计一个加法器,并在黑板上画出加法器的电路图。主持世界上第一台电子计算机ENIAC工程设计和实现的Eckert立刻说,“不对,有一处脉冲的极性反了,应加一个管子实现反向,另两处驱动能力不够,应加管子,因此需要九个电子管。”冯?诺依曼回答说“你说的是电路上的加法器,我说的是逻辑上的加法器。”正是依靠了抽象,出现了电子计算机逻辑设计这一重要分支。

2严密的逻辑思维和推理对硬件和软件研制都是很有帮助的。数学基础好、逻辑思维严密的人,一旦掌握了软件设计和编程的基本方法和技巧后,就能研制出结构清晰、高效率和可靠的软件系统;而一个思维不严密和推理能力差的程序员,即使有多年的编程实践,往往仍不能很好地完成任务。三十多年来我在从事逻辑设计、体系结构研究、软件、微程序设计和专用芯片的设计过程中,深感大学期间(北大数学系)的严格训练使我终生受益。在华光Ⅳ型、方正91和最新的方正93电子出版系统中,我们设计过三次专用超大规模集成芯片ASIC,其中最复杂的是方正93的专用协处理器芯片。由于研制小组成员逻辑思维严密,所以在芯片模拟中仅发现一个小错,样片出来后没有任何错误,由该协处理器为核心的方正93系统完全达到了预期的目的。八年来我们在ASIC设计中从未做过实际的电路实验,主要依靠严格的论证来保证设计的正确性,结果三次样片都是一次完成。我很赞成Dijkstra的下述看法:“一个高水平的程序员应该一开始就避免故障的引入,而不应该把大量时间放在程序调试上。”Dijkstra一贯主张把科学的思维引入系统设计和程序设计中,这也是他鼓吹的结构程序设计的目的之一。

3好的算法往往会大大改进系统的性能,而数学基础对构思算法是很有帮助的。

1974年图灵奖获得者Knuth是学数学出身,在算法分析方面作出了重要贡献。在出版他的多卷名著“程序设计技巧”过程中,发现当时的排版软件在版面质量和功能方面满足不了他的要求,因此设计TEX排版语言,并发明了数学公式在拆行时的算法,既能自动把一段公式拆成几行,又能保证得到的版面很美观,北大方正排版软件中使用了Kunth这一算法。人们把TEX称为数学家设计的排数学公式的软件,在国外流行很广。1980年图灵奖获得者Hoare由于在公理语义学方面的贡献而闻名,他牛津大学毕业后,去莫斯科大学学概率论,然后于1960年进入Elliott公司,当了八年程序设计师。一接触到程序,他立刻发明了一个快速排序算法,1961年在了解ALGOL 60后,又把这一算法用ALGOL 60清晰和简明地书写出来,取名为QUICKSORT,从而开始了作为一名计算机科学家的历程。在电子出版领域内,PostScript解释器需要好的算法,高档彩色系统的挂网算法直接影响彩色出版物的质量,在彩色拼版和图形处理中都能看到算法的重要作用。

实践出真知

一定要在年轻的时候养成自己动手的习惯在计算机领域内,只出点子、从来不动手实现的人不容易出大的成果。一个新思想和新方案的提出者往往也是第一个实现者,这似乎是一规律。因为开头人们总会对新思想提出怀疑,而只有发明者本人才会不遗余力,承受一切艰难困苦、百折不回地予以实现;也只有发明者本人最清楚自己方案中的问题,能最有效地改进方案和克服实现过程中的各种困难以取得成功,只提方案、自己不实现,则会使一项有价值的发明不能很快付诸实现,而在高科技时代,一种新方案在市场上的生命周期是不长的,一项发明的实施过程太长,会使别人捷足先登。

获图灵奖的科学家通常既是新思想的提出者,又是第一个实现者。FORTRAN是第一个真正推广的用于科学计算的高级语言,五十年代, Backus在设计和实现FORTRAN语言方面作出了极大努力。由于当时的计算机速度慢,内存小,程序员习惯于用各种编程技巧来提高运行速度,因此FORTRAN编译系统在下标变量优化,全局优化和充分利用当时IBM 704上很少几个变址寄存器方面费尽心计,以保证目的程序有高的运行效率。经过Backus等人的艰苦努力,才使FORTRAN得到承认。美国巨型机先驱,被称为巨型机之父的Cray,从1964年的CDC 6600,直到后来的Cray巨型机,二十多年的时间内始终处于这一领域的前沿(当然现在受到超并行机方案的严重挑战)。CDC 6600使用硅管、分立元件,多个运算器同时工作,达到每秒300万次的高速度,六十年代中期称霸一时。Cray的一个很大本领是用体系结构和逻辑设计的办法把器件潜力全部控掘出来,达到可能的最高运算速度。他曾说过,当他提出一个新的构思时,人们常常说“Can't do”(做不成),而对这种怀疑的最好回答是“Do it yourself”(自己动手做)。从1975年到1988年这段时间内,Cray的这段话曾给过我很大的鼓舞力量。我于1976年提出了用轮廓加参数的方法描述高分辨率汉字字形,提出了跳过光机式第二代照排机、阴极射线管第三代照排机,直接研制第四代激光照排系统,提出了用逐段高速形成版面点阵并缓冲的方法驱动逐线扫描的高精度激光输出设备。当时相信的人很少,认为我在玩弄骗人的数学游戏,根本无法实现。1980年当原理性样机(华光Ⅰ型)排出样书后,人们相信上述方案是可以实现的,但多数人认为即使能够实现,也无法与国外产品竞争。直到1989年外国公司纷纷败下阵来,局面才戏剧性地根本扭转。正是按照Cray这段话的精神,我们马不停蹄,不断创新,从华光Ⅰ型一直到现在的方正93系统,十八年来可以说一口气都没有歇过。

“自己动手做”的另一范例是我国数学家吴文俊,吴先生五十年代就已大名鼎鼎,成为当时中国最年轻的学部委员之一。晚年他在定理的机器证明方面取得重大突破,国外誉为“吴方法”。这些年来他用计算机来验证和发展他的理论,上机时间比年轻人还多。科学院数学研究所的一位研究员给我讲过一个故事,他说前几年的一个农历除夕晚上八点多钟,他在外面散步时看到吴文俊先生还在机房上机。一个享有盛名的科学家在致力于新领域的突破时仍需自己动手,更不用说年轻人了。好的数学基础,强的动手能力和第一线实践经验,再加上洞察力和创造性等因素,就有可能取得出色的成就。Hoare的经历是有启发的,他在Elliott当程序员期间,参与了ALGOL 60语言的制定和成功地主持了编译系统的设计和实现,这给他后来在程序语言的形式化定义方面的贡献打下了基础;他在六十年代中期研制操作系统方面的挫折使他致力于并行程序和语言的研究、操作系统结构,尤其是进程之间通信方面一些基本问题的研究。

跨领域研究是创新的源泉

控制论创始人维诺(Wiener)曾说过“在已经建立起来的科学领域之间空白区上,最容易取得丰硕成果”。计算机就是数学和电子学两个领域结合的产物。第一台电子计算机ENIAC是J.W.Mauchly和J.P.Eckert发明的。Mauchly是物理学博士,曾致力于天气预报的研究,深知该领域题目计算量之大,因而试用过各种技术以达到所需的高速度。1941年夏,当他34岁的时候去宾夕法尼大学莫尔电机工程学院任讲师,遇到了才华横溢的年轻研究生Eckert。这两人都是既有数学功底,又有电子学方面的知识。Mauchly在数学和计算方法方面能力高于Eckert,而Eckert在电子工程方面则是很杰出的。1942年Mauchly提出了电子计算机的基本想法,后又与Eckert共同把这一构思具体化,成为ENIAC的设计方案。ENIAC的实现是由Eckert主持的,他每周工作80小时以上,终于在1945年秋使ENIAC开始运行和试算题目,并于1946年2月向公众展示。

从ENIAC发展到存储程序概念的通用电子计算机是一大飞跃,这一机遇落到了杰出的数学家和数理逻辑学家冯?诺依曼身上,尽管冯?诺依曼介入计算机的研究似乎由于一个偶然因素。1944年的某一天,在美国费城火车站,冯?诺依曼遇到了并不相识的HHGoldstine上尉,他是美国军方派来参加ENIAC研制的(Goldstine后来是ENIAC的程序员,据说他首先使用流程图,当然,ENIAC的所谓“程序”,是在约40块几英尺长的插板上用连线方式置入几千条指令,然后运行)。Goldstine谈起了ENIAC项目,使冯?诺依曼深感兴趣。很快冯?诺依曼就前往宾夕法尼亚大学莫尔电机工程学院,并与该小组的成员共同研究存储程序通用计算机的概念,后来这种计算机被称为冯?诺依曼类型计算机。他们预计采用新概念后,只需用ENIAC十分之一的设备就能获得更高的性能。存储程序概念是革命性的,把指令和数放在同一个存储器内,并可以象操作数据那样修改指令,这在当时被指责为“违反自然的”。这台新的计算机取名为EDVAC,冯?诺依曼本来想让Eckert主持实现,但由于对ENIAC专利权的分歧使Mauchly和Eckert于1946年末离开宾夕法尼亚大学,并组建了电子计算机公司以发展他们的想法。他们于1949年研制成专门用于导弹导航的BINAC计算机,并于1951年3月完成了第一台通用的商品化计算机UNIVAC I,提供给美国人口统计局使用。五十年代UNIVAC Scientific 1103,大型机UNIVAC LARC 都是当时著名的、有创造性的第一代计算机。而EDVAC由于更换了工程负责人而延误了时机,让英国剑桥大学的M.V.Wilkes捷足先登。

第一台完整地采用存储程序概念的实验性通用电子计算机是1949年5月剑桥大学完成的EDSAC I,设计人是Wilkes,他是(1967年)第二届图灵奖的获奖人。Wilkes在大学里学的是纯数学和应用数学,博士论文则是无线电方面的题目。1946年夏,当Wilkes33岁的时候,发生了被他称为“一生中最重要的事件”,他接到了一个电报,邀请他参加莫尔电机工程学院的计算机培训班,一共20个单位的28名学生参与,主讲人是Mauchly和Eckert,当时他们的名字还鲜为人知。Wilkes去晚了,只听到后半部分的课程,但ENIAC的成就和新的存储程序计算机概念给他留下很深的印象。在培训班上,Eckert和Mauchly提出新概念计算机最大的问题是存储器(ENIAC只能存20个数),他们建议用超声延迟线作存储器。有一句名言,叫“机遇历来只偏爱有准备的头脑”。Wilkes在数学和无线电这两个领域均有深厚功底和经验,一旦他了解了存储程序计算机概念,立即回到剑桥大学,着手研制EDSACⅠ。合作伙伴是一位优秀的年轻研究生Wheeler,他是“闭子程序”(closed subroutine)的发明人,EDSACⅠ可以说是建立在子程序基础上的。存储器则采用水银延迟线(详细介绍EDSACⅠ的书籍五十年代曾在我国发行)。

Wilkes是微程序的创始人,他于五十年代初发表的微程序方面的文章和第一台微程序结构的计算机EDSACⅡ是这方面的里程碑。从事过电子管计算机研制的人都会感受到,高速运算器尽管很费管子,但逻辑结构是简单的,而控制器则是最不规则 的。EDSACⅠ硬件和子程序方面的经验很自然地促使Wilkes想到了微程序。尽管四十年来微程序技术有了很大的发展,但基本概念和方法则是Wilkes奠定的,即用微指令的位来平行控制一系列的单拍微操作,极大的减少随机逻辑,从而使控制器变得十分整洁。由于Wilkes精通电路,他想到了用二极管矩阵来实现微程序存储器;随着磁心的发展,后又改用磁心存储器。

上述例子均说明跨学科研究的好处,具有两个领域的知识和实践的人比别人更容易抓住机遇。最近十多年来,在我国的机械、化学、生物、考古、社会学、经济学等领域内涌现出一批中青年专家,他们把数学模型和计算机技术引入这些领域,超越了前辈科学家,取得了好的成就,这些范例是值得学习的。

软硬件的结合曾带来突破性成果

五十年代和六十年代硬件和软件的结合给计算机体系结构带来一系列的突破,计算机硬件方面的很多高招均来自程序和应用的需要。五十年代初的DYSEAC机用指令计数器作变址,使子程序从磁鼓调入内存后,可以放在任意区域而不必修改程序中的地址,此即早期的地址浮动;1958年麻省理工学院林肯实验室研制的晶体管计算机TX-2实现了外部设备多个进程的并行工作,当时称为多道序列(multi-sequence),这是多道程序的前身;五十年代设计,1961年运行的大型机Stretch(即IBM 7030),号称每秒百万次运算,其研制是与应用紧密结合的。除了指令先行部件、一拍完成多位操作的运算器、I/O交换器等一系列特点外,Stretch硬件中断后的操作是用程序来实现的,这点给我印象特别深。最使我激动不已的是1961年初看到的关于Atlas计算机的一篇不到一页的简短报道,Atlas是英国曼彻斯特大学研制的,主设计师Tom Kilburn;样机也叫Muse,首创了虚拟存储器,该机于五 十年代末设计,1962年运行,其详细细节于1962年后才披露。Atlas是一台大型计算机,每秒几十万次运算,支持多道程序;但英国比较穷,不象Stretch那样使用容量大的磁心存储器,而只用16K×48位的磁心存储器,再加上第二级90多K字的磁鼓存储器,组成了所谓的“一级存储器”(One level storage,当时还没有虚拟存储器Virtual memory这一名称)。一级存储器的调度和外设所有资源的管理由一个管理程序Supervisor完成,而Kilburn是主要设计者,可见他是精通程序的;Kilburn又是杰出的电路专家,他曾利用晶体管某些开关特性使加法器进位链上的延迟降低到最小,他发明的这一电路当时被称为Kilburn加法器。虚拟存储器除了要有好的调度算法和调度程序外,另一关键问题是要有一个小容量(例如32个单元)超高速的页寄存器堆和附加的全等比较电路,可以对所有的寄存器同时作全等比较。每次访问内存前,首先把要访问的虚拟页地址与堆中的所有单元内容同时作全等比较,判断当前页是否在内存:若在,则读出对应的内存物理地址;若不在,则需从外存读入一个页面。判断当前页面是否在内存,并把虚拟地址变成物理地址的操作必须极快。Kilburn的电路才能使他有魄力用晶体管分立元件来实现这一创新的方案。这一事例再一次说明具有两方面专长的人在面临挑战时会萌发新的构思。

1961年我从北大数学系计算数学专业毕业已三年,主持过电子管计算机逻辑设计和整机调试工作,也参与过部分电路设计工作,一直在硬件第一线上跌打滚爬,在紧张工作的同时,也阅读国外文献。五十年代国外有名的计算机体系结构使我赞叹不已,我试图寻找创造的源泉,即这些创新构思的背景,逐步领悟到程序和应用对硬件设计的重要性。1961年我作出了一生中最重要的一个决定:从硬件转向软件,但不放弃硬件,而是从事软硬件相结合的研究以探讨软件对未来计算机体系结构的影响。当时软件Software这一名词还没有,帮我在这一领域入门的是前苏联Ершов写的“快速电子计算机编制程序的程序”,即详细介绍他们研制的一个程序设计自动化系统框图的书, Ершов后来成为前苏联科学院院士;另一本是详细介绍IBM 650上流行很广的汇编语言SOAP资料;另外还看了FORTRAN的一些文章,后来则仔细钻研了修改后的ALGOL 60语言以及一系列叙述编译系统原理的文章。当时有一种“茅塞顿开”的感觉,原来我以为自己是懂得计算机的,此时才发现只有了解软件,才真正懂得计算机。高级语言、汇编语言(和机器语言)以及微程序语言是三个不同级别的语言,贯通这三者,必然会在体系结构上有创新的构思。为了这一目的,1964年我承担了当时正在进行硬件设计的DJS 21机的ALGOL 60编译系统,这一系统是与许卓群、陈堃銶、朱万森等人合作完成的,后来又经数学所陆汝钤等高手的精心修改、完善,才在几十个用户中得到了推广。DJS 21机的ALGOL 60系统采用的是标准的ALGOL 60语言,只是因为DJS 21机的内存只有4K字(后改为8K字),因而限制了子程序的递归调用,除此之外,几乎与ALGOL 60没有什么差别,连五单位的纸带码都尽量和欧洲从事ALGOL 60语言的确定和编译系统的小组ALCOR的编码相同,在当时批判洋奴哲学的极左路线下,这样做也是要冒风险的,但我始终认为应遵循国际标准,不该创新的地方不应创新。为了保证实用和能够推广,坚持让用户在源程序一级上调试,为此增加了一系列程序运行时指示错误的措施,例如当某个运算符发出算术溢出时,能准确指示源程序上产生溢出的运算符的位置,并把该运算左右两个分量溢出前的值打出,并打出此溢出出现前标志程序流程的16个标号,以协助用户追查错误的根源,这些措施后来很受用户的欢迎。我觉得,不能浮光掠影地参加一个软件系统的研制,而应该彻底投入一个真正实用的的系统,这样才能切实理解软件对硬件的影响。六十年代的那些日子里,我用90%的时间从事ALGOL 60编译系统的研制,另外10%的时间探讨适合高级语言的计算机的体系结构。对于ALGOL 60,FORTRAN, PASCAL这类汇集时间(binding time)早的高级语言,我从来不赞成硬件直接执行高级语言的方案,而主张寻找编译和目的程序运行中的瓶颈,依靠灵巧的硬件设计显著地提高效率。下标变量的处理是个瓶颈,子程序调用(尤其是递归调用)又是一个瓶颈,因为在子程序入口时需要保存和建立一整套的环境,以便处理局部量、局部数组、参数和返回地址,这些在当时的常规计算机(例如IBM 360)上都是很费时间的。由于我有硬件实践经验,所以很容易想出硬件上的方法来克服这些瓶颈。当时我感到似乎找到了创造的源泉,并相信一旦有了这种源泉,中国人有可能和外国人同时或更早提出某些新的思想。这种信心,以及软硬件两方面的知识和实践是我后来能够承担激光照排系统研制的决定性因素。五十年代和六十年代初软件尚未充分发展,硬件则还是分立元件时代,设计和实现一台计算机的硬件还是一件复杂的事,往往意味着好几个大的机箱,因此同时通晓软、硬件,并具有两方面实践经验的人是不多的。我国当时尚苦恼于磁心存储器和逻辑电路的稳定性问题,对软件还很不重视,更谈不上过问硬件如何适应软件的问题。Robert Barton是软硬件结合从事体系设计的先驱者之一,五十年代末和六十年代中,他主持设计的一系列Burroughs公司的计算机B5000,B6000,B7000是这方面的典范,Barton获1979年Eckert-Mauchly奖(体系结构方面的专项奖)。软硬件的结合在六十年代曾带来一系列的突破,而今天的硬件很大程度上变成芯片设计的问题,同时熟悉主机板上各芯片的外部性能和相应的某些软件已不是一件困难的事情了,年轻一代应寻找新的突破点。

要及时了解和学习国外最新成就

六十年代初在研究计算机体系结构和编译系统过程中,我大概看了近一百篇国外文献,以后养成了每做一个项目先要了解国外现状的习惯。为了加快英文阅读速度,1963年初又决定锻练听力,先收听短波中北京电台对外英语广播,后来觉得不过瘾,就收听英国广播公司BBC对远东的英语广播,1963年起连续二年多,每天半小时的收听使我反映速度明显加快。“收听敌台广播”后来在文化革命中成了我的一条“罪行”,带来不少麻烦,因为文革前这样做的理科教师很少,因而显得情节严重。今天,年轻一代比我们这一代的英语水平要高,各类杂志又很多,条件比十多年前好多了;但今天面临国际市场的激烈竞争,及时掌握情报的重要性比以前更加突出。除从书本和杂志上学习外,研究单位的局域网还应与国际网络相连,应及时购买光盘出版物(这是更新最快的出版物),和购买各种最新版本的软件供学习研究用,这是智力投资所必需的。

有所准备才能抓住机遇

一个人的一生中会碰到很多机会,但机遇只偏爱有准备的头脑。多方面的知识和实践经验,对社会需求(包括未来需求)的敏感,对技术发展方向的正确判断,一丝不苟和锲而不舍的精神,都有助于把握机遇,取得成功。1975年,研制精密照排系统的机遇降临到我们头上,当时打听到,国家有一个七四八工程,即汉字信息处理系统工程,分三个子项目:汉字通信、汉字情报检索和汉字精密照排。对于这三个子项目,我独钟精密照排系统,因为它的价值和难度吸引了我。我当时病休在家,可以做自己想做的任何事情。这一事例也说明在可能的条件下让年轻人自由选题,做自己喜欢做的事情,才能激发创造的欲望。

按照过去养成的习惯,首先要了解清楚国外的研究现状和发展动向,短期内我阅读了大量的资料,从而于1975年得出下述结论:数字式存储将占统治地位;光学机械式二代照排机,尤其是汉字二代机难度很大,但没有前途;字模管式三代机和飞点扫描式三代机正在走下坡路,很快将被数字存储的CRT三代机所淘汰。1975年时,先于北大,国内已有五家在从事汉字照排系统的研制,可惜的是,其中两家选择了二代机的方案,另外三家分别选择了飞点扫描、字模管和全息模拟存储的技术途径。

我们一旦选择了数字存储的方案,汉字字形信息量太大,马上成为十分突出 的问题。国外流行的黑白段描述方案压缩率低,日本京都大学的字根组合方案压缩率高但质量不好。假如当时国产计算机硬盘容量很大,我大概不会努力探索新的途径了,正是由于落后才迫使我们另觅新路,这是一种社会需求的压力。由于我是数学系毕业,所以很容易想到信息压缩,即用轮廓描述和参数描述结合的方法描述字形,并于1976年设计出一套把轮廓快速复原成点阵的算法。但当时用常规计算机上的软件来复原点阵,速度是很慢的,因此一个只懂数学和软件的人可能就会就此却步。由于我有多年的硬件实践,并懂得微程序,软、硬件两方面的经验使我能够判断哪些操作可由软件来做,哪些操作属于时间要求很严的,必须由专门硬件配合微程序,从而使速度提高几十倍。在照排系统的研制中尽管我并未主管过软件开发,但软件的知识和实践有助于我作出正确的技术决策。

1976年时国外尚无激光照排机的商品,但国内在高精度传真机研制方面已积累了多年经验,激光扫描分辨率高和幅面宽等突出优点强烈地吸引了我,但逐线扫描,不能改变光点直径和扫描后不能停顿的特点又使控制器的设计难度很大。“需要”和“矛盾”正好促使新方法的产生,逐段形成点阵、逐段缓冲、四路平行输出等方案就是被逼出来的。这些困难找到了解决办法后,才于1976年夏决定跳过二代机、三代机,直接研制第四代激光照排系统。

很幸运的是,八十年代中期,轮廓描述西文字形在国外大为流行,当然已由向量轮廓发展成三次曲线轮廓;1985年后激光照排机在国外开始流行,并于八十年代末淘汰了第三代CRT照排机,而国外的二代机则早已于七十年代末就被彻底淘汰了。由于我们起步早,十八年来在针对激光逐线扫描输出的字形发生器和控制器(后来国外改用“栅格图象处理器”这一新名词)方面坚持不懈地创新,从小规模集成电路、双极型微机、专用芯片、一直发展到最新的方正93专用协处理器芯片,从而使系统不断保持领先水平。

1985年以前,很多人对照排系统市场的前景是表示怀疑的,理由是中国拣铅字太便宜了,新技术在价格上很难与传统方法竞争。但我们始终坚信,电脑激光照排带来的是一场深刻的技术革命,其好处是不可估量的,因而推广是不可避免的趋势。事实上后来的发展势头比我们想象的要迅猛得多。因此,准确估计未来的需要对把握机遇也是不可少的。

计算机是年轻的产业,也是年轻人的副业事业,年轻一代应探索新的方法、手段和途径来超越前辈。中国是一个正在迅速发展的不发达国家,很多崭新的领域需要我们去开拓,这会给年轻人以很多的机会;只要我们不断努力,自觉地积累知识和经验,就会抓住机遇,取得成功。

1993年3月12日

本文刊登于《计算机世界》,1993年4月21日