# 编程中的数学

  • 很多家长认为学习编程的人需要擅长数学, 认为数学成绩好的孩子才能学好编程. 其实, 这并不完全正确.
  • 首先必须看到, 数学成绩好的孩子, 他的抽象思维和逻辑思维的确更好, 所以在学习编程时的确更有优势.
  • 但是, 大部分编程任务需要使用的数学知识并不多, 也就是说, 数学成绩好坏并不直接影响编程的学习效果.
  • 基本上, 学习编程只要掌握这些数学知识即可:
    • 加减乘除: 实际上, 我们在编程时只要把算式写出来, 让计算机帮我们做计算即可. 我们只是需要知道什么时候使用它们
    • 负数: 了解负数的含义, 了解负数乘以正数等于负数、负数乘以负数等于正数
    • 百分数: 知道一个数字乘以一个百分数代表什么. 比如, 想要知道 317 的 31% 是多少, 就列出算式 317 * 0.31
    • 模运算: 模运算是建立规律性变化和循环的关键. 所谓“模运算”, 就是求除法的余数. 比如 23 除以 7 等于 3, 余数 2, 就表示 23 对 7 取模的结果是 2
    • 判断奇偶数的模运算: 如果我们想知道一个数是奇数还是偶数, 让它对 2 取模, 如果结果是 0, 就代表它是偶数, 如果结果是 1, 就代表它是奇数. 比如, 23 对 2 取模的结果是 1, 所以 23 是奇数, 24 对 2 取模的结果是 0, 所以 24 是偶数
    • 坐标系: 有些坐标系的原点 ( 0, 0 ) 在屏幕左上角, Y 的正轴是向下的. 比如 Pygame 的坐标系就是如此. 有些坐标系的原点是在屏幕中央, 比如 Scratch 编程语言 和 GoC 编程语言就是如此
    • 基本的几何知识: 了解直线、角度、三角形、圆形、矩形、椭圆的基本知识. 比如圆心和半径决定一个圆, 比如正多边形的外角等于360/n
    • 勾股定律: 知道 a^2 + b^2 = c^2, 懂得使用勾股定理来计算坐标系中两点之间的距离. 比如, (x1, y1) 和 (x2, y2) 这两点之间的距离等于 ((x1 – x2)^2 + (y1 – y2)^2)^0.5
    • 二进制、十进制、十六进制: 十进制就是逢十进位, 同样的二进制就是逢二进位, 十六进制就是逢十六进位. 我们最习惯使用的是十进制, 因为我们有十根手指, 所以十进制对我们来说更符合直觉. 尽管二进制和十六进制非常不符合人类直觉, 但是你完全不用担心, 因为我们并不需要掌握换算这些进制的过程, 因为几乎所有编程语言都已经内置了转换进制的函数, 需要的时候直接调用即可
  • 需要大量数学知识的编程领域:
    • 大数据和人工智能: 它们的底层是统计学, 想要研究人工智能底层逻辑的工程师就必须精通统计学. 但是这些数学知识, 孩子们 100% 不需要了解, 也无法了解. 甚至在实际工作中, 80% 的人工智能工程师都不需要了解, 只需要会应用即可
    • 3D模型: 3D需要涉及三角函数和线性代数. 绝大部分程序员都不需要了解这些知识
    • 游戏物理引擎: 想要让游戏符合现实世界的规律, 就需要学习一些物理公式 ( 尤其是力学, 比如碰撞、弹力、重力、摩擦力等物理知识 ). 然而, 游戏引擎都已经帮我们实现了, 我们只要会调用即可
  • 所以, 即使是上面这些领域, 我们也不需要去钻研数学知识, 我们只需要学习如何运用以及什么时候调用相关的函数即可

# 加减乘除

# 加法

# 减法

# 乘法

# 除法

# 正多边形的外角和

# 勾股定理

# 十进制 二进制 十六进制