编程的哪些方面对数学知识有帮助?

Ser*_*gey 28 math

例如,数学逻辑,图论.

周围的每个人都告诉我数学对于程序员来说是必要的.我看到很多线程,人们说他们使用线性代数和其他一些数学,但没有人描述他们使用时的具体情况.

我知道有类似的线程,但我看不到这种情况的任何描述.

Wel*_*bog 40

电脑图形.

它是所有矩阵乘法,向量空间,仿射空间,投影等.有很多代数.

有关更多信息,请参阅维基百科关于投影的文章,以及更具体的3D投影案例,以及所有各种矩阵.OpenGL是一种常见的计算机图形库,它是应用仿射矩阵运算将对象转换并投影到计算机屏幕上的一个示例.

  • 我个人不得不特别在矢量图形中使用微积分. (2认同)

Jas*_*ker 13

我认为很多程序员使用的数学比他们认为的要多.只是它对他们来说非常直观,他们甚至都没有想到它.例如,每次编写if语句时,您是否使用了离散数学知识?

  • 让我想起了一本关于本能数学的书"The Math Instinct ..."http://www.amazon.com/exec/obidos/tg/detail/-/1560256729/literatinet (2认同)

Dr.*_*ray 11

在图形世界中,您需要进行大量的转换.
在密码学中,您需要几何和数论.
在AI中,你需要代数.
和金融环境中的统计数据.
计算机理论需要数学理论:实际上几乎所有的创始人都来自数学.


小智 7

给定具有纬度和经度的位置列表,按照从最近到最远的特定位置的顺序对列表进行排序.

所有处理钱的应用都需要数学.

我想不出我编写的一个应用程序,在某些时候不需要数学.

  • 什么样的有趣的应用程序将是"纯API调用?" (6认同)
  • 纯API调用应用程序怎么样? (2认同)

Ecl*_*pse 5

几个月前我写了一个解析器编译器,这充满了图论.这只是设计为比正则表达式稍微强大一些(允许多个匹配,并添加了一些其他功能),但即使是这样一个简单的编译器也需要循环检测,有限状态自动机和更多的数学运算.


Jef*_*ser 5

实现高级加密标准(AES)算法需要对有限域数学有一些基本的了解.有关详细信息,请参阅我的博客文章的第 4 步(包括代码示例).


Cha*_*ion 5

我在编写业务应用程序时使用了很多代数.

简单的例子

BMI = weight / (height * height);
compensation = 10 * hours * ((pratio * 2.3) + tratio);
Run Code Online (Sandbox Code Playgroud)

  • 那不是代数,这不过是算术.代数将是关于从一组方程计算一个或多个未知值. (4认同)

Joh*_*ohm 5

几年前,我有一个DSP项目,必须在给定时间内计算出大小为N的实数基2 FFT.供应商提供的实际基数-2 FFT不会在分配的时间内运行,但它们的大小为N/2的复数FFT会.很容易将实际数据馈入复杂的FFT.之后得出答案并不容易:它被称为后编织,或后编织或未编织.从FFT和复数理论中推导出未编织方程并不好玩.从那里到紧密优化的DSP代码同样不好玩.

当然,我测量的信号与FFT样本大小不匹配,这会导致伪影.标准修复是应用汉宁窗口.这会导致其他瑕疵.作为理解(和测试)代码的一部分,我必须理解Hanning窗口引起的工件,因此我可以解释结果并确定代码是否正常工作.


Dan*_*den 5

我在各种项目中使用了大量的数学,包括:

  • 用于处理大型系统中的依赖关系的图论(例如,Makefile是一种有向图)
  • 分析性能瓶颈的统计和线性回归
  • 协调地理空间应用程序中的转换
  • 在科学计算中,项目要求通常以代数形式陈述,特别是对于计算密集型代码

而这只是我的头脑.

当然,涉及"纯粹"计算机科学(算法,计算复杂性,lambda演算)的任何事情往往越来越像数学,你越深入.


Pet*_*sen 5

在回答这个图像比较算法问题时,我吸取了大量的数学知识,其中一些来自其他答案和网络搜索(我必须运用自己的知识来过滤信息),还有一些来自我自己的工程培训和冗长的编程背景.


pet*_*hen 5

一般思维形成

解决问题 - 一种独立于区域的基本数学方法是将未知问题转化为已知问题.即使你没有同样的问题,你也需要相同的技能.在数学中,就像编程一样,几乎所有东西都有不同的表现形式.了解表面上完全不同的算法,问题或解决方案之间的等效性有助于避免困难部分.

(类似的事情发生在物理学中:为了解决运动学问题,坐标系的选择通常是一到十页满的公式之间的差异,即使问题和解决方案是相同的.)

语言/逻辑推理的精确性 - 数学具有非常简洁而精确的语言.学会处理这个问题会让你为计算机做你所说的而不是你的意思做好准备.此外,需要相同的精度来分析规范是否足够,如果它涵盖所有可能的情况,则检查一段代码等.

美丽与优雅 - 这可能是最难掌握的论点.我发现代码中的"美"概念与数学中的"美"非常接近.一个漂亮的证据是其想法立即令人信服的证据,而证明本身只是执行一系列执行下一个明显的步骤.

优雅的实现也是如此.

(我遇到过的大多数数学家都会把"Aha!" - 放在最后而不是开始时的效果.就像大多数精英极客一样).

当然,你可以在没有一门数学课的情况下学习这些技能.但数学已经完善了几个世纪.

应用技能

示例: - 无需运行calc.exe即可快速估算内存需求 - 一些基本的统计信息可以在黑暗中分辨出有效的性能测量结果 - 推导出一系列值的公式,而不是对其进行硬编码 - 获取感觉c*O(N log N)意味着什么. - 递归与电感证明相同

(如果我积极地观察自己一天的物品,那个名单可能会继续下去.这部分肯定比我想象的更难.欢迎进一步的建议;))

我在哪里使用它

我工作的公司进行了大量的数据采集,而我们声名鹊起(与我们的竞争对手合作)是从数据中提取有用的东西的大脑.虽然我对此并不关心,但我得到了足够的数学能力.在此之前,我已经为统计应用实现并验证了随机数生成器,实现了微分方程求解器,为选定的物理定律编写了模拟.可能更多.