ym101001912的个人博客分享 http://blog.sciencenet.cn/u/ym101001912

博文

琐碎、初步、杂凑的计算机课-------我怎么就读了一个假南航?(4)

已有 1398 次阅读 2022-7-27 18:07 |个人分类:本科教育|系统分类:人物纪事

琐碎、初步、杂凑的计算机课-------我怎么就读了一个假南航?(4)

我们学的计算机专业课程,基本上都是一些原理课程,主要有:离散数学原理、计算机原理、程序设计原理、操作系统原理等,以100系列小型机为背景,说明计算机工作的数学基础、硬件系统与软件技术。随着计算机集成化的进展,国产的DJS机系列不久就完全退出历史舞台,所学的绝大部分知识都过时了,这就是学习新兴科技专业的宿命。大学毕业后,几乎没有学生从事计算机设计与制造,少数从事计算机应用的工作,绝大部分是属于电子信息工程领域。

1.终身受用的离散数学原理

在大学四年,印象最深、影响最大有两门课程,一门是信号与系统,一门是离散数学原理,使我受到了严格的技术训练,构建了现代技术意识的思维方式。

离散数学(Discrete mathematics)是由集合论与图论、代数结构与组合数学、数理逻辑等汇集起来的一门综合学科,是构筑在数学和计算机科学之间的桥梁,也是计算机专业的专业课程,如程序设计语言、数据结构、操作系统、编译技术等必不可少的先行课程。离散数学所提供的训练十分有益于概括抽象能力、逻辑思维能力、归纳构造能力的提高,十分有益于严谨、完整、规范的科学态度的培养。

作为整个现代数学基础的集合论,使我们容易地理解无穷、极限等最重要的数学概念的真谛,如果早一点学集合论,那么掌握极限理论就没有那么困难了。从自然数与康托尔集合论出发可建立起整个数学大厦,同时,集合论的漏洞促进了悖论的研究,公理化的方法给我们一种新的视角看待世界,对数学基础的可靠性乃至整个计算机科学产生有根有据的质疑。

图论比较有趣,哥尼斯堡七桥问题看似普通平常却孕育着丰富的数学原理。在图论中,还有一个是世界近代三大数学难题之一的四色猜想。刚好几年前,阿佩尔(Appel)和哈肯(Haken)借助计算机给出了一个证明,轰动了整个世界。图(graph)是数据结构和算法学中最强大的框架之一,或许没有之一。图几乎可以用来表现所有类型的结构或系统,从交通网络到通信网络,从下棋游戏到最优流程,从任务分配到人际交互网络,从路径到最短路径,图都有广阔的用武之地。

代数结构现在只记得群、环、域、格、模、域代数和向量空间等名词,具体内容已经完全不记得,也不能理解了。在以后的学习中,还是依赖了对映射、同态、同构的基础知识,特别是掌握哥德尔不完全性定理( the incompleteness theorem,不完备性定理)的精髓。哥德尔(Kurt Friedrich Gödel,1906.4.28日-1978.1.14)证明了任何一个形式系统,只要包括了简单的初等数论描述,而且是自洽的,它必定包含某些系统内所允许的方法既不能证明真也不能证伪的命题。哥德尔不完全性定理一举粉碎了数学家两千年来的信念。他告诉我们,真与可证是两个概念。可证的一定是真的,但真的不一定可证。某种意义上,悖论的阴影将永远伴随着我们。任何包含了自然数论的形式体系中,自洽性和完备性必定无法同时满足。哥德尔不完备定理所揭示的,其实就是这个世界上存在永远无法证明的定理。即某些定理为真,但不可证。从根本上来说,数学世界之树,无法包含所有的定理。

数理逻辑又称符号逻辑, 就是精确化、数学化的形式逻辑。符号逻辑的数学版,专门描述数学的逻辑。数理逻辑直接将逻辑作为数学的内容研究,这就是——布尔代数,或者称作逻辑代数。这种代数最直接应用就是数字电路理论中的组合逻辑。数理逻辑的两个最基本的也是最重要的组成部分,就是“命题演算”和“谓词演算”。命题演算是研究关于命题如何通过一些逻辑连接词构成更复杂的命题以及逻辑推理的方法。命题是指具有具体意义的又能判断它是真还是假的句子。数理逻辑对工程技术有重要意义,对一般思维中某些问题的解决也有成效。

我自己找来集合论、图论、近世代数、数理逻辑等多门教科书以及习题集艰难地全部做完了,终于体悟了形式化、数字化的逻辑是如何构成人类思维的重要方式。以至于我儿子在加拿大多伦多大学读大学分子遗传学专业,我还建议他专门选修了一门符号逻辑,对他的学业与科学思维帮助很大。直接庸俗的结果就是可以在GRE考试中,不用做任何补习方式,除语言之外拿到满分。我后来参与公务员考试的命题,特别是行政职业能力考试辅导工作,基本上依赖的就是当年数理逻辑的基本训练。

2.“一地鸡毛“的计算机原理

《计算机原理》是以DJS130小型机做为背景机器来学习与研究运算器、控制器、存储器、输入设备和输出设备的工作原理与电路实现,花了好几个学期的课时。绝大部分内容现在都价值很低了。不过,我在毕业设计与毕业后工作,接触PDP11与DJS210中型机,还是有很大帮助的。记忆深刻的是一次作业,第一次真正接触到技术实践中,如何平衡逻辑明晰与工艺合理的关系。作业是设计加法器的电路,遇到的难题是:设计精巧,选择最短走线,但费事费力,工程实践中不易被维修时找到问题;设计粗放,不考虑走线,工程实践中容易引起电路发热。我在节约与明晰之间找到一个平衡点,以明晰为主,兼顾节约的思路。任课老师,一个北航毕业的红卫兵大学生,在课上讲评设计方案中,肯定了我的明晰为主、兼顾节约的“满意”方案。其实,当时我并不能理解这是为什么,我只是以后在工作中才真正体会到成本与效益,性能价格比等体现技术意识的那些理念。

3作为一个课程群的程序设计原理

用现在的概念说,程序设计原理是一个课程群,主要包括数据结构、程序语言与程序编写以及测试等。计算机要解决一个具体问题,对于问题中所处理的数据,必须首先从具体问题中抽象出一个适当的数学模型,然后设计一个解此数学模型的算法,最后编出程序,进行测试、调整直至得到问题的最终解答。而寻求数学模型就是数据结构研究的内容。寻求数学模型的实质是分析问题,从中提取操作的对象,并找出这些操作对象之间含有的关系,然后用数学的语言加以描述。这门课给我影响深刻滴遇到堆栈等概念。

在计算机领域,堆栈是最重要的概念之一。堆栈是一种数据结构,而且是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top)对数据项进行插入和删除。筒子楼的烟火气熏陶了我可怜的老师,居然用蜂窝煤炉烧水做饭的堆煤基堆垒,先堆的煤基后用,后堆的煤基先用,从而阐明“先进后出,后进先出”的堆栈原理。今天要这么解释堆栈,估计没有人懂了。

堆栈是一个特定的存储区或寄存器,它的一端是固定的,另一端是浮动的 。堆这个存储区存入的数据,是一种特殊的数据结构。所有的数据存入或取出,只能在浮动的一端(称栈顶)进行,严格按照“先进后出”的原则存取,位于其中间的元素,必须在其栈上部(后进栈者)诸元素逐个移出后才能取出。在内存储器(随机存储器)中开辟一个区域作为堆栈,叫软件堆栈;用寄存器构成的堆栈,叫硬件堆栈。

堆的内存是由程序员自己分配的,系统会从堆中查找大小合适的空位,并将地址返回,数据就存在那里,堆的内存是随机分配的,可能会出现小块的空缺,导致塞不下大块的数据,出现碎片化的问题。

栈是由系统自动分配给局部变量或函数参数的,并且紧致的朝一个方向分配,先进后出的原则,就像是在一个盒子中放东西。堆栈的概念使我们对数字时代的机器运作有一个基本的认识,同时,也是我们认识世界的一个视角:每个城市的高速公路都一模一样,像是文明的云层自动分配给每个城市的“栈”。而老城区歪歪扭扭的小路则是“堆”出来的。“堆”就是“栈”这个乌托邦的他者,就是异托邦空间。我们现在把这个堆栈所叠加的世界叫做元宇宙(Metaverse),一个叠加了虚拟实境(堆)的现实(栈)。

4资源分配与调度的操作系统原理

操作系统原理是计算机软件的主要内容之一。还有一门是编译原理,旨在介绍编译程序构造的一般原理和基本方法,现在完全不记得当年是学的很少,还是在计算机原理课程中有一个初步介绍。编译原理即是对高级程序语言进行翻译的一门科学技术。因为计算机存储的数据和执行的程序都是由0、1代码组合而成的, 那么在早期程序员编写计算机程序时必须十分了解计算机的底层指令代码通过将这些微程序指令组合排列从而完成一个特定功能的程序。我们这个电子计算机专业偏硬件,主要是学习计算机的设计与制造。所以,软件课程不仅学的少,而且学的浅,印象模糊不清。只记得死锁概念,两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象。若无外力作用,它们都将无法推进下去。避免死锁的一种重要方法是银行家算法,一定数量的本金要应多个客户的借贷周转,为了防止银行家资金无法周转而倒闭,对每一笔贷款,必须考察其是否能限期归还。这就是在操作系统中研究资源分配策略,系统中有限的资源要供多个进程使用,必须保证得到的资源的进程能在有限的时间内归还资源,以供其他进程使用资源。如果资源分配不得到就会发生进程循环等待资源,则进程都无法继续执行下去的死锁现象。

记得教操作系统的老师,十分干练与睿智,复旦大学数学系出身,很好地讲解了计算机系统的各项资源板块是如何调度工作的,提升计算机的智能化工作效率。不知是我们领悟能力较差,还是教学要求的限制,总之,没有学到什么东西。

大学毕业后,在国家计算机大骨干企业工作,北京大学的杨芙清(1932.11.6-)在我厂制造的DJS210中型机上,调试XCY编译程序。该系统是杨芙清联合徐家福、仲萃豪等学者,研制了国内第一个并发程序设计语言XCY,并在国内首次用高级语言书写全部操作系统程序。杨芙清曾多次在我们厂里做学术报告,交流XCY操作系统的设计思想与编译方法,才比较全面地了解操作系统与编译原理;特别是听了杨芙清软件工程支撑环境的研究思路,深受启发,以后运用到我的研究之中。

杨芙清有个博士后,就是我们南航电子工程系电子计算机专业80级学生,是报考清华、浙大与成电因体检表弄错而落榜,后被南航适时地补录的梅宏。现在杨芙清与梅宏都是中科院院士,梅宏是我们专业几乎是空前绝后的奇迹。

5. 在寺庙里完成的毕业设计

我的大学毕业设计是在江苏无线电厂做的,当年该厂还在毗卢寺里,也就说我在寺庙里完成的本科毕业论文。毗卢寺成为中国佛教研究和中国中医学研究的中心,被誉为中国佛教从传统走向现代的标志性道场,这也奠定了南京的“佛都”身份。以后,再也没有进去过,原来的工厂不知搬迁了,还是倒闭了。

秋天千万别去南京,否则就不想回家了

                    秋天的毗卢寺--“金光明道场”

我毕业设计的指导老师叫王泽涵,文革前的北大数学力学系本科生,毕业后到中科院计算所工作。我们三位同学在他领导下做毕业设计。他正在做机器的防制研发,即解剖机器的软件与硬件设计。他给我们的任务是一个循环冗余码的破译以及实现。最初几天,我在厂里了解整个机型的运作原理,以后领了任务就在家里琢磨,试错,先弄通了数学上如何构成,然后在程序上怎样实现,最后用电子元件搭出电路,调试成功。每完成一部分工作,就去厂里汇报一次,得到肯定后进行下一步工作。很快就完成了毕业设计。我也没有与同组同学商量讨论,自己写完设计报告,答辩也是我一个人做的。我不知道,设计工作是否比较简单,工作量不大,还是我比较专心致志,在南航课程学习还是很大的帮助。

除了教操作系统的老师,其他计算机方面教师的水平应该都低于王泽涵。我们南航的计算机学科没有什么知名教授,比较出名的是长期致力于数学基础与计算机科学理论的研究朱梧槚,20多岁被错划成“右派”, 在文革中以“叛国罪”的罪名投进监狱十年之久。在极其艰苦的条件下,朱梧槚和他的老师徐利治合作,勇敢挑战世界级的重大数学难题,并且在“康托连续统假设问题”研究中取得了极为耀眼的成果;他与另一位教授共同创建并发展的“中介数学系统”被誉为“国际首创的系统性工作”。1989年从南京大学数学系调入到南京航空学院计算机系,可惜那时我们已经毕业多年了,无缘听到他的课程。




https://m.sciencenet.cn/blog-3426423-1348994.html

上一篇:简单、片面、分析的电子课------我怎么就读了一个假南航?(3)
下一篇:枯燥、凋零、僵化的社会科学课----我怎么就读了一个假南航?(5)

6 冯圣中 武夷山 王安良 孙颉 曹俊兴 汪强

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2022-10-2 20:50

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部