需要数学基础的编程有哪些?

27

这不是一个“编程需要数学吗?”的问题。

我一直认为编程需要大量复杂的数学(我在大学只学了中级代数,因为我数学不好)。

然而,我刚刚得到了我的第一份开发人员工作,并发现除了基本算术外,并没有太多高深的数学内容(至少目前为止)。我还在 Stack Overflow 上看到有一个问题说,数学更多地用于确保想要成为开发人员的人能够理解复杂的问题并解决它们。

所以我猜有没有一种需要超过代数水平的数学的其他类型的编程? 我猜想像几何学和其他与视频游戏编程有关的学科,其中你需要在三维空间中创建形状并操纵时间和空间。 还有什么需要高水平的数学知识?

编辑:哇,很多答案。其中一个让我想到了另一个类似的问题......比如在像 Photoshop 这样的程序中,制作旋转、裁剪、编辑和着色图像涉及了哪些数学(或总体工作)?


学习高阶数学(即超过代数)可以教会学生如何逻辑思考,并在某种程度上教会他们如何有条理地解决问题。货运编码人员通常是数学能力较低的人。 "货运编码人员"是指编程实践类似于“货物神话”成员的做法(基本上,改变垃圾直到它不再爆炸)。 "Asploding" 是一个幽默的流行文化参考。 - DwB
11
不要用“低”数学技能的标准来衡量所有人的能力。编写优秀的软件需要具备逻辑思维和组织能力,但创造力和精湛的技巧同样重要。我认识一些没有数学背景但编写出优秀软件的人,也认识一些出色的数学家,但他们编写的软件让我感到恶心。就像其他任何事情一样,拥有这四种能力的完美结合是一种天赋,就像能够演奏音乐或绘画一样:你要么拥有它,要么没有。 - Blrfl
一个人可以在许多编程专业领域成为出色的程序员,但在高级数学方面可能很差;同样,一个杰出的数学家也可能是个糟糕的程序员。我不同意dwb的观点,认为仅仅学习数学并不能教会人们如何逻辑思考。数学课程中的糟糕结果难道不常常归因于糟糕的老师们布置了大量与现实无关的繁琐作业,导致学生完全没有动力去进一步探索吗? - CPrimer
17个回答

2
数字信号处理、人工智能/仿真/代理是其他相关技术。
通过代码进行动画制作,特别是当你尝试模拟真实物理时,也需要数学。

2

我从事的软件与CAD软件相似,需要对几何学有较好的掌握,并且至少了解计算几何的概念。


2

我从事计算化学工作。需要大量的线性代数和对技术的一般理解,如泰勒展开、积分、梯度、海森矩阵、傅里叶变换(一般来说,是在基组上的展开)以及微分方程。这不是非常复杂的数学,但你必须要掌握。


1

统计学在进行质量保证和质量分析的企业中被广泛使用。我的第一份开发工作是在美国农业部的合同上进行的;这些都是标准的“业务线”应用程序,只不过他们的业务线涉及了大量的统计分析!


0
图像压缩和图像识别都使用傅里叶级数(包括经典正弦波级数和其他正交级数,如小波变换),这些理论通常不会在数学或工程的研究生课程中涉及。
非线性优化、约束优化和使用隐藏模型进行系统估计同样需要大量的高级数学分析。

0

计算机科学是数学。编程是程序员的工作。它们有关联,但两个领域并不完全重叠,所以我理解你提出这个问题的意图。

显然,科学计算和数值分析需要扎实的线性代数、几何、高等微积分基础,也许还需要更多的知识。而算法、数据结构及其复杂性和特性的整个研究都利用了离散数学、图论,以及微积分和概率。JPEG标准背后隐藏的是大量的信息论、编码理论、傅里叶分析……这仅仅是一些例子。

虽然计算机科学家甚至可以在一生中从未写下一行代码,就像世界上最好的程序员只懂得一些数学知识一样,但事实上,计算机执行算法,而算法需要数学。我建议你阅读唐纳德·克努斯(Donald Knuth)的《计算机程序设计艺术》(The Art of Computer Programming),以了解编程背后的知识。


0

我拥有气象学硕士学位,我可以告诉你,在这个领域和其他应用物理学领域,你将要编写的代码需要大量的数学知识。你所编写的很多代码都是像方程的时间差分之类的东西。

然而,对于编写游戏代码来说,你并不总是需要在代码中进行大量的数学计算。游戏需要大量的逻辑。数学在游戏编码中发挥作用的部分是当你需要编写物理引擎等内容时。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接