开发人员应该知道离散数学

Nix*_*Dev 18 algorithm math

对于开发人员来说,了解离散数学是否重要?关于算法和分析的大多数书籍至少都有一些数学参考.我原则上可以很容易地理解这些算法并且可以毫无问题地实现它们,但是当涉及到数学部分时,我会陷入困境.一般认为开发人员对数学有深入的了解,可以理解算法和方法吗?

Tom*_*cek 20

这取决于你所谈论的开发人员的类型以及你所谈论的数学类型.我很确定大多数"普通"开发人员不需要太了解数学.但是,你想成为"普通"的开发者吗?

  • 如果您正在开发仅显示并允许编辑数据库中的数据的Web应用程序,那么您可能永远不需要任何数学运算.
  • 另一方面,如果您正在开发一个显示目标路径的GPS系统(或其他执行更复杂计算的应用程序),那么离散数学将会很有用.
  • 它不一定是离散的数学 - 例如,在金融行业,人们更需要概率和统计.

也就是说,了解数学肯定会让你成为一个更好的开发人员,因为它以一种不仅有助于解决特定(数学)问题而且有助于你如何以更正式的方式思考问题的方式训练你的思想(我相信,对于编写正确的代码非常重要.


小智 9

是.

我发现离散数学是计算机科学的核心.理解集合论,布尔代数,映射等都对开发人员有益,并且都是离散数学的一部分.

当然,这些概念并不总是适用于最具学术意义的.您几乎不会打开您的离散数学教科书并将某些内容复制到您的代码中以解决问题.但是,理解这些概念将有助于开发人员编写更好的代码,更好的算法,并更有效地使用设计模式.

  • 我相信它是.也许不是每个开发人员都需要CS背景,但每个项目都需要.我的工作需要满足客户的要求,这些要求可能非常复杂,并为他们找到优雅的解决方案 没有CS学位,大多数人都会在这项任务中失败.当我完成后,我将设计转交给一个基本上产生代码的外包组.他们不懂CS,离散数学等等 - 但是我知道. (3认同)
  • 不得不说我同意John Saunders,这实际上取决于你正在做什么,如果你用高级动态语言进行开发,可能不需要复杂的CS知识,语言水平越高,越简单它变成了以前更复杂的事情,确定它们在机器使用方面效率较低,但这是提高程序员工作效率的权衡,它取决于什么类型的项目能够明确地说明是否 - CS的深度知识确实是必要的. (3认同)

Vas*_*ass 3

取决于开发人员可能在做什么。如果你正在做网络,可能不会,但在安全方面可能会有点。就像暴力攻击在特定哈希值下解码特定位数的密钥所需的时间一样。如果您正在为高端游戏制作图形,您可能需要了解大量数学知识以及这些方法的优缺点。作为数据库管理员或网络,您不应该这样做。

  • 数据库管理员可以从了解一些排队理论中受益。 (2认同)
  • @Peter G:网络基本上完全是排队论。电信网络的主要编程语言以排队论的发明者的名字命名并非偶然。 (2认同)