本文作者:qiaoqingyi

编程需要数学吗(编程需要学数学吗)

qiaoqingyi 03-06 151

  数学是一门工具性很强的科学,它与别的科学比较起来还具有较高的抽象性等特征。起初是计算机科学工作者离不开数学,而数学工作者认为计算机对他们可有可无,但是现在是互相都离不开对方了,计算机也提高了数学工作者在人们心目中的地位,大部分的数学工作者开始认识到计算机的重要性,并越来越多地进入到计算机领域发挥作用。

  但是随着人工智能、GPS(全球定位系统)等飞速的发展和计算机运算性能飞跃性的提升,计算机的优势越来越深入到思维领域,于是计算机将高深的数学理论用到实际中来,十分有效地解决了许多实际问题,例如著名难题四色问题就是被计算机证明的。问题的求解过程中有许多具有实用价值的数学分支,如分析几何、小波分析、离散数学、仿生计算、数值计算中的有限单元方法等。它让人们知道计算机程序设计结合的就是数学知识和数学思想。

  

  软件编程是基于数学模型的基础上面的,所以,数学是计算机科学的主要基础,以离散数学为代表的应用数学是描述学科理论、方法和技术的主要工具。软件编程中不仅许多理论是用数学描述的,而且许多技术也是用数学描述的。从计算机各种应用的程序设计方面考察,任何一个可在存储程序式电子数字计算机上运行的程序,其对应的计算方法首先都必须是构造性的,数据表示必须离散化,计算操作必须使用逻辑或代数的方法进行,这些都应体现在算法和程序之中。

  此外,到现在为止,算法的正确性、程序的语义及其正确性的理论基础仍然是数理逻辑,或进一步的模型论。真正的程序语义是模型论意义上的语义。于是软件编程思想运行的严密性、学科理论方法与实现技术的高度一致是计算机科学与技术学科同数学学科密切相关的根本原因。

  从学科特点和学科方法论的角度考察,软件编程的主要基础思想是数学思维,特别是数学中以代数、逻辑为代表的离散数学,而程序技术和电子技术仅仅只是计算机科学与技术学科产品或实现的一种技术表现形式。

- 软件编程与数学思维的联系-

  1、数学在计算机领域的发展

  如今形形色色的软件,都与数学有必然的联系,它们相互相成。例如,逻辑学在学科中的应用从早期的数理逻辑发展到今天的程序设计模型论;数学在学科中的应用从早期的抽象代数发展到今天的图形学、工程问题方面;几何学的应用从早期的二维平面计算机绘图发展到今天的三维动画软件系统,并在与复分析的结合中产生了分形理论与技术;在游戏、图形软件开发中引用了线性代数中大量的坐标变换,矩阵运算;在数据压缩与 还原、信息安全方面引入了小波理论、代数编码理论等。

  2、软件编程的思维定式

  软件编程的思维定式决定了一个人编程的水平,在编程过程中,数学思维清晰,编写出来的程序让人耳目一新。结合教学,通过调查分析,了解到超过85%的学生,他们在编程时是根据语法而编写程序,完全脱离了软件编程的思维,这种思维定式使得他们编写的程序相当糟糕,没有一点逻辑。

  之所以造成这种软件编程的思维,是因为他们平时对数学思维的培养不够重视。很多学计算机的学生想:学高数,这有什么用?

  学线性代数有什么用?学离散数学,有什么用?于是他们很少去上这些课,马马虎虎,整天闷在寝室里,玩玩游戏,装装软件,看看C语言。只知道概率问题和矩阵知识在其它课程上起到了互补作用,学的不是很深。

  但是当他们看到《数据结构和算法》时,感到其中的内容对他们而言感觉相当的艰涩难懂,这时他们就隐约感觉到了数学思维的作用了。在此之前,他们不仅荒废了大学的高等数学,连初中的初等数学也忘的好多,当他们进行高抽象思维时,确实感觉自己的思维已经很迟钝了。

  学计算机的学生之所以觉得《数据结构》这门课程很难,就是因为他们的数学思维锻炼的不够!其实生活中有很多这样的例子:

  对于一个刚毕业的,编应用软件的大学生,在编程中用到《线性代数》的矩阵时,恐怕便会想,在大学把线性代数学好就好了;

  当在程序中用到动态链表、树时,恐怕也会想“在大学时花点时间去学《数据结构》,会多么的有意义”;当学数据结构时,恐怕也会想“学《离散数学》时为什么要逃那么多的课,要不然学离散的时候就会很轻松”。所以数学思维不够,在软件编程会有很多的疑虑,显的有点缩手缩尾,而且写的程序也不够健全,缺乏逻辑。

  3、软件编程与数学思维的融合

  很多专业人士觉得数学和软件编程能力就像太极和拳击,软件编程能力很强就好比出拳速度很快很重,能直接给人以重击;数学很好的话就好像一个太极高手,表面上看没有太大的力量但是内在的能量是更强大的,但是好的拳击手是越年轻越好,而太极大师都是资历越深越厉害。所以数学是成就大师的必备能力,虽然很多学生看上去感觉没有什么用途,但是到了一定的水平之后就会体会它的力量了。

- 数学思维在软件编程中的应用-

  目前很多出名的IT公司在笔试的时候,都会在程序设计题中考察应聘者的数学思维能力,因此,这应该引起广大学生在平时的学习中注意锻炼自己的数学思维,有机会的话参加一下数学建模比赛,你便会有很深刻的体会 ---原来数学和计算机结合得这样紧密。下面典型的代码,在设计过程中充分的运用了数学思维。

  题目一:从3个红球,5个白球,6个黑球中任意取出8个球,且其中必须有白球,输出所有可能的方案。

  程序一:

  #include "stdio.h"

  void main()

  {

  int i,j,k; //I代表红球,j代表白球,k代表黑球

  printf("n red write blackn");

  for(i=0;i=3;i++)

  for(j=1;j=5;j++) //j=1是因为题目中要求必须要有白球

  {

  k=8-i-j; //黑球的个数

  if(k=0k=6)

  {

  printf("%3d,%3d,%3d",i,j,k); //输出组成方案

  }

编程需要数学吗(编程需要学数学吗)

  }

  }

  从上面的例子中我们可以隐隐知道数学思维在软件编程中的应用。尽管学习数学带给计算机专业人士的回报大过常人,但现今社会里每个人都能由此受益,是让人们提高自己思维能力,变得聪颖的绝佳方法。这种思维能力能让人们在各方面受益!但实际上,数学上功底扎实,在软件编程上的优势尽显,项目的设计模式格外地优化,程序逻辑条理也格外地清晰。因为数学可以培养人的逻辑思维能力,而程序设计需要很强的逻辑思维能力。

  这些让我们深刻的体会到数学思维与软件编程的耦合性,其实我们国家的计算机软件水平的落后不是因为我们缺少程序员,而是因为缺乏懂数学的高质量的程序员。一个具有数学修养的程序员在写代码时更有可能写出逻辑严密的最简化的高质量代码。而目前一些龙头IT公司,比如微软公司总裁比尔·盖茨年青时就对数学很痴迷,而他们的项目经理,必须得具备超强的数学思维,而且有些还是数学专业的博士,从这也可以看出微软公司对于数学人才的重视程度。

  软件编程的思想最重要是算法,而算法是建立在数学思维上的,其实说白了,程序只是一件衣服,算法才是它的灵魂,算法就来自于数学,没有深厚的数学思维功底,是弄不懂算法的。所以,如果你想从事软件编程,那么就认真的培养自己的数学思维吧!

来源:中国数学会

(免责声明:“数学建模”旨在传播数学精神,方便大家互相交流建模知识,尊重原创并对原创者的文章表示肯定和感谢,相关文章均来自网络搜索,某些文章无法找到详细作者以明确出处请见谅。原作版权归原作者所有,如有侵权,请及时联系处理,我们将立即更正和删除相关内容。本公众号拥有对此声明的最终解释权。)

阅读
分享