云大计算机软件专业的孕育与成长
作者:朱维华时间:2014-04-10

云南大学数学系在20世纪60年代初成立了计算数学专门化组,用手摇计算机对学生进行计算方法课的教学。1971年下半年学校花了二十二万元专款,购买了属于第二代的小型晶体管电子数字计算机——DJS-5机,是云南省第一家配电子数字计算机的单位。这种机器由清华大学设计,北京无线电三厂生产。主机柜有四门柜大。这台机器的内存是一个磁芯存储器,只有4096个单元,每个单元21位,采用二进制代码编制程序,纸带穿孔输入程序和数码,机器里还有一个4096单元的固定存储器,主要存放外设输入输出控制程序,是一个二进制代码的磁芯存储器。这台机器放在数学系机房,解决计算数学专业学生学习程序编制和计算方法课算题使用,同时也为校内外科研计算服务。这台机器的最大缺点是没有什么软件,俗称裸机,用二进制代码编制程序,非常麻烦,调试程序也很复杂困难。

50年代末期以后,国内编制算题程序已使用FORTRAN、ALGOL-60等算法语言,大大简化了程序的编制和调试。但买回来的DJS-5机上未配算法语言,学生上算法语言课要到成都或西安等外地去上机实习、调试程序。我校计算机方法课也无法用算法语言书写算法并上机计算,所有程序只能用二进制代码编写。

为了解决上述问题,为彻底改变DJS-5机的落后局面,数学系计算数学教研室在1974年申报了省教育厅的科研项目——“DJS-5机编译自动化”,课题负责人是龚世生。

要完成为DJS-5机配ALGOL-60型算法语言的任务,必须完成两件工作:

1、编写一个编译程序,它能把一个用ALGOL-60型的算法语言写成的程序,自动翻译成机器能识别的二进制代码程序,再完成算题任务。这个起翻译作用的编译程序就属于计算机系统软件之一。

2、重新制作一个固定存储器,改换固存中的各个输入输出控制程序,把机器上原有的固定存储器换下来,使机器完成自动翻译程序并完成算题任务。这有点类似于人类移植器官的手术。固定存储器中存放的控制计算机输入、输出的程序,也属于计算机最早的系统软件之一。

当时设计DJS-5机的清华大学已为DJS-5机编制了一个小的ALGOL-60型算法语言的编译系统(原称112编译系统),并且为使该系统能运行的固存程序也已编制出来。云大数学系计算数学专业软件组就决定在清华大学工作的基础上,改进该系统,并具体制作固定存储器,使云大的DJS-5机完成配上算法语言的功能。

一、编写翻译程序

由于DJS-5机内存容量小(只有4096个单元),使DJS-5机算法语言只能是一个缩小了的ALGOL-60语言:没有逻辑运算符;除只保留了关系式外,没有其它的表达式;关系运算符也只有“<”和“=”两种,没有命名表达式和开关说明;类型说明中无整型量;数组限制为二维和一维,且下界为1,上界为无符号整数;限制过程不得递归调用和并列调用;无函数过程。DJS-5编译系统采用一趟扫描的状态矩阵法进行编译。为叙述方便,把清华大学电子工程系计算数学教研组为DJS-5机配的语言仍称112语言,云大修改后的语言称为DJS-5语言,其主要的修改与扩充体现在下述四个方面:

1、112语言的拼写定义符使用汉语拼音字母,并且为了编写和书写的方便,在书写格式上与ALGOL-60距离较远。我们考虑为使程序交流方便,并且有利于学生到其他机器上算题,将拼写定义符与语言书写格式,改成与国际通用的ALGOL-60基本一致。

2、考虑到计算问题中经常出现离散型和当型循环语句,故在DJS-5语言中增加了离散型和当型循环语句。

3、在112语言中条件语句为编译方便,其定义方式与ALGOL-60语言有区别,DJS-5语言采用了与ALGOL-60语言同样的定义方式,采用这种方式后就要增加三个编译状态及相关翻译程序。

4、在112语言的编译程序里,状态元素表在编码时,状态用6位编码,它所能区别的状态个数最多只有26-1=63个,这就大大限制了语言的扩充。在DJS-5语言的编译程序里,状态元素表中的状态使用7位编码,并且为了正确区别两种负状态元素,限定在7位状态编码中右起第6位和第7位不能同时出现11,采用这种状态元素编码方法后,可以区别的最大状态个数为27-25-1=95个。这就为修改与扩充112语言解决了首要问题。经修改与扩充后,由70个状态增加到82个状态。

DJS-5编译程序由我和龚世生负责。每人负担一半的编程任务,在1975年顺利完成了编译程序的编制工作。

二、制作固定存储器:

这是由我带领李其放、赵建芝、孙瑞云、李航四位计算机维护青年工人完成的。在完成制作固定存储器的过程中,我们首先检查了计算机背面密如蜘蛛网的多层连接线,把北无三厂所给的机器图纸上的全部错误更正过来,弄清楚了DJS-5机的全部运行原理与执行过程。我们到北无三厂去要原来的固定存储器的技术资料,但回答是设计资料已找不到,我们只能空手而回,目测机器上磁芯的尺寸和绕线匝数,以及各种配件后,我们在市场上购买了材料,拆开了原来的固定存储器,比照原来的固存,按新固存程序穿4096个单元中共86016个磁芯中的线。穿线工作十分繁重辛苦,有时忙得难以回家吃饭,我的爱人常常带着孩子把饭菜送到机房。待新固存做好后,因线间存在信号干扰,致使系统工作不稳定。我们总结了经验,拆除了全部穿线,我又巧妙地设计了一个边穿线边调试的程序,每穿一组线,就用自己设计的程序上机检查调试一遍,这样一组一组地穿,一组一组地测试,最终完成全部穿线任务,没有再发生信号受干扰的问题。新固定存储器做成后,替换下了老的固定存储器,使编出的编译程序真正能够运行。

1976年通过全体人员日日夜夜的辛苦努力,终于在云大DJS-5机上配备了一个小型的ALGOL-60型的算法语言的编译系统,彻底改变了程序设计的工作环境,使编制算题程序和调试程序的工作大大简化方便了,为扩大计算机的算题应用奠定了基础。这是云大计算机系统软件的第一个大胜利!

在DJS—5机编译系统成功完成的情况下,为发展好云大的计算机软件技术,云大计算数学专业委员会还成立了下属的计算机软件组:我任组长,成员有龚世生、钟维明、田志良、周堂福、叶玉兰等。

在DJS—5机编译系统建立的过程中,我和龚世生改编了清华大学电子工程系计算数学教研组编写的《程序自动化基础》,写出《DJS—5机编译程序讲义》。

并以数学系计算专业软件组的名义,由我执笔在云南大学自然科学文集1977年第2集(1977年12月)上发表了“DJS-5编译系统的修改与扩充”一章。

1972年经国家批准成立了云大计算数学专业,并在其下成立软件教研室。软件教研室在计算数学专业中开展了软件方向的教学,由于计算机软件与计算机硬件密切有关,当时国内已研制成功DJS—130小型电子数字计算机,这是属于小规模集成电路的计算机,并配备有若干系统软件,因此软件教研室选定以DJS—130机为背景,结合软件方向的教学,开办教师讨论班,提高师资水平。由于软件教研室的教师都是数学专业毕业的,为使教师尽快熟悉计算机软件方面的知识,采取教师讨论班的方式,每人详细准备若干教学内容,轮流在讨论班上讲课。通过这种集体合作进修的方式,快速度地掌握了计算机软件方面的知识。云大周围高校和省计算机中心也派人参加讨论班,这样的讨论持续了两年多。一批优秀的计算数学专业工农兵学员也留了下来,壮大了软件教研室的教师队伍。云南大学在八十年代初购买了DJS—130机,淘汰了DJS—5机。

软件教研室还同昆明机床厂的技术人员合作,开展《DJS—130电子计算机控制三座标测量机的专用软件》研制工作。后因昆明机床厂改变计划,此项研制工作就终止了。软件教研室后来又参与了著名软件专家陆汝钤领导的软件移植大型课题的研究工作。分工负责的是DJS—130机上移植符号处理语言的工作,先后编写了《DJS-21机符号处理语言编译框图及说明》、《DJS-21机符号处理语言FCY编译程序注解》两本资料,拟将DJS-21机的符号处理语言移植到DJS—130机上。

为使云大计算机软件技术有更大的发展,云大数学系主任卫念祖和云大领导积极支持成立计算机软件专业,多次写申办报告到省教育厅和教育部。经过多次努力,1983年计算机软件专业终于获得教育部批准成立,是云南省第一个计算机类的本科专业。1984年云大将计算机软件教研室人员与数学系其它教研室的部分教师和从物理系抽调的教师,共同组成计算机科学系,由龚世生担任副系主任,主持工作。1983年1月,我到西伊利诺大学进修,专攻计算机科学。1985年5月,获得计算机科学硕士学位后返校,担任计算机科学系副系主任。

计算机科学系成立之初,条件很有限,只有两台YEE8100微型计算机。为满足学生上机实习任务,教师和学生24小时轮流排班,上机实习。为了改变硬件条件,计算机科学系为中国建设银行系统举办了多期培训班,用培训班赚来的钱购买微机,建立了自己的微机实验室。1987年龚世生调到汕头大学工作,由我主持计算机系的工作。1988年沈勤祖担任计算机系副系主任,1989年学校任命我为系主任。

为了做好产、学、研的工作,计算机系还贷款在科技一条街上成立了计算机公司,利用售卖计算机的工作,使师生不仅熟悉了计算机的硬件,同时接到了许多用户的软件开发任务。学生在三年级暑假就开始带着这些软件开发任务一边上课学知识,一边做毕业实习,大大调动了学生学习的积极性。毕业实习开发任务还有报酬,改善了学生的生活。办公司赚到的钱用于改善办学条件,增加了微机实验室,并实行开放式管理,同时还用于云大集资盖房,改善了教师的住房条件。

从,1985年起计算机系开始了培养研究生的工作。最初招计算数学硕士生,1998年在南京大学著名软件专家徐家福教授的指导、帮助下,建立了计算机软件与理论专业硕士点,直接招收计算机软件与理论专业的硕士生。1990年物理系的年轻教师刘惟一调入计算机系任教,在模糊关系数据理论和知识工程方面开展了大量的研究工作。

1991年4月我被任命为云南大学副校长,计算机系由沈勤祖主持工作,并在1992年担任系主任,云大计算机软件专业步入了大发展的阶段。


[1]朱维华,1996年8月至2000年7月任云南大学校长。