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

Algorithm 开发人员应该知道离散数学吗?,algorithm,math,Algorithm,Math,开发人员了解离散数学重要吗?大多数关于算法和分析的书都至少有一些数学方面的参考资料。我可以很容易地理解算法的原理,并可以实现它们没有任何问题,但当涉及到数学部分,我陷入困境。是否一般认为开发人员将拥有深入的数学知识来理解算法和方法?取决于开发人员可能正在做什么。如果你在做网络,可能不会,也许在安全方面会有一点。就像暴力攻击在某个哈希下解码某个比特数的密钥所需的时间一样。如果你正在为高端游戏制作图形,你可能需要了解相当多的数学知识以及这些方法的优缺点。作为数据库管理员或网络管理员,您不应该这样做

开发人员了解离散数学重要吗?大多数关于算法和分析的书都至少有一些数学方面的参考资料。我可以很容易地理解算法的原理,并可以实现它们没有任何问题,但当涉及到数学部分,我陷入困境。是否一般认为开发人员将拥有深入的数学知识来理解算法和方法?

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

如果你的工作是纯计算机科学,比如谷歌搜索,你发明了新的算法,那么是的,你需要能够很好地分析运行时间,以及任何科学,比如物理模拟。
如果你是一名“普通”开发人员,那么你需要了解运行时间、运行时间的含义及其对应用程序的影响。

这取决于你所谈论的开发人员类型和数学类型。我很确定大多数“普通”开发者不需要对数学有太多的了解。但是,你想成为“普通”的开发者吗

  • 如果您正在开发只显示并允许编辑数据库中数据的web应用程序,那么您可能永远不需要任何数学运算
  • 另一方面,如果你正在开发一个显示目标路径的GPS系统(或其他一些进行更复杂计算的应用程序),那么离散数学将非常有用
  • 但它不一定是离散数学——例如,在金融行业,人们更需要概率和统计
这就是说,了解数学肯定会让你成为一名更好的开发人员,因为它训练你的思维,不仅对解决特定(数学)问题有用,而且还教会你如何以更正式的方式思考问题(我认为,这对编写正确的代码很重要)。

我的经验是:

了解离散数学是你永远不会后悔的事情。在许多情况下,它会使你的工作更容易,即使是在平凡的任务中,因为你将对各种概念足够熟悉,这些概念至少会让你构建一个更智能的谷歌查询。对大多数程序员来说,深入的熟悉和死记硬背做这些事情的能力可能并没有帮助,但过眼云烟的熟悉肯定会有所帮助


也就是说,我所遇到的大多数行业程序员(甚至一些学术界的程序员!)对这方面几乎一无所知,因此不知道这一点不太可能使你在一些专业编程子学科之外处于明显的劣势。

通常不希望你对数学有深入的了解,除非应用程序需要它-例如,您正在编写金融软件,或在飞机上进行一些3D建模、负载平衡、编写一些定制的压缩算法等。我曾与一些优秀的开发人员一起工作,他们都在努力学习简单的数学。知道谨慎的数学似乎非常具体。了解各种算法是如何工作的可能会很有帮助,如果你能做到这一点,那么你就不能证明它们的最优性,这并不重要

老实说,我认为最重要的是了解您为之构建的业务,以及如何编写代码(可读性、模块化等)

是的

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


当然,这些概念在大多数学术意义上并不总是适用的。你几乎永远不会打开你的离散数学教科书,把一些东西复制到你的代码中去解决问题。然而,理解这些概念将有助于开发人员编写更好的代码、更好的算法,并更有效地使用设计模式。

一些离散数学知识可能会帮助您在花费大量时间尝试编写数学上不可能或NP复杂性的代码以解决问题之前停止。当你提出的软件问题或解决方案更像是一个简单的家庭作业,或者是你班上没有人完成过的学期项目时,你会有更好的“感觉”。

你有机会解决的问题类型取决于你所知道的

如果你只懂四年级的数学,你只会被要求解决涉及四年级或以下数学水平的问题

如果你渴望做更多的事情或者理解其他算法的基础,你就必须学习任何必要的数学

我想你会发现,解决你遇到的问题会提高你的数学水平,提高你对所解决问题的鉴赏力,并有更好的机会将你所学的数学扩展到新的领域


听到人们立即贬低一个他们觉得困难的领域,好像在为他们不愿意摆脱无知和斗争的痛苦辩护,我感到恶心。学习任何新技能都需要你突破这个障碍,不管是数学还是其他什么。我建议你坚持下去,并向自己证明,通过抵制放弃的冲动,你可以掌握一些困难的事情

您已经发现离散数学的结果在编程中很有用。我的经验是,理解某些东西为什么会起作用,而不是试图简单地死记硬背,这可以让你发现并纠正许多错误和误解。它还可以让你处理几乎是,但不是完全是,他们在教科书中的方式,并意识到当文本boo