自从2006年从一所规模很小的学校毕业后(我是一个外国人,当时不知道还有更好的学校),我开始意识到,从数学和软件的角度来看,我错过了很多基本概念,而这些基本概念大多是其他更高概念的基础。
也就是说,我试着在Introduction to Algorithms上听/看麻省理工学院的开放课件,但很快就意识到我错过了几个数学概念来更好地理解这门课程。
那么,一个优秀的软件工程师应该知道哪些核心数学概念呢?你会推荐给我哪些可能的书/网站?
发布于 2008-09-09 16:57:01
布尔代数是理解控制结构和重构的基础。例如,我见过许多错误是由不知道(或不能使用)德摩根定律的程序员引起的。作为另一个例子,有多少程序员立即认识到
if (condition-1) {
if (condition-2) {
action-1
} else {
action-2
} else {
action-2
}可以重写为
if (condition-1 and condition-2) {
action-1
} else {
action-2
}离散数学和组合学对理解各种算法和数据结构的性能非常有帮助。
正如Baltimark所提到的,数学归纳在关于循环和递归的推理中非常有用。
集合论是关系数据库和SQL的基础。
打个比方,我要指出,木匠通常会使用各种经验法则来建造屋顶和楼梯等东西。然而,几何学知识允许你解决你没有“罐头”经验法则的问题。这就像是通过语音来学习阅读,而不是通过视觉识别基本的词汇。90+%的时间没有太大的区别。但是,当您遇到不熟悉的情况时,拥有自己解决方案的工具是非常好的。
最后,数学所要求的严格性/精确度是非常有用的编程准备,而不考虑具体的技术。同样,我在职业生涯中看到的许多编程错误(甚至是规范错误)的根本原因都是草率的思维。
https://stackoverflow.com/questions/52176
复制相似问题