从抗美援朝到图形图像、算法,84 岁老爷爷的跨越性技术之路
不要再问:“XX 岁,学习 XX,还来得及吗?”
亡羊补牢,为时未晚。
如果有心,什么都会来得及,只是需要付出更多的努力,只是看自己是否愿意!
本文想和大家分享的是一位名为吴祖增的 84 岁技术人的故事,他从最初的医学领域成功跨行至互联网行业,后在数学、物理、电子工程、计算机硬件和软件方面颇有造诣,并在图形图像和算法方面有着深厚的经验,如今的他博客(http://blog.csdn.net/zzwu)依然坚持更新,不愿做时代的尾巴,紧随技术潮流,真正诠释了何为“活到老,学到老”的含义。
注:下文中注释详见文末链接。
丰富多彩的人生经历
静静地回忆起过往,似乎已经过去了很久,却又宛如昨日。
我于 1933 年出生在浙江嘉兴新塍【1】,抗战时期逃难到诸暨赵家镇外婆家,在赵家蓝台小学读书,三年级时曾因逃难而留了一学期,毕业后报考诸暨枫桥一中学被录取,但未去而又在兰台补习了一学期,在赵家一共度过八年抗战的后七年。
抗战胜利后的 1946 年春,我搬到了绍兴,并报考绍兴第一中学初中被录取。读完初中后就步入了高中的大门,一直读到高二下学期,风平浪静地度过了五年时光。回忆起这段年少岁月,其中最难忘的当属初中时的一次考试。因彼时除绍兴外,还有周边许多县的小学毕业生,总共有 500 多人参加报考,仅录取 100 名,他们中不乏“天字第一号”,竞争激烈,而我以第 7 名被录取。这次的成功,不仅与过往复习有关,最重要的是也离不开我的父亲在临考前帮助我突击复习。
1950 年,在“抗美援朝”声中我报名参军,后于 51 年 1 月去了军干校,在杭州三墩学医。学完一年基础医学后,被调浙江医学院(今浙江医科大学)进修组织学 1 学期,之后回部队从事教学工作半年,就以两年制毕业,并留校任技术员。毕业后又去第二军医大学进修胚胎学一学期再继续工作两年多。一共在部队度过了四年多,曾因进修或所在单位地点迁移,我到过沪、宁、苏、杭四个城市的八个地方,直到 55 年 3 月底从南京复员。
复员后回到绍兴,在家自学四个多月,后以同等学历按第一志愿考取北大数学力学系。这次考试也很难忘,因备考很辛苦。我高三课程参军前未学,为了报考大学,必须从头到尾自学一遍,我特别要求自己做完高中几何和物理全部习题,一个也不漏。考前我的体重有 60 多公斤,录取到北大后一查体重仅 45 公斤。
北大数力系学制为 5 年。我被分在数学专业。1-3年级时读数学和物理基础课,4-5年级分到控制论专门化读数理逻辑、算法论、信息论及和计算机有关课程,毕业论文是为苏制 БЭCM 机搞《程序设计自动化》。所谓“程序设计自动化”,实际是用机器语言搞一个汇编,但其功能要求很高,某些方面就和高级语言一样甚至超过,因要求能解一些方程的计算问题。这是一个大课题,由全专门化十多个人再与本系 3 年级部分同学一起、分成 4 小组,分别考虑整个程序设计自动化所需的算术算子、循环算子、专用算子、代真算子 4 个部分的编程。我参加了算术算子小组。课题由后来曾任北大校长的丁石荪先生带,并由陈沐天、杨芙清、陈琨球几个年轻教师辅导。整个程序最后未调试完成,因北大根本没有 БЭCM 机,要到中科院去上机,而学生又无机会亲自上机,要由教师代为调试,这就拖了时间。后来丁先生说,没有带领我们这一班人完成这一课题是他“一生最大的遗憾”。
1960 年大学毕业被分配到复旦大学数学力学系,后转计算机系、再被调物理系、电子工程系、微电子系,从事数理逻辑、微积分、计算机等十多门课程的教学,搞过 VLSI 设计、测试、剖析等科研,其中 1964 年曾在计算机房工作过,后又有一段时间在系与校办的工厂工作过。
白驹过隙,时间来到了 1993 年,当时已经 60 岁的我开始办理了退休。彼时,学校聘我为 CAI 实验室顾问,帮助一些学生搞软件开发,后来直到 CAI 实验室主任也退休、CAI 实验室关门为止。退休后也曾应同事邀请为一些单位开发过应用软件,还在学校内外从事计算机自考生的教学。这些工作一共进行了 8 年,直到 2001 年,从此呆在家里做我自己感兴趣的事,包括读书看报、上网浏览、做网站、参加论坛,写博客回忆我做过的工作,或应邀单独或与别人合译一些书【2】。
跨越性的技术转型之路
也许人的一生最幸运地就是可以从事自己喜欢的事情。
虽然我的职业生涯好像有许多转变,但是幸而最终选择了自己的兴趣。至于为何会有如此地转型,其中也有不少隐藏的原因。
医学。我只学了一年的基础医学,后来进修的也是基础课,而根本原因还在于我从小喜欢数学,不喜欢将来自己很有可能被分配到医院去与医学打交道。
数学系到计算机系。首先是由于我当时业余喜欢动手装收音机、万用表、信号发生器等电子产品,1964 年春,数学系就安排我到本系 130 机房搞计算机的维修工作;66 年文革期间我又抽空独自一人去数学系自制的 602 机的机房整理了全套资料;68 年复课闹革命后我还利用这些资料为数训班开过计算机原理课,所以后来复旦成立计算机系时,我以及所有和计算机教学有关教师,理所当然地要一起转到计算机系去。
从计算机系转物理系。这则是当时物理系的要求,那时的物理系希望计算机系调一名教师去帮助他们教计算机原理课,而后我接受领导的安排就去了物理系。物理系有许多专业的教研组,包括半导体器件、半导体材料、半导体物理、无线电线路等,我去了无线电线路教研组,但也为其他专业学生上课。
再从物理系转电子工程系。这是 1979 年的事,当时电子工程系以 ZB-781 工程的名义申请了国家项目,准备搞 VLSI 设计和制版一条线的建设。这需要许多人,包括维护计算机和从事软件设计。当时,我去系里时,已刚从苏州无线电厂买到 DJS-130 机和一台从日本引进的 Tectronix-4014 图形显示终端,但厂家还没有为我们以及许多买家进行培训,两个设备也没有连接起来。我到电子工程系首先做的工作就是参与接机培训,熟悉 Tectronix-4014 的性能,设计并制作了一个 8-bit 接口将国产 DJS-130 机和进口的 Tectronix-4014 连起来。
至于从电子工程系转微电子系,则是我退休后几年的事。那时剖析组已改称为专用集成电路设计中心,由于人数很多,后来就从电子工程系独立开来而成为微电子系。
科研生涯的成功与失败
真与假、对与错并行。
在我一生从事的工作中,在教学方面,我教过10多门课程【4】,其中只有几门数学课是我在大学中学过的,其余都靠自学后进行,并多数自编了讲义【2】,这一点我认为基本成功。在科研上,不管是硬件或软件、属或不属于我的专业,我接受了就极力去做,其中不少是别人不会做、或做得不好、或想不到要做的工作【5】,其中有:
1969 年为上海市红卫皮革厂设计5A硅平面大功率管掩膜版图【6】——这是专门设计晶体管的上海元件五厂做不到的指标,用他们设计的掩膜生产出来的大功率管只能流出3A,该厂也曾叫复旦物理学搞半导体的人去改进设计,但也回答不行,后来就要我帮忙。我作为一个完全外行花了 3 个星期的钻研终于设计完成,后图纸被厂家拿去制版并投片试验,竟一次成功,后被大量投产,“直到堆满仓库,并造起了大楼“,创造了巨大财富(当时一只5A 大功率管卖 117 元,3 只管子可卖一两黄金)。
73-75 年集成电路测试系统中的许多部件设计【7】——这是与上海计算所等几个单位的设计人员一起完成的工作,我做了其中相当繁琐的几个设计工作,这也是为社会间接创造巨大财富的工作,因当时上海几个元件厂年产集成电路产值共 10 多亿,但如果不经测试的集成电路是一个也卖不出去的。
79-82 年的快速最优通道布线算法 FOCR【8】——这是被中、外同行好评或看不懂的软件,它比国外原有软件速度提高几倍到几十倍,特殊情况下可以更多数量级。
81-82 年的崎岖通道布线算法 DOCR【9】——这是很有用但国内外同行不能做或想不到做的事情。
84 年的第一代身份证底纹曲线绘制程序【10】——这是公安部曾叫北大、清华、中科院、华东计算机所等单位做而不会做的事情,而我花时 2 小时就把程序设计完毕再化 2 个通宵把正反两面的底纹曲线用平板绘图仪画出来了。
85 年的图形编辑器 GED【11】——这是在别人都当字符输入用的终端上开发的,我仅仅凭终端说明书上看到能显示单个像素的功能而开发了整个软件。
87 年的版图图形-线路图转换程序 LVS【12】——这是一个在 Jupiter7 彩色图形终端上有漂亮图形输出的程序,以至于程序鉴定时,当时复旦校长华中一先生看到以后第一句话就是问“假的吧?“,不相信屏幕上电路图是从版图图形自动提取得到的。
91 年开始的 MOL4D【3】——这在前面已介绍,是受到内行单位一致好评的软件,全国高校CAI软件评比得到最高的等级奖,而分组评比时都是第一名。
94 年的 FDISK 磁盘分区和 CMOS 设置模拟程序【13】【14】——这是两个与《计算机应用能力中级》配套的软件,被上海电视大学、劳动局等许许多多单位免费使用,用过人数单是上海就至少100万。
95 年的《重锤下落式弹簧动刚度测试》软件【15】——这是我在 DOS 下开发的软件,由于性能可以,界面也不错,一直被用户上海材料所使用到 Windows 时代好多年而不肯更换。
这些工作有的比较简单(如绘制身份证底纹曲线程序的设计),而其他大部分比较繁琐或相当繁琐,需要我不断思索创新,完成后使我得到了一种成就感。
然而想要往成功的方向迈进一步,也会掉入无数的坑中。曾经我在从事教学讲解、编写教材时都出过不少错误,幸好有学生及同事的提醒,才得以及时纠正。
抓住科技潮流,想走
没有完美的人生,但是我尽力。
根据个人的经验,即在图形软件的开发方面,典型例子就是上面提到的分子图形软件,从 MOL3D 到 MOL4D,后者已开发了许多版本和功能模块。这一方面是为了增加软件本身的功能,但也是为了“顺应时代潮流”吧,因为不这样软件性能就明显落后,甚至根本不能再用。我必须不断更新它,以适应不断更新的软、硬件环境,包括分辨率的提高、内外存储器容量的增加,操作系统、编程语言的改变等。
但很难说我在其他许多方面都能适应时代潮流,实际上,我常感到自己已落后于时代潮流。现在的我也有许多软件不会操作,因此在 CSDN 上转载了许多技术性博客,并不是说我已熟悉这些博客内容,而只是放在那里作为“备忘”,到时候可以翻出来供我自己学习之用。
新旧主流技术冲撞,想看
长江后浪推前浪,总会有交接的点。
曾经,我使用过的计算机语言包括 Fortran、C、C++、Basic、Pascal、Java,但我用的最多的是 Fortran 和 Pascal。而我之所以不喜欢一直用 C 而用 Pascal 是有原因的。1989 年夏,我个人买了一台 PC 机(PC-BOY机),它只有 256k 内存,和容量为 365M 的一只软盘,我在其上曾用 TC-1(Turbo C -1)和 TP-3(Turbo Pascal-3)编过同一个程序,结果用 TC-1 编译时竟需要我将软盘从驱动器中拔出-插入、拔出-插入重复十多次,结果仍然未通过,而用 TP-3 编译时只要拔出-插入一次就通过。这一对比使我从此对 C 没有好感。
整体对我来说,主要关注的点可能并不在编程语言而是解决问题的算法。我关心的还是和图形、图像、多媒体有关的部分,并且希望将它们放到网上去,能被别人浏览。现在把图形放到网上已很容易,但要把我以前制作的分子动画放到网上就不容易,因为别人制作的浏览器不支持我制作的动画格式。我也想自己做一个浏览器来支持这种格式,让别人使用我的浏览器以观看我的分子动画,但还没有动手。我以前也做过一个多媒体演示软件,能用来观看 MPEG、DAT、AVI、WAV、MP3、MID 等多种格式的媒体文件,但现在已不能全支持了。很想把它更新一下,但发觉也不容易。
拥抱时代产物——人工智能技术,想听
我无法深扎的地方,希望有人能实现。
人工智能是一很老的课题,早在上世纪 50 年代初计算机刚发明不久就有人研究过,2006 年我在 CSDN 上也转载过数学-逻辑学家、英国人图灵 1950 发表的的一篇文章【16】。这篇文章中谈到计算机与人下棋涉及人工智能问题。但由于当时机器规模很小,他所想象的机器的人工智能只能与人下 Tic-Tac-Toe 那样的简单棋类游戏,那是用简单的确定性算法就能解决问题的。到了60年代,人工智能问题已在许多领域提出来了。我有一本 63 年出版的叫《Computers and Thought》的书,里面就大量谈到人工智能问题,计算机除了能玩游戏外,还能去证明数学定理、回答问题、模式识别,等等许多方面,但当时实际很多也还是纸上谈兵,没有实际的产品,因而受到人们重视程度永远不能和上世纪 90 年代 IBM 公司开发的深蓝或当今 Google 开发的 AlphaGo 那样的实际显示巨大威力的程序相比。
而对于“人工智能将取代人而进行劳动”这一说法,并非当今才出现,而是工业革命以来就有的事情。事实上,“一切(机械的)机器都是人手的延长“,因此都是用来取代人手进行劳动的,只是没有人工智能的机器只会劳动,不会考虑怎样一步一步劳动,它们怎样劳动必须由人预先安排好。另一方面,具有人工智能的机器——电子计算机没有机械机器的配合,也只会脑力劳动而不会体力劳动。必须两者配合,才能代替人的手和脑进行两种劳动。至于“人工智能的机械机器最终是否能取代人的一切劳动“的问题,我的看法答案应该肯定,但只能要求一个机器人做一种或一些工作,而不能要求它像人那样做许多许多的工作,因为计算机存储器毕竟不可能做到人类大脑那样大的容量。
技术的产生才会促使生活的便利,对于人工智能领域的未来发展,我的期望很大。从自身来说,我已 84岁,住在没有电梯的五层高楼上,因脑梗不能下楼去买菜、买米、买一切需要的东西,全靠家里人办这些事情,但家人也有老的一天。我期待有一天会出现人工智能的机器人,它能听我指挥,替代我的家人上、下楼梯去买米、买菜、买我需要的任何东西。这个机器人还要能自己照顾自己,如自己去充电,我没有叫它办事时,就自动远离我,跑到阳台角落里躲起来,不要妨碍我们走路。如今的机器人已能走路,推翻它也能自己爬起来,还能自己开门出去再开门进来。我想叫它看红灯、串马路也不会成问题,就是要它到小菜场自己寻找摊位去买我叫它买的小菜可能不容易。
对身处浮躁互联网环境下的技术人,想说
凭心而论,未来机遇无限,勿失本心。
曾经我做过各种的工作,但与如今很多人一样,这些大多数都是别人要我做的。学习的内容就是针对要我做的工作,我无从选择。当然,有空时特别是当退休后,也去学一些自己感兴趣的东西,或者不感兴趣但很需要的新知识、新技能。但当今是科技知识爆炸年代,可学东西很多很多,我们不可能样样都学,要学什么,必须有所专攻,仍需一点一点地积累,一步一个脚印。
现在的开发者们,为了应付复杂的就业状况,个人认为全靠自己一点点摸索是不够的,因为这样速度太慢了,建议越早接触计算机越好。我们虽提倡“活到老,学到老”,但老年人各方面的功能都衰退,学习效率很低,特别是眼花、耳聋、连一个光标也看不清,由于记忆力减退,一时吸收了也容易忘记。我认为“学电脑要从娃娃时就开始”是很有道理的。尽管知识和技能都要一点一滴地积累,但年轻时学比年老时学,所学到的要多得多。
另外,我对计算机接触总的说来比较早,对许多技术有好奇心,也有所创新,喜欢解决各种技术问题,实际也做了一些有价值的东西,但我总是感到时间不够,事情一个接一个地没完没了,不能让我把已做过的事情好好进行总结,而即使有的项目按要求已作过总结,也不喜欢及时将它们公开发表让别人知道从而进行推广,曾开发的部分软件有人愿意收购或提议我申请专利,在此过程中,我都未接受他们的好意,这或许不利于将科技转化为生产力,这算是过往很大的一种遗憾。
相关资源:
【1】我的出生与经历:http://blog.csdn.net/zzwu/article/category/6122903/
【2】a 我的著作与翻译:http://blog.csdn.n e t/zzwu/article/details/91915319/
【2】b 我从事的课程教学:http://blog.csdn.net/zzwu/article/details/53996517
【3】分子图形软件MOL4D:http://blog.csdn.net/zzwu/article/details/42610721
【4】我教过的课程:http://blog.csdn.net/zzwu/article/details/53996517
【5】我的硬件软件设计:http://blog.csdn.ne t/zzwu/article/details/9024697/
【6】5A硅平面大功率掩膜设计:http://blog.csdn.net/zzwu/article/details/9069369
【7】VLSI测试仪会战项目:见【11】中的第11a,11b,11c,11d四项
【8】快速最优通道布线:http://blog.csdn.net/zzwu/article/details/8253886
【9】崎岖通道最优布线:http://blog.csdn.net/zzwu/article/details/8253889
【10】第一代身份证底纹曲线绘制:http://blog.csdn.net/zzwu/article/category/6562211
【11】图像编辑器GED:http://blog.csdn.net/zzwu/article/details/8254196
【12】版图到线路图转换LVS:http://blog.csdn.net/zzwu/article/details/8274518
【13】FDISK软件的模拟:http://blog.csdn.net/zzwu/article/details/9075751
【14】CMOS设置的模拟:http://blog.csdn.net/zzwu/article/details/44885663
【15】弹簧动刚度的测试:http://blog.csdn.net/zzwu/article/details/68941911
【16】图灵:机器与思维:http://blog.csdn.net/zzwu/article/category/243030