当前位置:  开发笔记 > 数据库 > 正文

优秀的开发人员应该知道的核心数学概念是什么?

如何解决《优秀的开发人员应该知道的核心数学概念是什么?》经验,为你挑选了10个好方法。

自从2006年从一所非常小的学校毕业以来,他的课程状况不佳和过时(我是一个外国人,当时并不知道任何更好的学校),我逐渐意识到我错过了很多基本概念.数学和软件视角,主要是其他更高概念的基础.

即我试着在麻省理工学院的"算法入门"中听取/观看开放课件,但很快意识到我缺少了几个数学概念来更好地理解课程.

那么优秀的软件工程师应该知道的核心数学概念是什么?您推荐我的书籍/网站有哪些?



1> Gulzar Nazim..:

程序员的数学.好读.


到目前为止,我在这个主题上读到的最好(最好)的文章,回答了你学习数学的所有困惑和困境.我希望能给予这个以上+非常感谢Gulzar,如果有的话,请分享更多这样的文章.

2> joel.neely..:

布尔代数是理解控制结构和重构的基础.例如,我看到很多程序员不知道(或不能使用)deMorgan定律导致的错误.作为另一个例子,有多少程序员立即认识到这一点

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%以上的时间差别不大.但是当你遇到一个不熟悉的情况时,用自己的工具来解决这个问题是非常好的.

最后,无论具体技术如何,数学所需的严谨性/精确性对于编程都是非常有用的准备.再一次,我在职业生涯中看到的编程(甚至规范)中的许多错误都是对其根本原因的粗心思考.



3> Ralph M. Ric..:

我会选择Landon所说的田地:

离散数学,线性代数,组合,概率和统计,图论

并添加数学逻辑.

这将使您掌握CS的大部分领域.如果你想进入特殊领域,你必须潜入某些领域,特别是:

Computer graphics -> Linear Algebra
Gaming -> Linear Algebra, Physics
Computer Linguistics -> Statistics, Graph Theory
AI -> Statistics, Stochastics, Logic, Graph Theory



4> Anders Sandv..:

按重要性排序:

计数(循环所需)

加法,减法,乘法,除法.

代数(只需要理解变量的使用).

布尔代数,布尔逻辑和二进制.

指数和对数(即理解O(n)表示法).

比这更先进的东西通常是特定于算法或特定于域的.根据您感兴趣的领域,以下内容也可能相关:

线性代数和三角学(三维可视化)

离散数学和集合论(数据库设计,算法设计,编译器设计).

统计(对于统计和/或科学/经济应用,也可能对算法设计有用).

物理学(用于模拟).

理解函数也很有用(不记得该区域的数学术语是什么),但如果你知道如何编程,你可能已经做过了.

我的观点是:一个十岁的孩子应该知道足够的数学能够理解编程.基本理解事物所需的数学并不多.这真的是关于逻辑的.



5> Baltimark..:

"归纳证明"是程序员知道的核心数学概念.


真?对于需要什么编程特定的任务?

6> Corin Blaiki..:

一般算法分析中的大O符号,与标准集合(排序,检索插入和删除)有关



7> Corey..:

对于离散数学,这里有来自Arsdigita大学的20个很棒的讲座.每个约一小时二十分钟.



8> Ben Collins..:

从我们CS人称之为"离散数学"的东西开始.微积分和线性代数也可以派上用场,因为它们可以帮助您进入许多应用领域.一旦你掌握了这三个,就去概率论了.这4个将使你获得95%(我做到了)应用领域的能力.



9> Bill the Liz..:

具体数学涵盖了大多数主要议题.关于离散数学的好书,如罗森的离散数学及其应用,将填补任何空白.



10> 小智..:

我认为这取决于你的重点.几年前,我购买了Donald Knuth的计算机程序设计艺术.看完书后,我意识到一切都是微积分证明.如果您有兴趣为它们开发自己的通用算法和证明,那么我建议您能够理解上述书籍,因为它是您在该世界中所处理的内容.另一方面,如果你只想要/需要使用各种排序/搜索/树/等...例程,那么最大的O符号,布尔数学和一般代数都可以.如果你正在处理3D,那么几何和trig也是如此.

我倾向于更多地使用侧面而不是制作样张,而且我想我多年来做过一些聪明的事情,我从来没有坐下来开发新的排序程序.我能给出的最好的建议就是了解你所在领域需要什么,但要让自己暴露在更高层次,以便你知道它存在以及需要学习多少,否则你将无法获得更多的成长.

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有