发布时间:2021/06/17 09:51:22
点击:
四十年前,我非常幸运地考入山东大学数学系计算数学专业。计算数学就是用计算机解决数学问题,所以我过去四十年一直在用计算机。当然,现在计算机非常普及,大家都在不同程度上使用计算机。我们的手机某种程度上也可以说是计算机,并且是功能非常强的计算机。
最近发现山大当年研发计算机的老师们已经进入古稀之年。我自己现在已经比许多老师当年的年龄大了,所以想趁我的记忆没有完全忘却以前,记下我经历的计算机变迁,期望给年轻人留下一段真实的历史。
中国,济南
我上大学的时候,其实不知道计算机是怎么回事。那个时候,我不仅没有见过计算机,也没有见过计算器,更不要谈手机了。那个时候手机可能还没有被发明出来。
因为学的是计算数学专业,所以我在大二的时候,有机会学习了一门计算机语言(Argol 60)。计算数学跟计算机科学有多近?山大计算机系首任系主任汪嘉业老师以前就是数学系计算数学教研室的老师。在国外,有的大学计算数学专业在数学系,有的大学计算数学在计算机系,所以它其实是数学和计算机的交叉学科;很多时候我都劝年轻人考虑这个专业。
计算机的基本组成部分,包括输入输出(I/O)部分、操作系统、中心处理器(CPU)和应用软件配置。现在让我们把计算机想象成我们的头部。我们的大脑相当于中心处理器,我们的神经系统相当于操作系统,我们的眼睛、耳朵、鼻子和嘴就相当于计算机的输入输出系统。如果有人问我们一个问题,3乘以7等于几?一般有两种输入方法,一种用声音输入,我们听到问题;另一种用视觉输入,别人把问题写在纸上让我们看到。我们的输出方法可以是声音,直接用嘴说出来,可以用手写出来,或者做动作表达出来。这里要注意,手没有长在头上,是附带功能,相当于打印机。我们的眼睛、鼻子和嘴可以同时具有输出和输入功能,譬如,闻到怪味打喷嚏、看到感人的故事流泪、尝到酸的食品龇牙咧嘴等。计算机的输入功能包括键盘、鼠标、声音等,输出功能包括声音、屏幕显示和结果打印等。
我在山大用的第一台计算机是山大自主研制的计算机,它是山大计算机科学发展的一个里程碑。在我的记忆里它叫153机,现在有文章介绍它叫103机,那么我就把它称为103机。这里我想介绍一下它的输入系统。
我对103机的其它功能不清楚,因为我那个时候对计算机了解甚少,对机器也没有太多接触。这里仅介绍它的输入系统,计算机的其它功能我会在后面介绍。103机的输入系统是纸带输入。纸带输入有多难?纸带是大拇指宽的黑纸条,分成两个部分,左边和右边。左边可以打两个洞,根据组合可以有四种可能:00、01、10、11;右边可以打三个洞,根据组合有八种可能:000、001、010、011、100、101、110、111。1代表打洞,0代表不打洞。左边和右边的组合,则一共有32种可能,对应于数字、符号和字母等。还有一个特殊的打孔机,类似于打字机的键盘,专门用于打孔。103机有纸带读入系统,用光照原理可以知道纸带读入的内容是什么。如果打孔的时候打错了,那么需要用剪刀把那一行剪下来,把正确的一行孔用胶水粘上去;如果程序不能运行,需要至少两个人抓虫子(Debug),一个人把孔的排列转换成数字,另一个人把数字转换成符号,再把符号写下来恢复成源程序。回家再看写下来的程序是不是正确的。
没有用过打孔编程的人,根本不能想象当时使用计算机有多难。其实,当时不仅中国如此,美国以前也是这样。乔布斯和比尔·盖茨都需要把程序打孔,在我的记忆里面美国用的是打孔卡片。
我忘了当时教我们计算机语言课的老师是谁了。记得教我们程序设计课的老师是金茂原老师。金老师人非常好,虽然我们那个时候不喜欢那些繁琐的编程方法。
我在山大读计算数学的时候,还曾经聆听过陈玉妹、袁益让、王申林、孙淑英、张圣丽、朱本仁等计算数学方向老师的谆谆教诲,衷心表示感谢。
中国,北京
大学毕业以后,我非常幸运地考上了中国科学院计算中心的研究生。
计算中心是中国计算数学方面的最强研究所。计算中心当时有两个机房,一个是超级小型计算机瓦克斯(Vax)机房,还有一个微机房。微机房里放的计算机,就像现在我们家里用的台式计算机一样,那个时候笔记本电脑还没有问世。瓦克斯机有自己的机房,机房里面有空调,还有专门的工作人员维护计算机。我们用户不直接接触计算机,只是用它的终端。现在的云计算,基本是同一个原理。瓦克斯机用的是Unix的分时系统,大家可以通过不同的终端同时使用计算机,Unix操作系统让大家的程序轮流运行。
在我们那个时候,大学里的微机已经开始慢慢普及,瓦克斯机的机时已经不是特别珍贵。大家如果想用计算机,基本可以申请并得到批准。以前全国各地都需要去计算中心去申请使用计算机,所以计算机的使用时间非常珍贵。据说我的一位师兄运行程序时进入死循环,计算机算了一天一夜没有结果,导致我的导师都需要写个检讨。
那个时候,我们明白微机使用的是Dos操作系统,大的计算机用的是Unix操作系统。那个时候输入已经是屏幕输入了,输出基本是打印结果,打印时使用两边带孔的特殊纸张,我们经常把打印结果纸的背面拿来做草稿纸。
我在计算中心读研究生时,当时的一位老师(孙继广)提议我们研究生的算法必须有计算结果,所以我们大家都学会了用计算机编程计算。我当时的计算方法算的是一种特殊情况,没有精确解。我的导师让我跟国外的师兄联系,让他在国外的计算机上运算,给出比较精确的结果做比较。在计算中心,我进一步明白了算法的重要性。计算机有它的基本功能,包括运行速度和存储量;但是怎样使用计算机,算法非常重要,也是我们当时研究的课题。
因为我是山大1977年以后第一个考入计算中心的研究生,所以那里的几位山大学长对我特别照顾。他们是沈士博、张倚霞、王平洽和蔡中熊老师。他们现在应该都是80有余了,我发自内心地为老学长们的成就骄傲,也非常感激他们的帮助。
我在计算中心的导师有王荩贤、黄洪慈和张关泉老师。他们都是值得尊敬的科学家,我一直尊敬他们的学问和为人。当时的师兄弟和同学,现在许多已经成为国内外学术权威。
加拿大,温哥华
我们那个时候,中科院招的研究生很少。数学所、系统所、应用数学所和计算中心计算数学方面的研究生,一共也就40个人左右,分成两个班,801班和802班。801班是数学所和应用数学所的研究生,802班是系统所和计算中心的研究生。
那个时候北京的研究生喜欢出国留学。我们中科院数学类研究生毕业以后基本都出国。我们那一级,一共6个计算数学研究生,5个出国。只有一个留在国内,进了政府机关。
我毕业以后,到加拿大温哥华的UBC留学。UBC中文有几个翻译,不利颠哥伦比亚大学、英属哥伦比亚大学、卑诗大学等。英文全名是University of British Columbia。
我在UBC,买了一个二手的286微机,大概花了几百加元。结果那个微机显示屏经常坏,所以基本没有用,我用它学会了十个指头打字,这是唯一收获。它的硬盘内存只有40MB,比现在一个USB 的储存量都小。
UBC数学系有一个机房,里面有微软的计算机和苹果的计算机(macintosh)。那个时候,苹果机二代有视窗操作系统,微软的操作系统仍然是Dos指令。大部分教授和学生不会使用Dos操作系统,所以我的计算机背景还是有点优势。
那时UBC校园有一个机房,给大家随便用,装的是苹果一代计算机。苹果一代计算机像一个小盒子,显示屏和主机连在一起。屏幕只有手的巴掌大。
那些屏幕虽然非常小,但是仍然比纸带输入强多了。
我在UBC的时候,电子邮件已经被广泛使用,但是那个时候互联网仍然没有出来。
在UBC的时候,我的研究工作已经包含了实质性的计算工作。我把以前的源程序(Fortran)打印出来,一共有50页纸。然后在中间做改动,把处理线性问题的程序,转变成处理非线性问题的迭代程序。没有编过程序的人,很难体验改别人程序的工作量有多大,所以我也非常能够体验编程序的辛苦。
我在UBC有两个导师,数学系的Philip Loewen和地球物理系的Doug Oldenburg,在这里表示感谢。
加拿大,多伦多
1990年代数学类研究生毕业很难找工作,所以我在山大数学系的朱本仁老师的帮助下,转学到多伦多大学攻读计算机博士。朱老师跟我在多伦多大学的导师杰克逊(Ken Jackson)是在美国结识的朋友。
多伦多大学计算机系在加拿大排名第一,在美国和加拿大应该排在前十。我在的时候,多伦多大学计算机系的人工智能、计算机模拟、计算机图形和算法等,都名列世界前茅。
我的一位同办公室同学的博士论文,就是模拟热咖啡冒气和点着的香烟冒烟。包括有风的情况下烟和气的走向和没有风的时候烟和气的走向。这是生活中非常简单的事情,但是通过计算机模拟出来,仍然是很大的成就,因为需要灯光、动态和逼真。
我们系当时的研究生招生简章封面,就是用计算机模拟鱼游泳的照片,我记忆里它是一位中国来的学生做出来的。
这些模拟有什么用?动画电影就是这样出来的。还有电影中烧大楼、炸桥梁的画面,都可以这样通过计算机模拟出来,并且可以重复使用、随意调整,成本极低。
跟这些学科相比,我们计算数学是计算机系的非主流,我在那里做的是金融数学。那个时候,金融数学刚起步,美国和加拿大各自都只有一所大学有金融数学的培训学科。
我在计算机系,经历了计算机方面的正规培训,学习了人工智能、操作系统、计算机图形和数据库等课程,明白了分布式操作系统和计算机网络交流,也学习了这些年赖以生存的金融数学知识。
我在多伦多大学读书时,得到了我的导师杰克逊老师(Ken Jackson)和山大朱本仁老师的极大帮助。朱老师那个时候在多伦多大学做访问学者,我也认识了朱老师的太太刁老师。我是杰克逊老师的第一个中国学生,我们结下了终生的友谊,他后来又招了不少中国学生,我还从他的学生里招人来工作。
美国,克利夫兰
我来美国的第一站,是俄亥俄州的克利夫兰市,是美国的中西部。美国人说的生锈带,就包括底特律、克利夫兰和匹兹堡等城市。
克利夫兰过去有多辉煌?它在1960年代,相当于美国现在的硅谷。当时在克利夫兰的大公司总部数目,超过在纽约市的大公司总部数目。当年,福特家族在底特律,洛克菲勒家族在克利夫兰,卡耐基家族在匹兹堡,都有着举足轻重的地位。
走出大学以后,才明白工作中的计算量有多大。我在钥匙银行(Key Bank)工作的时候,每天的计算机运行时间大概5个小时。我们每天晚上回家前把需要做的事情安排好,夜里计算机自动按点运行,我们早上起来看结果。如果中间出差错,那么只能明天重新计算。
我在国民城市银行(National City Bank)工作的时候,全部计算一次需要6到8个小时。
现实生活中,虽然计算机功能变得非常强大,但是工作中的计算量变得更大。这就跟我们的生活一样。我们的车和交通工具变得更好了,但是我们住的地方更远了。有人说,我们现在上班花在路上的时间,跟罗马时代花在路上的时间差不多。罗马时代马车慢,但是大家住得近;现在汽车和地铁快了,但是大家住得远了。
现实需要更强大的计算机。我们银行的计算机(Servers)虽然已经非常强大,但是仍然不能满足现实的需要。
美国,旧金山
旧金山位于美国的西海岸,跟硅谷(圣荷西,St. Jose)同属湾区。旧金山市到圣荷西市,没有堵车的话,也就一小时车程。圣荷西市聚集了许多做计算机软件和硬件的人士。
作为做计算数学的人,并行计算一直是我们的研究课题。我出国前,曾经参加过一次国内的并行计算会议,并且在会上见到了钱学森先生。
现在的机器学习,其实是计算机各方面发展的一个汇总。
先看大数据。大数据为什么大,因为它有多方面含义。第一,它包含数据量大。譬如我们银行过去十年的贷款数据,量非常庞大。第二,它包含的数据种类多。以前的数据主要是数量和字符串,现在的数据包括以前的数据以外,还包括图像,声音和视频等。第三,大数据包含存储量大。我的第一台计算机存储量只有40MB,现在的手机存储量就可能超过64GB。现在生活中的信息需要巨量存储量,譬如摄像头的储存量。
再看计算机。个人计算机(PC)是一个人用。我们以前的主机(Servers)可以多人同时使用。现在的大公司计算机已经不是一个两个主机,而是几千甚至几万个主机连在一起, 成为计算机群,或者计算机云(Computer Cluster)。计算机群,人已经管理不了,所以需要通过计算机来管理。有计算机老板和计算机员工。计算机员工可以自带储存器,但是也要分享公共资源。
并行操作系统。以前的传统操作系统,已经不能管理现在人和计算机之间的交流,所以分布式操作系统被投入使用。譬如,100个人被安排来处理一屋子的书,一个人分一堆,那么系统需要告诉大家,收集什么样的信息,譬如书的作者、出版年份、书的页数等。然后把信息汇总,给用户提供最先出版的书、最厚的书、出版书最多的作者等信息。
机器学习和人工智能。因为数据量太庞大,而计算机的功能变得越来越强,所以新的人工智能算法被开发出来,寻找数据之间的规律。银行工作中的一个例子,就是抓获客户的作假行为。一个银行几百万客户,每天银行客户的网上操作数量巨大,根本不可能靠人跟踪检查,所以就需要机器学习的算法来抓不良客户和假冒客户的造假行为。
未来机器学习的功能不可神话,也不可低估。
四十年前,很少有人见过计算机,现在我们每个人都有一部智能手机,每个人上班都会有一台电脑。
电脑就像人的头脑,很复杂,有很多功能,但是基本原则却非常简单,接收信息、处理信息、然后给出信息处理结果。一条通俗的专业术语:如果进来的是垃圾,那么出来的结果仍然是垃圾(Garbage In, Garbage Out)。
硅谷地区有我们许多山大校友。曾经参加研发山大第一台计算机的刘素华和杜洪伟老师就生活在这里,他们当年还是学生,现在已经是爷爷奶奶了。
【作者:1981级校友 刘以栋 来自单位:美国北加州校友会 责编:朱炜明 王莉莉】