计算机科学中的数学 ─谈计算机专业数学的学习
详细内容
“计算机专业毕业生在基础科学的知识方面非常薄弱,他们的技术集中在很窄的编程、编程语言和操作系统领域。他们混淆了存在的理论证据和实际产品,玩具和实用工具之间的界限”[D.L Parnas1990]。随着现代软件工业的发展,软件开发方式较过去相比已经有了很大的变化,各种开发工具不断出现。这些开发工具大部分都能自动完成程序中的一些机械代码,并隐藏了其中的实现细节。再加上面向对象程序设计思想以及组件技术的发展,使得程序编写像搭积木一样简单。应该认识到,在Windows环境下,程序主要靠编程工具来搭建框架,靠操作系统提供底层支持,编程语言只起辅助描述作用。象离散数学、计算方法、概率论等才是专业人士所必需的。
其实,无论软件工程如何发展,无论开发工具如何进步,只要还是基于冯·诺依曼体系的计算机,这些永远是专业所必需的,永远不会淘汰的。数学和英语作为计算机专业基础课,具体内容设置值得讨论。象离散数学、计算方法和概率论这类实用科目涵盖很广,哪些必修,哪些选修,哪些作为推荐参考,需要根据总学时及学生的素质灵活设置。
本文就关于数学在计算机中的重要性以及在离散数学教学过程中就其内容及其与计算机科学实际应用进行讨论。 数学是整个科学的基础,也是高新技术的理论基础,是联络科学与技术的纽带。毫无疑问,计算机也是以数学为基础的:其工作原理是以布尔代数和数理逻辑为基础的,解决问题是以各种数学模型为基础的,计算方法也是以计算数学为基础的。所以计算机离不开数学,数学是计算机取得辉煌成就的基础。计算机科学的数学基础,被称为“计算理论”,而目前的冯·诺依曼体系(存储程序式)计算机的高速发展都是建立在计算理论基础上的。
基于冯·诺依曼体系结构的程序设计过程,是“分析问题──建立数学模型──选择数据结构──设计算法──翻译成计算机语言”的过程。在这个过程中,最后一步才是通常所说的编程序(更确切地说是编写代码)。所以,学会一两门编程语言或者会用一两种开发工具仅仅是学会了最后一步,而前面四步的掌握都与数学的抽象思维的学习有关,说其直接来源于离散数学的学习也不过分。斯坦福大学语言及信息研究中心的执行主任Keith Devlin的《数学基因:数学思考如何演进及数为什么像闲言碎语》中说,他们(软件工程师)从数学课上得到的最大收益便是曾对纯粹抽象的物体和结构进行过严格推演。而且,数学课是唯一给他们这种体验的科目。这种体验不在于那些课堂上教的重要东西,而在于其本身是数学化的。
