我见过很多数学系的学生,认为自己编程能力不行,说自己不是编程的那块料,每每遇到需要编程的任务,心里就犯难。即使那些稍微有点勇气的学生,下定决心硬着头皮上,也往往收效甚微,成长缓慢。
这不是一个正常的现象。因为数学系的学生,在经过了几年的学习和训练后,是应该具备相当程度的结构化、定量化的抽象逻辑思维能力,并且能够借助数学的思想和方法,熟练使用数学语言来刻画问题、构造解决方案。对于受过良好训练的数学系学生来说,所谓编程,本质上就是把用数学语言描述的解决方案“翻译”为程序代码而已。数学和计算机编程本来就是天作之合,有数学背景的学生应该具备很大的优势和潜力来学好编程。
我一直认为,能同时掌握数学语言和计算机编程语言的人,到高校一定是科研能手,到公司一定是业务骨干。但现实却是,很多大学的数学院系,仍在不断培养大量害怕编程的学生。如果去问数学系的学生将来要找什么工作,很多人的第一个想法就是当一名老师。如果问关于数学研究的事情,他们非常自然地认为证明分析就是数学研究的全部内容。
数学系的毕业生有很多去了学校,或者金融、互联网这些来钱快的行业。而在中国需要数学重点支撑的科学计算与工业软件领域,我们会发现数学背景出身的人寥寥无几。学生不愿去的直接原因,一方面是对自己编程能力和学习潜力没有信心;另一方面对数学如何应用到科学计算和工业软件领域也没有什么概念,对于实际工业应用背景更是知之甚少,缺乏将数学语言自如转换为应用领域语言的能力。
当前国产科学计算和工业软件远远落后于西方发达国家,在总体上存在基础薄弱、创新不足、人才短缺和应用困难等问题,被结结实实地“卡”着脖子。而要解决这一严峻的问题,培养大量既懂应用数学 、又懂计算机编程和应用物理的综合型人才,并引导他们进入科学计算和工业软件领域,是当下亟需做的事情。(鄂维南院士在《人工智能时代交叉科学的人才培养》一文中对算法时代如何培养人才有更深入细致的阐述)
那么,我们当前的数学教育已经做好培养这些综合性人才的准备了吗?依目前的情况来看,显然没有。数学系的学生,在数学、编程和数学应用之间的自我怀疑、彷徨、痛苦和挣扎,并不是一种偶然现象,而大学数学科研和人才培养体制机制的僵化就是造成这种现象的一个外部客观原因。
时至今日,在很多大学的数学系中,计算机编程教学依然是以教授语法知识为主,对数学核心课程的支撑也仅仅停留在商业软件的使用上,几乎没有关于编程原则、方法、技能和生产力工具的教学内容。
为什么只是教教编程语法?因为承担编程教学的师资,大部分还是数学系出身,基本没有受过正规的计算机编程训练。而且目前高校的这种以“数数”为主的评价机制,让承担编程教学的老师即使有心,也不太可能把大量时间花在学习提高自己编程能力、搞好编程教学的事情上。在师资的引进和培养上,大多学校还是以“戴帽子”的人为主,至于实际需要什么样的师资来为国家、社会培养更有用的人才,往往考虑的不够深入全面。所以,从我上大学到现在,整整 20 年了,大部分数学系的计算机编程教育,依然没有什么变化,而且预计在将来可见的很长一段时间内,整体上也不会有什么实质性的变化。
(原文链接:https://mp.weixin.qq.com/s/vB0qAz2e1QmNMKnBGitEYw)