程序员在哪里可以找到数学主题和资源?

7

有一些围绕这个问题的问题,但我觉得这个问题不同。

我决定想要提高我的数学技能广度和深度,特别是在程序员感兴趣或实用的领域。

  1. 我应该学习哪些主题?
  2. 你推荐哪些资源(博客/书籍/在线讲座......)?

我正在寻找易于消化的资源,因为我将在空闲时间进行学习,我不想花费几天时间来阅读晦涩难懂的文本,但我想深入了解。我已经阅读了Yegge article上的文章(和大部分评论),这很有用,但我认为这里的投票系统将帮助我集中精力学习最有用/最好的资源和主题。


编辑:

我想创建一个学习计划,接下来几年将会一直跟随它。我不是要解决特定的问题,只是想学习一些新技能,这些技能可能对我的职业发展有帮助并且很有趣。


4
应设为社区 wiki。 - anon
12个回答

5

2
如果您对游戏开发、3D图形或与此类似的任何事情感兴趣,那么请学习多元微积分和基本物理学。这将帮助您更好地理解基本概念。另外,线性代数将在您进行所有矩阵/向量相关工作时大有裨益。
如果您对这些主题不感兴趣,我仍然建议您学习微积分和物理学。为什么呢?解决微积分和物理问题会让您具备良好的问题解决能力并锻炼大脑。程序员需要成为出色的问题解决者……这是我们的工作。您从这些课程中学到的概念将伴随您一生。
麻省理工学院和斯坦福大学都有非常好的在线课程,涵盖了此类主题。当然,在进行多元微积分之前,您不能只学习基本微积分,但麻省理工学院和斯坦福大学也提供了基本微积分课程的资源。物理学的基础会稍微容易一些。同样,您可以查看麻省理工学院和斯坦福大学的物理学课程。
MIT开放式课程网址:OpenCourseWare

3
+1 很好的建议。希望你不介意,我向MIT公开课网站添加了一些链接和一些与您建议相匹配的可能课程。 - Simon P Stevens
哈哈,谢谢Simon,我本来应该加上链接的,但是我被分心了:D - Polaris878
太棒了,感谢提供这些链接。我学过电子工程和计算机科学,所以我还有一些(生疏的)微积分知识。这正是我正在寻找的! - David Hayes
没关系,我只是对你的回答感兴趣,想去看看。我目前已经把所有的多元微积分讲座视频加入了下载队列=:) - Simon P Stevens
正如其他人所说,不要忘记你的离散数学...虽然这些可能没有你的微积分和物理那么生疏,因为你可能使用它们更多哈哈。 - Polaris878

2

如果您想了解离散数学,我强烈建议您阅读这本书。

我感到非常幸运,能够从大学获得这本书。


2
前段时间Steve Yegge写了一篇关于程序员的数学的专题文章。他的论点是:作为一个程序员,你应该学习数学,但你应该以与学校/大学不同的方式进行学习。
他的总结如下:
数学在你学会编程之后就变得容易了很多。实际上,如果你是一个还算不错的程序员,你会发现它几乎是轻而易举的。但是,在学校里他们教数学的方式完全错误了。如果你自己以正确的方式学习数学,你会更快地学习,记住更长时间,并且对你作为程序员来说更有价值。即使只是知道一点点正确的数学知识也可以让你写出一些非常有趣的程序,否则这些程序可能会太难了。换句话说,数学是你在有空闲时间时可以逐渐学习的东西。没有人能掌握所有的数学,即使是最好的数学家也不行。这个领域不断扩展,因为人们发明新的形式来解决自己的问题。与编程中的任何给定的数学问题一样,有多种方法可以解决。你可以选择你最喜欢的那种方法。数学是......嗯,千万别告诉任何人我说过这话;我再也不会被邀请参加聚会了。但数学,嗯......我最好小声说,所以听好了:(它实际上很有趣。)

悲伤的注释:由于过多的激烈反馈,史蒂夫放弃了他的博客。


2
任何程序员都应该在本科阶段就对以下数学课程有扎实的理解:
  1. 微积分(包括多元微积分)
  2. 离散数学(绝对必要)
  3. 线性代数(理解矩阵必需)
  4. 组合数学(离散数学的进一步发展)
  5. 抽象代数入门(这将巩固你对模数系统的理解,特别是二进制、八进制和十六进制等)。它还深入了解了集合论,这在实际编程和计算机科学文献中无处不在。

这是基础。如果你考虑图形或游戏编程,那么你还需要学习物理、图形艺术以及可能的流体力学等一系列额外课程。此外,对于任何在曲面上进行真实世界建模的人来说,微分几何是必不可少的。


2

这可能与您的问题有些偏离,但我建议阅读《普林斯顿数学指南》

它概述了所有数学知识,因此不仅仅是“对程序员有用”的数学,但其风格易于理解,并且涵盖了重要的部分。


0

一般来说,数学在计算机编程中的应用是相当领域特定的 - 也就是说,你需要知道编写特定程序所需的任何数学知识。我能想到的唯一适用于所有种类编程的数学主题是简单的算术和布尔逻辑,但我认为如果你不知道这些,你就不会成为一个好的程序员 ;-)

基本上,我建议根据你正在开发的项目需要学习数学知识。如果你想给自己一个很好的借口去学习一些新的数学知识,可以开始一个做一些数学运算的爱好项目。


0
关于主题,可以看看这里的一些答案。对于推荐资源,我很难给出建议,因为我讲德语。不过我建议从线性代数和几何学开始学习,这些内容在计算机图形学中都有涉及。例如,可以看看Springer出版社的本科数学系列教材。

0

数论在编程中没有太多直接的应用(尽管有一些巧妙的技巧可以用于优化),但有几个基本概念使得密码学研究变得更加容易。

我的数论课使用了Silverman的《友善的数论入门》,这是我见过的最好的数学教材之一。它非常易读(标题完全准确地描述了它的友好性),但涵盖了广泛的主题。Silverman也是我密码学教材《数学密码学导论》的作者。它更加技术化,涵盖了大多数密码学领域,并提供了许多参考资料以获取更多细节。


0
考虑一下Knuth的《计算机程序设计艺术》系列。它可能会很深奥,但它会使你掌握编程所需的数学基础。我建议尽早阅读第四卷的现有章节。这些书并不适合所有人,但如果你觉得它们有趣,你将能学到很多东西。
它们不会教你微积分或几何学,这在编程的许多方面都很重要,但往往更加专业化。

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