作者: 刘韧、张永捷 | 日期: 2018-06-06
CCDOS发明人严援朝
本文写于1999年。
严援朝, 1951年10月26日生,毕业于华中工学院,高级工程师。
CCDOS的作者,MSOA的作者,长城0520CH微机的主要设计者。曾荣获国家科技进步二等奖。
1968年9月,在呼伦贝尔盟莫力达瓦旗插队;
1972年10月,在河南平顶山市姚孟电厂做工人;
1973年9月,在武汉市华中工学院电机系学习;
1976年9月,在毕业回姚孟电厂任技术员;
1979年3月,在北京低压电器厂做工人;
1980年1月,在第四机械工业部第六研究所任技术员;
1986年,任中国计算机发展公司昆仑电子印刷设备公司副总工程师;
1988年9月,任保利电子技术公司副总经理兼总工程师;
1992年1月,任集成电子技术公司董事长兼总工程师;
1993年8月至今,任四通集团公司总工程师,四通利方总工程师。
这个标题想来不会太称严援朝的意,一个CCDOS怎能把整个严援朝概括!CCDOS之外,严援朝还做过许多有意义的事:比方说,主持开发使长城0520成为0520CH的CH显示卡,让汉字能像西文一样实现25行快速显示;再比方说,主持设计的人民大会堂电子表决系统,是全世界最大的电子表决系统。然而,不管这些成就有多么了不起,也无论严援朝在它上面花了多少心血,却总也无法和他那个只花了5个月时间写就的CCDOS相提并论。CCDOS实在是太耀眼了,它对中国人使用PC具有里程碑的意义。人们可以不知道严援朝,但无论如何无法越过CCDOS谈论中国PC事业的起始。
另外,将CCDOS和严援朝并列,虽说可以就此把严援朝定义为中国第一代最著名的程序员,但CCDOS毕竟意味着过去,意味着15年以前,严援朝在被人尊称为老前辈的同时,也被人划归到只会用汇编的过时人物。但实际情况并不是这样,1985年,当别人在用Debug改他的CCDOS的时候,严援朝已经开始用C语言写字处理软件XE了。当我们称赞他用C语言很早时,严援朝大声说:“还早啊,都1985年了。”用完C++,他现在马上又要改用Java了。作为四通和四通利方的双料总工程师,在这个以技术立业的公司里,严援朝要求自己做到凡是公司涉及的新技术他都得会。“作为总工,我不敢说样样精通,但至少要懂,而且,在出现问题的时候,能马上接得上手。要是我真的不行了,那么,也就到了我该隐退的时候了。”今年已经47岁的严援朝现在负责利方多元系统支撑环境的设计工作,为手下写的程序“扒”Bug,实在缺人的时候,他还要挽起袖子自己写程序。
所以,《严援朝没老》可能更适合本文,但这样的标题能吸引几个读者的注意?读者关心的是——
CCDOS的诞生
1983年,国家计算机工业总局在京召开全国计算机协调工作会议,会议把生产IBMPC兼容机定为中国计算机发展的方向。生产IBM兼容PC,硬件厂商没有问题,关键在软件,在于PC上一定要有汉字系统,但那个时候做汉字系统,是一非件常困难的事。此前为了让ZD2000汉字终端能处理汉字,花了好多年时间。所以,与会专家大都认为,想让PC在5个月内具备处理汉字的能力几乎没有可能,全国100多家大学、研究所没有一家愿意承担开发汉字系统的任务。
当时已经32岁的严援朝在第四机械工业部第六研究所工作,工农兵学员的出身使他连参加这个会议的资格都没有,是严援朝的一个同事会下和严援朝讲了此事,严援朝对他的这位同事说:其实让PC处理汉字很容易。“因为我前一段做了把电视机改装成终端的工作。不就是出两个汉字图形吗?很容易!”
严援朝没想到这位同事会把他的话带回会上去。当时国家计算机工业总局这个项目的负责人俞正声找到严援朝,问他是不是真的能做,严援朝斩钉截铁地说:“能做。”其实,严援朝心里并没有谱,“我是硬着头皮接了此事,幸好也就干成了。当时胆也大,现在想起来都有些后怕,但人被压抑到一定份上,就什么都无所谓了。那时精力好,年青好胜,就觉得天下没有我做不出来的事。”严援朝决定“胆大包天”一下的内在原因是,他意识到“这是一个机会,工农兵学员在研究所地位很低。揽下这个课题,我就可以当课题组长了,从一个普通助理工程师一下升为课题组长,是一个很大的飞跃,是破格提拔。”
严援朝接下任务后,开始争取全所唯一的一台IBMPC,当时严援朝每星期只有一次上机机会,一次两个小时。严援朝提出要想课题如期完成,“这个机器必须归我使。”有时候要做事,不争取条件不行。严援朝争取到的这台IBM原装PC配置是128K内存、CGA显示、一个160K软驱,没硬盘。严援朝和新分来的大学生欢天喜地把机器搬回来后,大学生忙着插电源,结果把110伏的电源插在了220伏的电源上。“我当时就想跳楼。我好容易当上了课题组长,我好容易把设计方案拿了出来,我好容易把机器要了回来,我好容易有了这么一个机会,但是……”俞正声得知此事后二话没说,让香港商人送来了新电源。
条件都满足了严援朝,也该轮到严援朝显示一下自己实力的时候了。1983年3月汇报,为了向专家们证明用软件方案能在IBMPC上显示汉字,严援朝用BASIC写了一个程序,在显示器上画出了一屏“甲”,第二屏显示的全是“田”。在此之前,汉字在计算机上显示都是通过硬件实现的,谁也没有用纯软件的方法显示过汉字。
4月份,严援朝拿出总体方案。跟着,他着手把原来汉字终端上的GB7663个汉字字模通过程序拿下来,供CCDOS使用。严援朝是学摩托罗拉芯片出身,会的是68系列的汇编语言,Intel的汇编指令他从来没接触过,严援朝拿着IBMPC随机带的手册,从头学Intel汇编。
6月24日,严援朝正式动手写CCDOS,6月30日写完,一共写了一万多行。CCDOS源代码中,有一句是“6月24日”,别人都不知道是怎么回事,在改进CCDOS的时候都没有删。写CCDOS那段时间,严援朝一天只睡三四个小时,一天吃一顿饭,一个人在一个很大的机房里面,不停地写,来不及吃饭,也忘记了时间。
CCDOS遇到过很多技术难题:当时显示卡只能支持到320×200分辨率。这样的分辨率用来显示西文没有问题,一个西文字符用7条线就可以显示清楚,所以,可以支持25行显示;而一个汉字要15条线才能显示清楚,所以,最多只能支持10行汉字,一行提示,但CCDOS又必须支持25行的西文软件。这下可把严援朝难坏了。严援朝费了15天时间想出来做一个“虚屏”,用自动判断的方法解决这个问题。这样一来,CCDOS就能支持25行的BASIC、EDIT、WordStar、dBASEⅡ等西文软件了。虽然支持得不够完美,但不管怎么说,“能出来就是好家伙”。
严援朝让分给他的4个大学生做输入法,“我定义结构和规则,让他们创造性发挥。汉字终端上有首尾码,我也没有看人家的编码规则,不就是一个汉字头、一个汉字尾吗,让学生按照自己的想法去定就行了。”
软件做完总要起个名,CCDOS是为中国第一台PC长城机做的,ChangCheng,取汉语拼音的字头,就成了CCDOS。CCDOS的含意并不是后来外人猜测的,是“中国字符”的缩写。
等严援朝让PC第一次显示出GB第一个字“啊”,等严援朝把CCDOS做完,众人才明白原来做汉字系统这么容易,输入、显示汉字这么简单。“很快,在1984年、1985年满大街尽是各种各样的DOS。我的源代码谁都可以COPY,谁都可以分析,我是国家工作人员,如果这东西对大家有用,我干嘛护着不给大家。”
严援朝没有在CCDOS上署名。“CCDOS是国家‘六五’项目。再说,我们家也没有这个传统。直到现在,我写程序从来不署名。”
1983年8月,CCDOS在北京展览馆亮相,轰动一时,严援朝因此第一次出国,去了趟瑞士参加展览。
长城0520CH的那块卡
在8088只有4.77M的CPU上用软件方法处理汉字,想速度快,显示漂亮是不可能的事。在做CCDOS之初,严援朝就提出另外一套硬方案:把汉字做到显示卡里面。
1984年8月,严援朝随六所、738厂和清华大学开赴香港,为长城PC开发配套的图形汉字显示卡。汉字显示卡做了出来,实现了25行汉字显示,但汉字显示速度还是太慢,一行一行地滚屏。现在的长城集团总裁王之看了,不是太满意,严援朝就说他还有一个方案,可以解决速度慢的问题。
这样,由严援朝带队一行10个人第二次来到香港重新做。“香港一个工程师配合我,主意我出,活他干,我们一块调试,一个多月,就把新卡做了出来。”
严援朝的实现方法是,在显示卡里面做了一个汉字字符发生器,要显示汉字时,只需把汉字的代码送到显示卡,再由显示卡里的字符发生器负责把汉字代码解释成汉字图形在屏幕上显示出来。CCDOS实现汉字显示的方法是用软件在屏幕上画图,所以很慢;在香港做的第一个方案由于向显示卡传输的不是精简过的汉字代码而是汉字图形,CPU负担过重,所以也快不起来。
1985年,长城0520CH生产出来,拿到美国COMDEX展览,其640×480的分辨率、25行显示汉字的能力引起了很多人的注目。“日本人趴在那,拼命画我们的电路图,想搞清楚我们是怎么做出来的。”
长城0520CH的出现,使IBM专为中国设计的IBM550在国内卖不下去。“我们把所有的汉字全放在了显示卡里,IBM550只放了一部分,用的时候需要置换;我们的机器汉字是汉字,图形是图形,还可以往一块叠,IBM550不行;另外550要用专门的软件,我们用通用软件。”
从香港回来,开发组的每个人获得了一台18英寸彩电的奖励。1986年,CCDOS被评为国家科技进步二等奖,严援朝拿到了2000元奖金。除去这点奖励,严援朝做再多的工作,都是按月拿固定的几百元工资。严援朝不在意这些,也不在意别人修改他的软件挣了大钱,他的快乐在于:“我觉得我能够左右世界。那个时候,PC处在起步阶段,我做成什么样子,人家就用成什么样子。我手下有那么多清华的老师,我要他们做什么。他们就做什么,我说你把这个软件做成这个样子,他就把软件做成这个样子,我说你把硬件设计成这样,他就把硬件设计成这样。最后,拿出来的机器,都是我脑子里原先都想好的蓝图。一年之前想好的蓝图,一年以后,就创造了出来,心里特别高兴。人家给不给钱是一回事,但这东西是我想出来的,而且很多人都挺喜欢用,这就足够了。”
被迫学新东西
严援朝是那种知道激流勇退道理的人,做事情做到一定程度,当他发现再做下去的条件不具备了,他就会主动退下来,换别的事情做。这样做虽然可以避免自己受伤害,但也逼着他要不断学新东西。“我搞什么,都不允许我搞到底。做微处理器时,软件硬件一起上,出现了搞汉字的机会,冲上去做汉字系统;做到一定程度,又得退下来,写真正的应用软件,和人家拼,那没办法只得学C语言;用C写完字处理、排版软件,又要去搞应用;搞应用,不用C++写不了应用软件,现在又该用Java了。”严援朝把学新东西归结为“一切都是生活所迫”。
1985年,严援朝离开了中国计算机发展公司。“我本来还有机会去做创造性的事情,但是条件没了。”离开时,单位觉得严援朝做出了很大贡献,给他提了高工。严援朝来到昆仑电子印刷设备公司。“不让我做系统工作了,我就做软件,我写软件也一定能做得挺好的。”烦闷之中严援朝想到这,嘻嘻笑了一下,随手在计算机上打了个XE(嘻)。XE就成了严援朝写的第一个字处理软件的名字。后来,别人为XE找了一个很好的解释:X表示任何未知数,E表示easy,合起来,就是Anythingeasy(任何事物都容易)。这个解释很符合严援朝的性格,“不知道,没关系,只要让我做,肯定能做。”
XE花了严援朝近一年的时间。XE是一个用来取代WordStar的字处理软件,它利用了长城0520CH的特点,显示速度很快,能同时开四个窗口,编辑四个文件。“CH是我设计的,我当然知道CH里面所有的秘密、所有的特性。”
XE只能在长城PC上用,所有用户也就一两万。严援朝认为长城机在处理汉字技术远远领先的情况下没能占领大部分市场,是不肯单卖CH显示卡的缘故。
做完XE,严援朝又写了一个命令行的排版软件,有点像现在的WPS,但也没卖开。早在1984年的时候,严援朝就提出过做文字处理机,但没有机会做。
1988年,离开昆仑公司的严援朝特别想去国家信息中心搞大型机,搞真正的计算机研究。但有朋友极力劝他去做保利电子公司,这样严援朝就成了保利电子公司的副总经理兼总工程师。在那里,严援朝用9个月时间主持设计完成了人民大会堂第一套电子表决系统。“这是世界上最大的电子表决系统,有1700多个席位,电缆用了50多公里,几百人负责施工,部队派了好几千人帮助测试。”
1992年,严援朝离开保利电子公司的时候,终于想到自己开公司,可是后来,“我发现我办不了公司。第一、我卖东西肯定要赔,我老怀疑自己卖给用户的东西值不值;第二、人事方面的事情纠缠在一起的时候,对我来说,就变得非常难。”尽管严援朝办的集成电子公司有一个不错的产品——MSOA可视化的排版,也承建过北京市公安局的户籍系统。但严援朝发现自己不适合办公司后,果断把公司委托给了一个朋友。“现在人家干得挺好,比我在的时候办得好。”
1993年,微软请国内大公司帮助推广Windows,让国内公司出人巡回讲课。四通的王杰找到严援朝,请他代表四通讲面向对象的设计。从此,严援朝和王志东走到了一起。
我太适合做计算机了
严援朝经历坎坷,但严援朝很幸运,他最终找到了最适合他做的计算机工作。
1968年,17岁的严援朝去呼伦贝尔盟莫力达瓦旗插队。4年后,靠父亲的朋友帮忙,他来到河南平顶山姚孟电厂做工人,当时的想法是做工人总比插队做农民强。1976年,从华中工学院毕业,回厂做技术员。1979年,为了回北京,严援朝求厂长把他降格为工人,因为干部不许对调回京。进北京低压电器厂焊了一年板子的严援朝很苦闷,他哥哥把他推荐给了当时在四机部六所工作的俞正声,通过俞正声介绍进了六所。
报到第一天,室主任问严援朝:你会计算机吗?见都没见过计算机的严援朝说,我会!“我干嘛说我不会。我说,我什么都懂,我都会。只不过没有机会接触,但我都知道。”严援朝当时知道的仅限于曾经听说过“8”什么,他连8008处理器都说不全。
室主任给了严援朝三本讲微处理器的书,严援朝看了三个月。三个月后,室主任问严援朝看得怎么样,严援朝说,我什么都会了。“真没有什么难的,80年代,计算机刚刚起步,相对来说,都比较简单。”室主任就让严援朝改造一个进口的单板机,加内存,改软件,添外设,严援朝用了一个多月就完成了。看到严援朝真行,室里面就让他正式参加课题组参与设计摩托罗拉系列的计算机。
有人说,严援朝没有任何基础,能做计算机,而且做得很出色,是个天才;严援朝却认为,所有人的智商都差不多,最主要的事情是,有没有一个很好的机遇,找到最适合自己做的事。他的幸运仅在于,在各种各样的组合条件下,找到了最适合他做的事情。“一进六所,看完三本书,我就觉得,计算机这东西对我来说,绝对不神秘,太容易了。一份从来没接触过的工作,一接触就明显地比别人高一筹,这就是最适合你的工作。比如,做买卖,一做就明白做买卖是怎么回事,那你肯定适合做买卖,你就不要再想别的事了。而一个工作你学了十年,整天抱着书看,感觉特别痛苦,还很难,这事你干脆放弃算了。”
严援朝认为自己看问题的方法和思维方式,特别适合计算机“说一不二”的原则。“对就是对,错就是错,计算机从不蒙人。”“我这个人记性很差,计算机倒也简单,就是0和1,只要记住基本的两三条规律就行。既然我在记忆方面不如别人,那我在别的方面肯定比别人强,我在两三条规律的灵活应用方面、拓展应用方面能力就很强。数据结构,我没学过,我看了五天,我觉得我脑子里原来就是这样想的。”
在严援朝眼里,写软件的过程就是弄清楚自己将要写的软件“是什么”的过程,“把软件的目标一直分解下去,分解到许多个最简单的“是什么”,分解完了,这个软件也就设计完了。”“做软件就是在不断地明确目标,就是搞清楚你的GO是什么,所有的软件都逃不出那三句话——IF、THEN、ELSE。棒的程序员很快能够知道自己的GO是什么,老没长进的程序员老也弄不清楚自己到底要干嘛,所以永远处在学习过程中,手里永远拿着一本书,永远在学,永远也学不会。我也看计算机书,但看书的方法不一样,我能在很短的时间内找到书里最关键的几句话,然后把书扔了。”
“我希望做软件工作的人,都是适宜做软件工作的。但事实上是做不到的,能够知道自己最适宜做什么是很难的,有些人可能一辈子在做他不适宜的事,没有机会啊,假如没有CCDOS的机会,我也不会去做软件。”
因此,严援朝清醒地知道,大型的软件不能依赖像他这种人,而是要依赖一大批普通的、有扎扎实实基础的工程师。“我们这些人可以出主意,可以做系统分析,我们有各种各样的感觉,但我们这样的人毕竟太少。”
所以,严援朝特别强调程序员之间的合作。“这个时代和我们那个时代不同了。我们那个时代个人行为太多,因为那个时候,毕竟简单,软件也小,因此,门外汉可以做软件;但现在比较难,现在要做大软件,只有大型的、完善的软件才能有商业价值。因此,大家要遵守共同的规则,设计时定下来的结构、通讯方法、修正方法大家都要遵守,别老异想天开。你的领导安排你做什么事,你就老老实实做,不要急于表现自己的发明创造。现在程序员第一个任务不是表现你的程序技巧有多好,而是你充分理解领导交给你的任务是什么。”自己是一种人,但能明白和自己不一样的人,很不容易。
1996年秋天,曾经跟着严援朝在长城干的程序员姚志军在中关村自己开的闻捷公司里面给我讲严援朝的故事的时候,我就萌生了写严援朝,写一写中关村传奇故事的念头。我想,在中关村杂乱林立的小公司后面,隐藏着的无数个不眠之夜和无数个成功的喜悦和失败的心酸,才是中关村真正能打动人心的好题材。
1997年,下决心写《影响中关村的50个人》,有严援朝这样的人值得写是一个重要原因。
严援朝极少抛头露面,为了约上采访,我们请严援朝的“老板”王志东帮助做“思想工作”。王志东怕严援朝的“脾气”让我们不舒服,采访那天亲自出面为我们张罗介绍,意思是说,这是我们的朋友,别慢待了人家。
其实,严援朝并不是那种特别难以接近的人,他只是没有什么城府,心里想什么就说什么,从不掩饰而已,而且他说话声音特别大,采访时,也没关门。熟悉严援朝的人喊他老顽童,王志东说严援朝生理年龄47岁,心理年龄只有20岁。虽然,心里想什么就说什么很真诚,但不分场合地坦诚,也会无端地得罪一些人,坏了一些事。这一点严援朝清楚,但他不想改。“我特讨厌别人玩虚的,最要命的是浪费我的时间,还逼着我去听,没意思。”严援朝觉得自己青少年时期赶上“文革”,没过好,他想重过青少年,因此严援朝总能和十几岁、二十几岁的人玩到一块,喜欢跑到网吧里面干Game(游戏)。
严援朝出生在一个多子女的家庭,他排行中间。严援朝说,他小时候头就特别大,重得抬不起来,老是耷拉着脑袋,不受人重视。因此“我这人比较安分,从不幻想有什么东西会掉到我头上来,所有的东西都要靠自己努力才会有机会。”严援朝最喜欢巴金的《家》,因为他的母亲也出身在武汉像《家》一样的封建大家庭。严援朝印象深刻的另一部小说是巴尔扎克的《邦斯舅舅》,邦斯舅舅是一个心无城府的总招人算计的古董专家。我们问严援朝,喜欢这部小说是不是因为他自己也常招人算计,严援朝回答,那倒也不是,就是印象深刻。
严援朝每天上班第一件事,是用40分钟时间跑到每一个他管的程序员面前,问“工作都怎么样了,你做得怎么样了,有什么进展,有什么困难?”然后,躲进自己的办公室里做昨天晚上睡觉前想好的事。
47岁的严援朝还在跟踪最新的技术,一方面是因为他觉得新东西很好,不学新东西会“死掉”;另一方面是为了带新人。“怎样教新人最快?那就是用最新的技术来教他们。现在很难设想问一个新人会不会8080的汇编,会不会6800的汇编,用不着会。”
第一线的严援朝说,他最多再干10年,说这话时,严援朝的表情让人觉得彷佛10年不长似的。“退休之后,不是说不写程序了,而是我写的程序将不再会影响公司,不会再作为公司的产品了,那时完全是玩,没准我会去做个黑客。”
严援朝最高兴的时刻在软件完成之时,但高兴之余就失落。“这个软件完成了,我还做点啥,没劲。”最多也就高兴一天、半天。“我想法特别多,我想做的事也特别多。现在只要有人在做我想做的事,我就高兴。我现在岁数大了,我知道我一个人做不过来许多事。”1985年、1986年的时候,严援朝特别想去做机器人,“我当过钳工,当过电工,搞过硬件,会写软件,我很喜欢数学。”只是没有机会。所以,严援朝明白个人的能力再强都没有用,是时代推着个人走。
1981年,大家刚刚把一台机器调出来,严援朝一个开关扳错了,整个机器烧了,课题组几个月的心血没了。当时的课题组长刘德贵说,没事。严援朝从此学会了宽容,懂得了干什么事情都要领导支持。如果一件事情领导不支持了,他也就不想再做了。
严援朝与王志东
严援朝、王志东走的是相同的路:写程序成名,然后自己开公司。王志东自己为自己做主,掌起四通利方帅印,在总经理的位置上越坐越有感觉;严援朝自己开公司做董事长,虽然手里也有不错的产品,但公司却总是做不起来,最后甩手而去,把公司交给自己的朋友打点,小公司竟越滚越大,生意越做越红火。
举这个例子是想说明:不是每一个成功的程序员开公司都能成功,也不是每一个成功的程序员开公司都不能成功。关键要看自己是不是适合开公司做总经理。怎样才能知道自己究竟是不是适合?没别的办法,只能试。王志东一试,觉得很适合,继续做;严援朝一试,发现不行,调回头继续做他的程序员,当他的总工。在我们看来,这两种结果都非常正常,都非常自然,绝对不能说王志东试成功了,很有意义,严援朝没试成功,就是白费时间。生命贵在迎接未知的挑战,本可以一试,因为怯懦,到最后连自己都无法搞清楚自己究竟是不是适合做某事的境遇,才值得惋惜呢。
一个人在某方面取得了一定高度的成就或者有了既得利益之后,就很难否定自己,很难凤凰涅磐,寻求新的突破,然而“总是走在老路上”的生命有何意义?尼采说,“错误不是盲目,错误是胆怯……任何成就,任何进步都源自勇气,源自对自己的强硬态度,源自针对自己的整饬。”成功的人一定是勇敢的人。
来源:知识英雄
作者:刘韧、张永捷
来源: 刘韧