Author: DHUACM |Time:2017-03-19 09:57

提高数学修养,做计算机领域的创新者


(东华大学理学院副院长胡良剑老师在计算机科学与技术学院“榜样的力量”朗诵会活动上的发言)

 

      我在大学的时候完全不懂计算机,1990年代初跟你们的孙莉老师学习Pascal语言开始,因为数学建模逐渐接触编程, 现在出版了几本Matlab的书。我常常在理学院同数学系的学生说学好计算机如何如何重要,还是第一次向计算机专业的同学说数学的重要性。我这里分享几点看法。

 

1. 很多计算机学家本身就是数学家

      世界上第一台数字计算器“加法器”是法国数学家帕斯卡制作的。1642年他为了减轻作为税务官的父亲的计算辛苦设计了一台十进制的、能自动进位的加减法计算装置“帕斯卡加法器”,被称为世界上第一台数字计算器。 1971 年发明的一种程序设计语言──PASCAL 语言,就是为了纪念这位先驱的。

      总所周知,德国数学家莱布尼茨和牛顿先后独立发明了微积分。莱布尼茨对帕斯卡的“加法器”很感兴趣,在1674 年制作了可以进行加减乘除运算的“乘法器”。1700 年左右,他率先系统提出二进制数的运算法则,为计算机的现代发展奠定了基础。

      英国数学家布尔1850 年左右构思出一个关于0 和1 的代数系统,用基础的逻辑符号系统描述物体和概念——布尔代数。由于布尔在符号逻辑运算中的特殊贡献,很多计算机语言中将逻辑运算称为布尔运算。

      计算机逻辑的奠基者图灵也是英国数学家。他提出了事先编好程序可自动工作的“图灵机”;提出了人工智能的衡量标准“图灵测试”。1966 年美国计算机协会(ACM)设立图灵奖,有“计算机界的诺贝尔奖”之称。

      现代电子计算机之父冯·诺依曼,美国数学家。从ENIAC 到当前最先进的计算机都采用的是冯·诺依曼体系结构:数字计算机的数制采用二进制;计算机应该按照程序顺序执行。所以他是当之无愧的数字计算机之父。

      由上可以看出,计算机的发明、发展主要是想要解决大量、复杂的数据计算,而数据的研究理论几乎都来自数学家。所以数学的发展催生了计算机的产生、发展。

 

2.计算机科学的许多深层次问题本质上是数学问题

      计算机科学是在数学和电子科学基础上发展起来的一门学科, 既是一门理论性很强的学科, 又是一门实践性很强的学科。目前理论研究滞后于技术开发, 随着研究和应用的不断深化, 理论的重要地位将越来越突出, 像新一代计算机体系结构, 软件工程, 并行与分布计算, 计算语言学, 容错计算, 人工智能等许多方面的难题并不是技术问题, 而恰恰是理论问题。这些难题基本上都与某些数学理论之间存在着密切的联系, 他们的解决将对学科的发展产生深远的影响。在几乎所有高起点的, 有学术深度的学科研究与开发中,企图参照经验科学的工作方式是行不通的。原因是有学术深度的问题其复杂性早已超出了专家们的直觉和经验所能及的范围。

      由此可见, 计算机科学很多基本问题与数学有着密切的联系。以目前基于图灵机这一理论计算模型和存储程序思想、设计制造的计算机系统而言,只能处理离散问题或可用构造性方式描述的问题,使得离散数学被首选作为描述学科的工具。理论上, 凡是可以用计算机来处理的问题及其处理过程中都可用数学来描述;凡是可以用以离散数学为代表的构造性数学描述的问题及处理过程, 只要所涉及的定义域是有穷的, 或是为无穷但存在有穷表示的, 也一定可以用计算机来实现。

 

3.好的程序员要有好的数学修养

      学计算机的,数学修养很重要。 这也是为什么考计算机专业研究生数学都采用最难试题即“数学一”的原因。计算机专业课程中最难的几门课程莫过于离散数学、编译原理、数据结构等,很多自认为数据库学得很好的学生在范式、函数依赖、传递依赖等数学性比较强的概念面前感到力不从心,这些都是因为数学基础或者说数学知识的缺乏所造成的。

      许多天才程序员本身就是数学尖子。比尔盖茨的数学成绩一直都很棒,他甚至曾经期望当一名数学教授,他的母校——湖滨中学的数学系主任弗雷福赖特说:“他能用一种最简单的方法来解决某个代数或计算机问题,他可以用数学的方法来找到一条处理问题的捷径,我教了这么多年的书,没见过像他这样天分的数学奇才”。中科院院士王选,国家最高科学技术奖获得者,北大数学系毕业,计算机文字信息处理专家,当代中国印刷业革命的先行者。金山软件董事长求伯君当年高考数学成绩满分。很多数学基础很好的人,一旦熟悉了某种计算机语言,他可以很快地理解一些算法的精髓,使之能够运用自如,并可能写出时间与空间复杂度都有明显改善的算法。

 

4. 参加数学建模活动对于程序员提高数学修养是一种很好的培训

      程序员的数学修养不是一朝一夕就可以培养的,也不是数学课考高分能解决的,需要一个长期的过程。

      数学建模把很多相关的学科与数学都联系在一起,通过数学模型来解决实际生活和工程中的问题,很多问题的解决需要编写计算机程序来实现。实际上,现在的程序设计从某些角度来看就是一个数学建模的过程,模型的好坏关系到系统的成败。数学是一门需要在实践中展示其魅力的科学,而计算机程序也是为帮助解决实际问题而编制的,因此,应该使它们结合起来。

      在朱国进老师的带领下,我们计算机学院的同学在ACM程序设计竞赛中取得了很好的成绩,但对数学建模竞赛的参与度一直不太高。今天我在这里呼吁一下,希望更多的同学参加数学建模竞赛。

 

胡良剑,2017年3月17日星期五

 

附:胡良剑老师简介

     胡良剑,东华大学理学院副院长,应用数学系教授,博士生导师。兼任全国数学建模竞赛上海市组织委员会委员、中国工程概率统计学会理事、中国系统仿真学会生命系统建模仿真专业委员会委员等职。


Last modified: 2017-03-19 10:46