代码之家  ›  专栏  ›  技术社区  ›  Azat

数学与程序设计

  •  6
  • Azat  · 技术社区  · 14 年前

    我读了很多关于编程中数学的博客和论坛帖子,并为自己得出了一个结论:编程需要基础数学。我不是一个好的数学家。但是,有没有可能在不深入数学科学的情况下改进我的逻辑和算法思维呢?有什么练习或书籍可以帮助我提高这些技能,使我可以成为一个好的建筑师?

    11 回复  |  直到 11 年前
        1
  •  2
  •   mctylr    14 年前

    但是,有没有可能在不深入数学科学的情况下改进我的逻辑和算法思维呢?

    数学的基础。

    我怀疑真正的问题在于如何教授数学,以及你(和你以前的老师)认为数学是什么。我建议你 A Mathematician's Lament ,以便更好地解释什么是数学,而我们通常教的是数学。

    有什么练习或书籍可以帮助我提高这些技能,使我可以成为一个好的建筑师?

    我假设你是一个软件架构师,因为传统建筑,比如工程学,有着坚实的基础。 应用数学

    我通常会说,如果你能学到相当于大学一年级对计算机科学学位(即微积分、离散数学或线性代数的一年级)的数学要求,那将大大有助于你成为一名更好的计算机科学家、更好的程序员或架构师。没有它不是不可能的,但它可以让你在工作中做得更好(更快地正确、有效地评估或解决问题)。

    祝你好运。

        2
  •  7
  •   Dean J    14 年前

    完成 Project Euler .

    Algorithms 有点数论,离散数学,组合学,概率论,图论,和其他真正有用的东西。这是教学 什么是适用于算法,并跳过其他一切。

        3
  •  6
  •   Radomir Dopieralski    14 年前

    http://en.wikipedia.org/wiki/Concrete_Mathematics <——唐纳德·克努斯为你特别写的!

        4
  •  3
  •   Ian Henry    14 年前

    你可能对 Project Euler 锻炼身体。

    这里有一篇有趣的文章,如果你还没看过的话,它讨论了通过维基百科学习数学:

    http://steve-yegge.blogspot.com/2006/03/math-for-programmers.html

        5
  •  3
  •   Grembo    14 年前

    上面的好建议-把其中的一些放在上下文中,有一个很好的例子 project

    记住——数学教育的大部分是锻炼你抽象思考和解决问题的能力。这两种技能都需要练习,有时,尽管你可能看不到问题与所谓的“现实生活”之间的直接联系,但通过解决问题,总有一些东西需要学习和练习。

        6
  •  2
  •   duffymo    14 年前

    我得说你需要的数学取决于你要解决的问题。

    你要解决的问题取决于你的数学能力。

    任何说你只需要四年级数学的人也在告诉你,你不能合理地期望有机会解决更具挑战性的问题。

    我的第一个职业是在计算机上应用离散的数值模拟技术。

    如果你想做那种工作,最好多学点知识 numerical methods linear algebra

    谷歌的页面排名是一个250亿美元的特征值问题 this paper 已发布。谷歌目前的市值为1440亿美元。

    计算机图形学是非常数学密集型的。如果你喜欢图形,最好学好数学。

    统计数据是非常重要的,尤其是当你在网上有大量的数据可用时。学习 R basic statistics 冷。

    读一些类似 "Programming Collective Intelligence" 想知道什么样的新问题需要复杂的数学。

    如果你想解决这类问题,最好忙起来。

        7
  •  1
  •   user429921    14 年前

    在过去的四十年里,计算机科学本科课程中对什么是“离散数学”的重视已经发生了转变。过去,这类课程将涵盖抽象代数等材料,并涉及“排序”和“种类”等概念,这对程序的代数规范非常有用。如果你认为你会喜欢这种数学,那就买一本关于离散数学的旧书,比如这本: Discrete Mathematics in Computer Science (1977) $5 装船!

        8
  •  1
  •   js1568    14 年前

    你不需要知道微积分就能编程。计算机编程是由非常简单的数学运算组成的,只有加法、减法、乘法、小数舍入,甚至长除法(四年级的数学很方便)。

    i++ ++i )增加变量 i 在语句中使用变量之后或之前。

    逻辑运算符在编程中非常重要。小于和大于经常用于测试某个值并保持在适当的范围内。你要意识到这一点 i < 5 与相同 5 > i true false . 当这样使用时: if (i < 5) ... 什么时候 i = 4 if (true) ...

    同样地,AND、OR和NOT运算符对于布尔测试也很重要。你可能想知道 if (i < 5 && i >= 0) ... 也就是说,如果i小于5,i大于等于0。不是( ! || )以类似的方式行动。

    一些先进的技术涉及模运算( %

    有关计算机编程基础(包括控制结构和运算符)的更多一般信息: http://computerprogramming.suite101.com/

        9
  •  0
  •   Dustin Getz sunsations    14 年前

    有很多类型的编程。如果你在设计无线压缩算法,你可能会想要工程硕士学位。如果你正在做一个在线颜色选择器,你会很好与高中三角。

        10
  •  0
  •   dgorissen    13 年前

    Mathematics for Computer Science ,普林斯顿大学的一本免费课程书对编程和计算机科学相关的数学进行了全面的介绍。

        11
  •  0
  •   ksraj98    11 年前

    一个好的数学基础确实对编程有很大帮助!为了增强你的算法思维,你可以尝试解决组合问题。有时一些数学结果有助于降低代码的复杂性,所以如果你想解决基本问题,那么至少让自己适应高中数学。我建议你读一下唐纳德·E·克努斯的《计算机编程的艺术》和罗纳德·L·格雷厄姆、唐纳德·E·克努斯和奥伦·帕塔什尼克的《具体数学》。我认为具体的数学会给你一个良好的数学基础的计算机科学,你应该尝试一下。