爱问知识人 爱问教育 医院库

计算机编程算法和数学有什么关系?

首页

计算机编程算法和数学有什么关系?


        

提交回答
好评回答
  • 2019-06-21 16:20:26
      从事编程工作多年,喜欢在工作之余,夜深人静的时候写点编程感悟,喜欢分享自己的一点编程总结,算是给还在编程路上小伙伴一点启示,学习编程如同一层窗户纸,在某有捅破之前永远觉得距离很遥远,一旦有了感觉进入状态了,其实发现没有想象的那么艰难,能体会到当年自己拿着一本书在苦苦寻找突破的感觉,特别希望能有一个指路人哪怕就是鼓励的一句话可能感觉都不太一样,现在学习编程的环境相比十几年前已经好太多了,大把的书本以及视频资料都可以拿来作为参考。
      现在资料多了也不一定是啥好事情,可能还会导致选择纠结症,很多人初学者只是在选择编程什么编程语言上就能纠结好长时间,选择了语言然后再去选择资料,总之的一堆选择纠结症。很多人即使已经找到了编程的工作,也没有直接的感觉到数学和计算机算法有多少直接关联性。
      甚至多了很多年的程序员也觉得自己算法不怎么样不也是照样写代码,遇到不懂的直接在网上找下相似的代码,看懂了修改下照样能推动项目的进行,只能讲编程的火候还没到家。经历过一次次的项目的洗礼之后,做技术很多东西只要有耐性和毅力基本上都能做到,既然什么都能做到,编程到底难在哪里。
      仔细静下心来想编程的核心是什么,总结起来就是编程思想和逻辑算法,编程思想需要不断的总结归纳,框架思想也是编程思想的一种,需要从千千万万的代码逻辑种抽象出解决问题的方案或者框架,说的通俗一点就是解决问题的能力,问题也是分为很多种,有直接简单的问题,有长期复杂的问题,也有未来还没有发生的问题,解决方案有直接的办法,也有通过设计框架来解,所以格局低一点的人可能就是着重眼前实际问题的解决,格局高的人就会想着设计一个框架也就是业内常说的轮子来规避类似问题的发生,这就是普通程序员和顶级高手的差距,出发点和格局都不在一个步调上。
      至于具体解决问题的模式设计,就会涉及到逻辑算法,简单的可能非常容易理解,复杂一点或者多种组合了基本上就需要用到数学知识了,所以只有认识到这一层面才会觉得数学这东西对于编程显得特别重要,特别针对一些复杂问题或者解决根本问题上,由于自身条件或者所处的工作岗位决定,有些程序员甚至一辈子都不会接触到,但并不意味着不存在,数学对于编程逻辑的重要性不言而喻。
      总结的东西可能和主体不太搭配,既然是分析解决问题,还是喜欢从更大的格局来解决问题,不要小瞧数学对编程的影响,虽然不是每个编程角落都能和数学扯上关系,但对于重要场景一定不会缺席,但也没有必要为了学习编程专门去学一遍数学,如果是在校学生看到可能意义会更加重大一些,所以讲数学逻辑好的人,学习编程是有一定优势的,喜欢逻辑推理的人从骨子看是非常适合做一名优秀的程序员,当然真的优秀,还需要发自内心的热爱。
      希望能帮到你。

    l***

    2019-06-21 16:20:26

其他答案

    2019-06-21 16:20:26
  • 严格的来说,计算机编程算法,是数学的一个具体分枝,在高中数学中,大家都要学习程序框图,而程序框图,是编程的关键。在计算机早期的发展过程中,计算机程序设计是归入数学系,要学习布尔代数,逻辑等很多课程,随着社会的发展,计算机的应用越来越广泛,计算机和其他的知识结合越来越多,计算机发展成为一个专门的学科,但,它的基础是数学,是逻辑思维。

    懂***

    2019-06-21 16:20:26

  • 2019-06-21 16:20:26
  • 编程算法强调的是逻辑,简单说就是第一步怎么做,第二步怎么做,直到结束。数学算法是利用数与数之间的关系进行比较快的运算。如果数学算法有很好的基础,对于编程是有很大的帮助的。例如判断一个数n是否为质数,一般方法判断[2,n-1]区间内的整数是否存在能整除n,不存在就是质数。如果有数学算法的底子就知道,只需要判断2到根号n之间的整数是否存在能整除n,不存在就是质数。这样做的好处就是,搜索的范围小了,求解速度快。

    杨***

    2019-06-21 16:20:26

  • 2019-06-21 16:20:26
  • 计算机编程和数学有很大关系计算机编程和数学都是具有很强逻辑性。编程和数学都可以锻炼逻辑思维能力。而且是以可以相互促进的两门学科。这就是为什么,很多学数学的人最后转行做编程的原因,因为他们是想通的。学计算机编程需要有底层数学知识。不会高等数学的话,编程只能是做一些基础性的,日常性的事情。但如果数学足够好,就可以做更精密的一些,误差更小,精确度更高,也更有可能做创造性的内容。

    这***

    2019-06-21 16:20:26

  • 2019-06-21 16:20:26
  • 一般来说两者是没有联系的,只是两者都需要很强的逻辑能力。对于日常使用计算机编程算法不需要数学,只是在具体使用中由于用途中会使用数学公式或者数学方法,这时编程语言需要执行数学公式,两者就结合在一起了,比如在用程序语言进行图像处理就常常会用到傅立叶变换,或者拉普拉斯算子之类的数学方法。另外理工科领域在大学之后的计算常常要借助计算机进行循环计算或者大批量数据处理,有时为了特定的目标需要自己编写程序,比如使用神经算法实现优化计算。常常需要编程进行统计学的计算。

    爱***

    2019-06-21 16:20:26

  • 2019-06-21 16:20:26
  • 站在程序员角度,常用算法与数学没有一毛钱的关系,仅是评估算法是定量分析下。但对多数程序员而言,这些常用算法还需要再自己评估吗?平时只是调用库函数而已。站在科研人负角度,解决某一具体问题,通常要采用数学模型进行建模分析,但这个模型与实用算法之间通常有非常大的差距。结论:是程序员的话,深刻理解常见算法,并应用其解决自己工作中的常见问题,不要老想到数学家的事!是科研人员的话,多多发论文,多申请基金,反正现在国家在基金支助上不差钱,就不要想着什么实用了,这么多年都证明:真正实用的是少数!

    刘***

    2019-06-21 16:20:26

  • 2019-06-21 16:20:26
  •   谢谢,这是一个比较普遍的问题,而且被问了很多次,在大学里面孩子们在选择方向的时候,如果是知道编程这个方向,基本上都会问出这个问题。我自己本身,教过中学,目前在大学里工作,虽然不是做编程的,但是主要做计算机设计与媒体方向,是和计算机相关。回到这个问题,我觉得应该从以下几个方面去了解第一,我觉得编程的人一般都是具有良好的逻辑思维的人,因为,如何用程序语言的方式,把一件事情,说清楚,这本身就是一个逻辑问题。
      因为依靠程序去实现一个目的,所使用的方式不止一种。而数学,被认为与逻辑,非常相关的一个学科。第二,大学里软件类的编程相关专业中要学数学,比如高等数学,线性代数,离散数学,数据库等,而且都是专业课和考试课。第三,编程和数学有关,但并不是说,不学数学,编程就没法学,其实是越往高层,对数学的要求,就会越低,比如,以前网络编程系统编程,大都是封装好的,但对于一个系统来说,整体的规划和设计更关键,这就是说前期的需求分析,逻辑结构设计,和物理结构设计比编码更重要。
      最后一点,我想补充的,很多人认为学设计,就和编程没有关系,其实这也是不对的。特别是图形学理论的学习,没有线性代数基础,是根本看不懂的,还有在三维视图方面,又涉及到高等数学当中的坐标知识。很多算法,对于平面几何分析水平的要求也是很高的,比如说,如果你想搞游戏设计,动画电影,很多时候也是要编写脚本的,否则画面,是没有那么好的。
      总的来说,他们之间还是有一定关系的。谢谢。

    D***

    2019-06-21 16:20:26

  • 2019-06-21 16:20:26
  • 科学计算,数值计算,几何运算,线性代数,离散数学,概率论,统计论,高等数学,工程数学,向量和矩阵运算,时域变换,频域变换……这些算法中涉及的知识,都是数学。数学是一切学科的基础及演变,计算机编程算法也是基于数学之上。逻辑不是算法仅有的特征,数学更需要逻辑。如果是从事基础算法工作,必需要有深厚的数学理论功底。数学+业务知识,是算法工作的标配。如果是从事算法的应用,那么则不需要太深入了解数学,但也要做到知而会用。实际工作中,大部分算法岗位都算应用级别。利用现有开源库,修修改改,拆分重组。借鉴多于研创,说得好听点就是,合理充分利用资源,站在巨人的肩膀上,差异化创新。如果你想在算法领域上走得远站得高,请好好学习数学。谢谢大家。

    天***

    2019-06-21 16:20:26

  • 2019-06-21 16:20:26
  •   数学对于计算机算法编程来说非常重要。我主要从下面两个方面来说明它为何这么重要一。 培养逻辑思维能力数学和算法编程都需要较强的逻辑思维能力,程序代码的逻辑结构、前后联系及处理方式都需要较强的逻辑思维能力,而数学学得好,逻辑思维能力强,通常算法编程领悟也会更深。
      二。 数学应用于算法编程这一点应该是数学与算法编程比较相关的重要原因,无论是计算机的底层还是非底层,数学知识到处都有体现。例如计算机底层的二进制、机器学习和深度学习的梯度推导、SVD分解、张量分解、PCA求特征值、优化问题、密码学的大数分解、概率图模型等等都是与数学特别相关。
      下面我随便举两个例子,可以自己体会例1: 给定一个数x,开平方并取倒数。代码实现如下这是当年的经典游戏雷神之锤3里面的代码,经测试这段代码比(float)(1。0/sqrt(x))快4倍,计算性能有质的飞跃。为此还专门有一篇论文《Fast Inverse Square Root》讲解这个代码的数学原理,感兴趣的同学可以找一下这篇文章研究一下。
      例2:给定一个数n,n可能非常大,比如10的18次方这么大,求x^2+y^2=n的解。如果不用数学知识,直接暴力搜索,时间复杂度为O(n),效率低下,而且按目前的计算机水平也很难算出来。如果了解Brahmagupta–Fibonacci identity、Pollard-rho分解法、二次同余方程的解、欧几里德辗转相除等数学知识,那么求解这个问题的时间复杂度大大降低,保证0。
      2秒内出结果。如果工作是算法岗位,数学更加特别重要,因为机器学习、数据挖掘、NLP等方向的底层原理基本都与数学脱离不开关系。

    不***

    2019-06-21 16:20:26

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):