机器码年代

志维

<p class="ql-block">  去年的一次家庭聚会,我的一位侄子问我,算不算是国内最早搞计算机的那一批人。想一想,实际上我不能说是最早的,可以说是早期搞计算机的是也。 </p><p class="ql-block"> 上世纪七十年代中期,我在当时的“西北电讯工程学院”(其前身是“解放军西安军事电讯工程学院”)读书,所学专业是“计算机总体设计”。刚开学不久,系主任朱保马老师为我们新生做了一次科技报告。他谈到,假如把现在的计算机比作一只猴子,你给它下命令,让它坐下,它不管三七二十一,一屁股就坐下了,不管有没有凳子,或者地上能不能坐。而未来的计算机具有学习和辨识能力,还能与人交互。你让它坐下,它先要看看旁边有凳子否?没有它会去搬个凳子来再坐下。我当时觉得这个领域很有趣味,也大开眼界。现如今朱保马老师预想的未来计算机的这些“能耐”,已经太小儿科了。全世界科学技术的发展令人惊叹,正如人们常说的:“只有想不到的,没有做不到的。”我讲这些是想说,科学技术也是分时代,从开始的刀耕火种,一点一滴进步发展起来到达今天的高度。 </p><p class="ql-block"> 说到我学的专业,“计算机总体设计”,简单来说,就是在计算机研制设计时,根据机器的设计目标,也就是它要有多大能耐,制定出该机器的各项总体功能和性能指标,如:主频,计算速度,存储容量,输入/输出,通讯能力等等。从我的职业生涯说,毕业后我再也没有设计过一台计算机系统,而是大部分时间从事计算机系统应用或过程控制方面的工作。</p><p class="ql-block"> 我刚工作时,主要是从事“计算机硬件”方面的工作。我的日常办公工具有“万用表”,“示波器”,“电烙铁”等老三样。那时在国内,计算机为何物还没有很多人知道,既是我们搞计算机的所谓“专业人士”,也处于懵懵懂懂之中。国内关于计算机的书刊犹如凤毛麟角。我在学校读书时,计算机方面的教材基本上没有,我们上专业课的计算机教材就是美国NOVA计算机(一种小型计算机)的使用说明书和相关图纸资料。甚至英语课的课本也是NOVA机的英文使用说明书。真可谓:“一菜两吃”,倒是省事了。工作以后,我所在的七机部二院有一个计算机专业研究所,番号为“706”所,我有空就到他们的图书馆东翻翻西看看,这个图书馆里有一些国内外计算机方面的图书和期刊,因为我不是该所的职工,所以只被允许阅览,但不能借走。</p><p class="ql-block"> 记得1978年前后,我在七机部二院下属“7813”厂工作,这个厂刚刚筹建了一个“微处理机研究室”,从厂里各车间抽调了一批理工科的技术人员,我也在被抽调之列。研究室的大部分人都是非计算机专业出身,有学半导体专业的,电子工程和物理专业的。研究室主任姚颂荣先生,上世纪五十年代毕业于浙江大学计算机专业。研究室的班子搭建起来,为了尽快让大家对微处理机有概貌的了解,姚主任不知从什么地方搞到一本英文原版书,《The microprocessor》。大家都争着拿去看,一本书抢不过来,姚主任索性就把它拆分开,每人分一章翻译,一边翻译大家一边互相交流,每人讲解自己翻译的部分内容。那是一本最初级的关于微处理机的书,好像只有四位或八位计算机字长。但这本书让我们这些人对“微处理机”稍有了入门,也从中窥见一斑。</p><p class="ql-block"> 上世纪七八十年代,我们自主设计计算机不多,基本上从国外进口机器,然后仿制,我那时候主要做硬件方面工作,用微型计算机控制生产过程。如微型计算机控制水泥生产,微型计算机控制的造纸生产。我们称这一类为“计算机过程控制系统”。微型计算机体积小,成本相对低廉,可以充当过程控制的主角。我从开始做硬件工作,逐步扩展到硬件和软件两者兼顾,这其中的好处不言而喻。我第一次接手的软件开发任务,是与北京301医院合作,为他们的呼吸机肺活量测试仪编配软件。病人通过呼吸接口用力吹气,就如同现在驾驶员的酒精检测仪类似。通过呼吸的气体量,计算机分析病人的肺活量水平和其他相关肺功能指标。在微型计算机上编写上述功能程序,那个年代的程序设计语言是“机器码语言”,就是用八位二进制代码(0或1)编排的机器指令,每一条八位代码就是一条机器码语言的指令,这样的指令一共有近百条甚至更多(根据计算机功能确定),每一条指令的八位代码都不相同。一般程序员手边必备一本这样的机器“指令集”,就是一本小册子,这台计算机能够执行的所有的指令都列在册子里。这样方便编程时随时翻阅查找。我用的多且频繁,几乎能背记住大部分的机器指令。</p><p class="ql-block"> 在当时的年代,编写好的程序一般都是固化到一种叫EPROM的“可檫写存储器”芯片里,再把这个EPROM芯片插到计算机系统里运行。如果运行成功了,那这个程序就算编写并调试好了。如果运行有问题,就要对EPROM里的程序重新审核,进行修改。用一种紫外灯对EPROM芯片进行数小时的照射(EPROM芯片上留有一个小窗口),紫外线光可以清除原先存储在里面的程序(相当于清零),再把新修改好的程序,重新固化到这个EPROM芯片中。这种芯片可以反复檫洗清零,再固化,再清零。可以如此反复数十次上百次之多。这就看芯片的质量如何。</p><p class="ql-block"> 我在学校读书事,我们系机房的计算机是一台“DJS-130”小型计算机,上海无线电三厂生产的,小规模集成电路都达不到,体积很大,摆放起来占了机房几十平米面积。每次使用机器时,要用机器面板上的15(记得是这个数)个板键,把一个“引导程序”的起始地址输入给计算机,再用穿孔纸带机把“引导程序”(穿成纸带)输入到计算机的起始地址位置。引导程序的作用是告诉计算机启动后到什么地址执行事先编好的程序,执行什么工作等。这是最早的“操作系统”的雏形。当年的计算机的存储器还是用磁芯制成的,叫“内部存储器”。机器一断电(关机),磁芯里存储的程序和数据就全丢失了。所以必须要保存的程序和数据都存储在磁盘,磁鼓,或磁带类设备上,这些存储设备叫“外部存储器”。用时就从外部存储器上再输入到计算机里执行。</p><p class="ql-block"> 机器语言编写的机器代码程序不需要翻译,机器就可以直接执行,虽然简单直接,但是它是一种低级程序设计语言,因为它不易记忆和阅读理解,而且很容易出错。为了解决上述问题,就发展了后来的“计算机汇编语言”和“计算机高级语言”。这些语言在小型机以上的机器中得到广泛应用。只是微处理机体积小,相当长的一个时期,还在使用机器语言编写程序。</p><p class="ql-block"> 1986年,我们项目组与云南昆明的一家水泥厂合作,帮他们实现计算机控制水泥生产,严格控制各种水泥配料的配注比例。我在项目组负责软件编程,一位中国科技大学毕业的工程师负责项目硬件安装和调试,包括传感器设备。水泥厂在山上,每天我们都踏着红土山路上山,完成各自的日常工作。我编写的程序在线下调试成功后,准备正式投放到生产线上试运行。我的心很期待程序运行成功。一开始系统运行平稳,没发现异常。傍晚我们从山上回到山下的宿舍休息,临近半夜突然接到山上生产线电话,报告控制系统失控了,水泥配料完全不受控制。我想坏了,一定是程序出了问题。我们立即赶到厂里,经现场勘察并查看了各项记录数据,最后找出问题所在,程序没问题,是负责硬件的同事,没有对水泥配料传感器进行事前校对和清零处理,导致累计到一定程度,系统就乱套了。重新校对后,控制系统运行正常。这个时期,我们编写计算机程序已经不再使用机器语言了,至少用汇编语言编写程序,使用英文的缩写字母标记的计算机语言,已经进了一大步。</p><p class="ql-block"> 1987年,我在中国科技大学研究生院进修,其中选了一门课叫“结构化程序设计”,这门课的主讲老师是中国科学院计算所的钟萃豪教授,这门课可以挣到四个学分。实际上“结构化程序设计”就是现在十分流行的C或C++语言,这是高级计算机程序设计语言,一个模块一个模块叠加,像搭积木,彼此没有太紧密关联,修改时只针对一个模块修改,不太多牵扯其他程序模块。具有结构清晰,逻辑性强的优点。我当时学的很投入,记下了几大本笔记。只可惜时间久了,又多次搬家,这些笔记都散失殆尽。</p><p class="ql-block"> 我从用机器语言编写程序,到后来的用高级语言编写程序,亲身经历了计算机技术迅猛发展的不同时代,我这支秃笔难以把这样变化的时代描绘清楚,只希望把我所经历的历史记述下来。老话说得好,“一天之计在于晨”。我现在还能每天早晨读一条C语言程序,以活动脑筋,延缓老年痴呆的发生。我的一位亲戚也已经六十多岁了,每天坚持做微积分数学题。也是出于同样的原因。</p><p class="ql-block"> 不得不感叹科技的发展之迅猛,总把我甩在后面。很多过去我们在科幻小说或电影中描述的奇思与幻想都纷纷成为现实。AI技术几乎无所不能,很多人或企业都一窝蜂地涌向AI,趋之若鹜。有人已经放出话来,几十年或更长些时间,AI技术就是戬灭人类的“杀手”。我到看不了那么远,总之,让我们拭目以待吧!</p>