论文部分内容阅读
一个大学生将来的作为与他的数学修养有很大的关系。
——四川大学数学学院曹广福
数学:必然考查的能力
下面是一道世界第一大软件公司(微软)招聘程序员的测试题:
中间只隔一个数字的两个素数被称为素数对,比如5和7,17和19,证明素数对之间的数字总能被6整除(假设这两个素数都大于6)。
这样的试题还有很多很多,这些题目看上去都是一些数学问题。但是世界上一些著名的公司都把它们用于招聘测试,可见这些公司对新员工的数学基础非常重视。数学试题与应用程序试题是许多大型软件公司面试中指向性最明显的一类试题,这些试题就是考查应聘者的数学能力与计算机能力。
某咨询公司的一名高级顾问曾说过,微软是一家电脑软件公司,当然要求其员工有一定的计算机和数学能力,面试中自然就会考查这类能力。微软的面试题目就考查了应聘人员对基础知识的掌握程度、对基础知识的应用能力,甚至暗含了对计算机基本原理的考查。所以,这样的面试题目的确很“毒辣”,足以筛选到合适的人。
四川大学数学学院的曹广福教授曾说过:“一个大学生将来的作为与他的数学修养有很大的关系。”大学计算机专业毕业生都有感触,计算机专业课程中最难的几门课程莫过于离散数学、编译原理、数据结构。当然,像组合数学、密码学、计算机图形学等课程也令许多人学起来相当吃力,很多自认为数据库学得很好的学生在范式、函数依赖、传递依赖等数学性比较强的概念面前感到力不从心,这些都是数学基础不扎实或者说缺乏数学知识所造成的。
数学是计算机的基础,这也是攻读计算机专业研究生的数学试卷都采用最难试卷的原因。当然这也能促使一些新的交叉学科如数学与应用软件、信息与计算科学专业等飞速发展。
基础:敏锐严谨的数学思维
程序设计当中解决的相当一部分问题都会涉及各种各样的科学计算,这需要程序员具有什么样的基础呢?面对实际问题,程序员往往需要建立完美的数学模型,只有这样,才能设计出良好的程序。算法与计算理论是计算机程序设计领域的灵魂所在,是发挥程序设计者严谨、敏锐思维的有效工具,任何程序设计语言都试图将之发挥得淋漓尽致。
程序员需要一定的数学修养,不单是编程本身的需要,也是培养逻辑思维以及严谨的编程作风的需要。数学可以锻炼我们的思维能力,可以帮助我们解决现实中的问题,可以帮助我们更好地学习知识与分析问题。
一名有过十多年开发经验的老程序员曾说过,所有程序的本质就是逻辑,尽管你已经较好地掌握了编程技术,但是只有提高了逻辑能力,你才能成为一名职业程序员。打一个比方吧,你会十八般武艺,刀枪棍棒都很精通,偏偏就是内力不够,所以永远都上不了战场。这个内力对程序员而言就是逻辑能力,其本质是一个人的数学修养,而不是简单的数学知识。
磨炼:成就数学素养
程序员的数学修养不是一朝一夕就可以培养出来的。数学修养与数学知识不一样,修养需要一个长期的过程,而知识的学习可能只是一段短暂的时间。
下面是一些对于程序员如何提高与培养自己的数学修养的基本看法。
首先,应该意识到数学修养的重要性。若想成为优秀的程序员,一定的数学修养是十分重要也是必要的。数学是自然科学的基础,计算机科学实际上是数学的一个分支。
计算机理论其实是很多数学知识的融合,软件工程需要图论,密码学需要数论,软件测试需要组合数学,计算机程序的编制需要更多的数学知识,如集合论、排队论、离散数学、统计学,当然还有微积分。
计算机科学一个最大的特征是信息与知识更新速度很快,随着数学知识与计算机理论的进一步结合,数据挖掘、模式识别、神经网络等分支科学得到了迅速发展,控制论、模糊数学、耗散理论、分形科学都促进了计算机软件理论、信息管理技术等的发展。
严格的说,一个数学基础不扎实的程序员不能算一个合格的程序员,很多介绍计算机程序设计的书籍本身也就是数学知识的应用与计算机实践的手册。
其次,自身数学知识的积累,培养自己的空间思维能力和逻辑判断能力。像泛函理论、混沌理论以及一些非线性数学问题不是三五几天就可以掌握的。数学修养的培养要求程序员有良好的数学学习能力,能够很快地把一些数学知识和自己正在解决的问题联系起来。
很多理学大师虽然不是数学专业出身,但是他们对数学有敏锐的观察力和很强的理解力,于是一系列新的学科诞生了,如计算化学、计算生物学、生物信息学、化学信息学、计算物理学、计算材料学等等。
从计算机的诞生来看,它就是在数学的基础上产生的,最简单的0、1进制就是一个古老的数学问题。学无止境,不断的学习是提高修养的必经之路。
最后,多在实践中运用数学。有些高等学校开设了数学建模课程,这门课程把很多相关的学科与数学都联系在一起,通过很多数学模型来解决实际的生产生活问题,很多问题最终的解决需要计算机程序来实现。
实际上,现在的程序设计从某些角度来看就是一个数学建模的过程,模型的好坏关系到系统的优劣成败,现在的数学建模思想已经用于计算机的许多相关学科中,不单是计算机程序设计与算法分析。应该知道,数学是一门需要在实践中展示其魅力的科学,而计算机程序也是为了帮助解决实际问题而编制的。因此,应该尽量使它们充分结合起来。在这个方面,计算机密码学是运用数学知识最深最广的,每一个好的加密算法后面都有一个数学理论的支持,如椭圆曲线、背包问题、素数理论等。
总之,要想成为一名有潜力和发展前途的程序员,或者想成为程序员中的佼佼者,就一定要培养良好的数学修养。
——四川大学数学学院曹广福
数学:必然考查的能力
下面是一道世界第一大软件公司(微软)招聘程序员的测试题:
中间只隔一个数字的两个素数被称为素数对,比如5和7,17和19,证明素数对之间的数字总能被6整除(假设这两个素数都大于6)。
这样的试题还有很多很多,这些题目看上去都是一些数学问题。但是世界上一些著名的公司都把它们用于招聘测试,可见这些公司对新员工的数学基础非常重视。数学试题与应用程序试题是许多大型软件公司面试中指向性最明显的一类试题,这些试题就是考查应聘者的数学能力与计算机能力。
某咨询公司的一名高级顾问曾说过,微软是一家电脑软件公司,当然要求其员工有一定的计算机和数学能力,面试中自然就会考查这类能力。微软的面试题目就考查了应聘人员对基础知识的掌握程度、对基础知识的应用能力,甚至暗含了对计算机基本原理的考查。所以,这样的面试题目的确很“毒辣”,足以筛选到合适的人。
四川大学数学学院的曹广福教授曾说过:“一个大学生将来的作为与他的数学修养有很大的关系。”大学计算机专业毕业生都有感触,计算机专业课程中最难的几门课程莫过于离散数学、编译原理、数据结构。当然,像组合数学、密码学、计算机图形学等课程也令许多人学起来相当吃力,很多自认为数据库学得很好的学生在范式、函数依赖、传递依赖等数学性比较强的概念面前感到力不从心,这些都是数学基础不扎实或者说缺乏数学知识所造成的。
数学是计算机的基础,这也是攻读计算机专业研究生的数学试卷都采用最难试卷的原因。当然这也能促使一些新的交叉学科如数学与应用软件、信息与计算科学专业等飞速发展。
基础:敏锐严谨的数学思维
程序设计当中解决的相当一部分问题都会涉及各种各样的科学计算,这需要程序员具有什么样的基础呢?面对实际问题,程序员往往需要建立完美的数学模型,只有这样,才能设计出良好的程序。算法与计算理论是计算机程序设计领域的灵魂所在,是发挥程序设计者严谨、敏锐思维的有效工具,任何程序设计语言都试图将之发挥得淋漓尽致。
程序员需要一定的数学修养,不单是编程本身的需要,也是培养逻辑思维以及严谨的编程作风的需要。数学可以锻炼我们的思维能力,可以帮助我们解决现实中的问题,可以帮助我们更好地学习知识与分析问题。
一名有过十多年开发经验的老程序员曾说过,所有程序的本质就是逻辑,尽管你已经较好地掌握了编程技术,但是只有提高了逻辑能力,你才能成为一名职业程序员。打一个比方吧,你会十八般武艺,刀枪棍棒都很精通,偏偏就是内力不够,所以永远都上不了战场。这个内力对程序员而言就是逻辑能力,其本质是一个人的数学修养,而不是简单的数学知识。
磨炼:成就数学素养
程序员的数学修养不是一朝一夕就可以培养出来的。数学修养与数学知识不一样,修养需要一个长期的过程,而知识的学习可能只是一段短暂的时间。
下面是一些对于程序员如何提高与培养自己的数学修养的基本看法。
首先,应该意识到数学修养的重要性。若想成为优秀的程序员,一定的数学修养是十分重要也是必要的。数学是自然科学的基础,计算机科学实际上是数学的一个分支。
计算机理论其实是很多数学知识的融合,软件工程需要图论,密码学需要数论,软件测试需要组合数学,计算机程序的编制需要更多的数学知识,如集合论、排队论、离散数学、统计学,当然还有微积分。
计算机科学一个最大的特征是信息与知识更新速度很快,随着数学知识与计算机理论的进一步结合,数据挖掘、模式识别、神经网络等分支科学得到了迅速发展,控制论、模糊数学、耗散理论、分形科学都促进了计算机软件理论、信息管理技术等的发展。
严格的说,一个数学基础不扎实的程序员不能算一个合格的程序员,很多介绍计算机程序设计的书籍本身也就是数学知识的应用与计算机实践的手册。
其次,自身数学知识的积累,培养自己的空间思维能力和逻辑判断能力。像泛函理论、混沌理论以及一些非线性数学问题不是三五几天就可以掌握的。数学修养的培养要求程序员有良好的数学学习能力,能够很快地把一些数学知识和自己正在解决的问题联系起来。
很多理学大师虽然不是数学专业出身,但是他们对数学有敏锐的观察力和很强的理解力,于是一系列新的学科诞生了,如计算化学、计算生物学、生物信息学、化学信息学、计算物理学、计算材料学等等。
从计算机的诞生来看,它就是在数学的基础上产生的,最简单的0、1进制就是一个古老的数学问题。学无止境,不断的学习是提高修养的必经之路。
最后,多在实践中运用数学。有些高等学校开设了数学建模课程,这门课程把很多相关的学科与数学都联系在一起,通过很多数学模型来解决实际的生产生活问题,很多问题最终的解决需要计算机程序来实现。
实际上,现在的程序设计从某些角度来看就是一个数学建模的过程,模型的好坏关系到系统的优劣成败,现在的数学建模思想已经用于计算机的许多相关学科中,不单是计算机程序设计与算法分析。应该知道,数学是一门需要在实践中展示其魅力的科学,而计算机程序也是为了帮助解决实际问题而编制的。因此,应该尽量使它们充分结合起来。在这个方面,计算机密码学是运用数学知识最深最广的,每一个好的加密算法后面都有一个数学理论的支持,如椭圆曲线、背包问题、素数理论等。
总之,要想成为一名有潜力和发展前途的程序员,或者想成为程序员中的佼佼者,就一定要培养良好的数学修养。