程序员数学 01:从编程问题选择学习路线
数学在编程里经常以很小的形式出现:一个条件是否写反,一段循环为何变慢,两个报表的百分比为何不能直接平均,一个浮点比较为何失败。先把这些问题讲清楚,再扩展到完整理论,会更容易知道自己为什么学。
本系列默认读者会写简单程序,理解四则运算、变量和函数。示例使用短小的 JavaScript,目的是让计算可复核,结论不局限于 JavaScript。涉及具体语言行为时会单独说明。全部数字、场景与练习为教学设计,不是某个线上系统的测量结果。
两层学习顺序
| 层次 | 文章 | 要解决的问题 |
|---|---|---|
| 通用基础 | 02 逻辑、集合与不变量 | 条件、权限和循环正确性 |
| 通用基础 | 03 计数、增长与复杂度 | 规模变大后成本怎样增长 |
| 通用基础 | 04 整数、取模与位运算 | 循环下标、标记与数值边界 |
| 通用基础 | 05 图与依赖关系 | 执行顺序、可达性与环 |
| 通用基础 | 06 概率、重试与条件判断 | 失败概率、期望成本与误报 |
| 通用基础 | 07 统计、分位数与指标汇总 | 怎样解释样本与报表 |
| 按需拓展 | 08 向量、矩阵与坐标变换 | 几何、特征与线性模型 |
| 按需拓展 | 09 导数、积分与优化 | 变化率、累计量与最优参数 |
| 通用基础 | 10 浮点数、误差与单位 | 把数学模型可靠地落到计算机 |
| 综合练习 | 11 文件处理任务的数学复盘 | 同时使用多种模型解释一个任务 |
业务开发可先学 02~07 和 10;图形、游戏和数据处理再重点补 08;优化与机器学习方向继续补 09 及更系统的课程。这里的“通用”表示经常能遇到,不表示每个岗位每天都使用。
缺基础时怎么补
分数和比例不熟,先回到小学六年级;函数和坐标不熟,查看数学总索引中的初高中部分;矩阵、导数和概率符号不熟,可结合大学阶段目录。本站原有年级路线适合系统补基础,本系列适合建立与程序行为的联系。
学习每节时完成四步:用自己的话解释定义;手算一个小例子;运行或跟踪一段小程序;故意破坏一个前提,观察结论为何不再成立。记错题时优先记“哪个假设不成立”,而非只抄公式。
入门自测
- 100 次操作中成功 90 次,另 10 次中成功 1 次,总成功率是 50% 吗?
0.1 + 0.2在常见二进制浮点中一定等于精确的十进制 0.3 吗?- 如果任务 A 要等 B,B 又要等 A,只要多加工作线程就能启动吗?
查看答案与讲解
- 不是,应按次数汇总:
。直接平均两个比例忽略了分母。 - 不一定。表示误差会影响计算与比较,详见数值篇。
- 不能。依赖有环,需要调整依赖或定义额外的启动机制,增加线程不会自动消除环。
资料如何使用
MIT Mathematics for Computer Science 将逻辑与证明、离散结构和概率联系到计算机科学,是本系列选题的重要参考。线性代数和微积分分别可继续学习 MIT 18.06 与 MIT 18.01SC。
本站提供面向工程问题的入门解释与原创练习,不宣称覆盖完整本科数学或某门课程的全部内容。理解一个例子后,应换输入、检查边界,再使用原课程的系统练习继续深入。
继续阅读
- 习题与解析
- 习题与解析
- 习题与解析