Skip to content

程序员数学 01:从编程问题选择学习路线 ​

数学在编程里经常以很小的形式出现:一个条件是否写反,一段循环为何变慢,两个报表的百分比为何不能直接平均,一个浮点比较为何失败。先把这些问题讲清楚,再扩展到完整理论,会更容易知道自己为什么学。

本系列默认读者会写简单程序,理解四则运算、变量和函数。示例使用短小的 JavaScript,目的是让计算可复核,结论不局限于 JavaScript。涉及具体语言行为时会单独说明。全部数字、场景与练习为教学设计,不是某个线上系统的测量结果。

两层学习顺序 ​

层次文章要解决的问题
通用基础02 逻辑、集合与不变量条件、权限和循环正确性
通用基础03 计数、增长与复杂度规模变大后成本怎样增长
通用基础04 整数、取模与位运算循环下标、标记与数值边界
通用基础05 图与依赖关系执行顺序、可达性与环
通用基础06 概率、重试与条件判断失败概率、期望成本与误报
通用基础07 统计、分位数与指标汇总怎样解释样本与报表
按需拓展08 向量、矩阵与坐标变换几何、特征与线性模型
按需拓展09 导数、积分与优化变化率、累计量与最优参数
通用基础10 浮点数、误差与单位把数学模型可靠地落到计算机
综合练习11 文件处理任务的数学复盘同时使用多种模型解释一个任务

业务开发可先学 02~07 和 10;图形、游戏和数据处理再重点补 08;优化与机器学习方向继续补 09 及更系统的课程。这里的“通用”表示经常能遇到,不表示每个岗位每天都使用。

缺基础时怎么补 ​

分数和比例不熟,先回到小学六年级;函数和坐标不熟,查看数学总索引中的初高中部分;矩阵、导数和概率符号不熟,可结合大学阶段目录。本站原有年级路线适合系统补基础,本系列适合建立与程序行为的联系。

学习每节时完成四步:用自己的话解释定义;手算一个小例子;运行或跟踪一段小程序;故意破坏一个前提,观察结论为何不再成立。记错题时优先记“哪个假设不成立”,而非只抄公式。

入门自测 ​

  1. 100 次操作中成功 90 次,另 10 次中成功 1 次,总成功率是 50% 吗?
  2. 0.1 + 0.2 在常见二进制浮点中一定等于精确的十进制 0.3 吗?
  3. 如果任务 A 要等 B,B 又要等 A,只要多加工作线程就能启动吗?
查看答案与讲解
  1. 不是,应按次数汇总:(90+1)/(100+10)=91/110≈82.73%。直接平均两个比例忽略了分母。
  2. 不一定。表示误差会影响计算与比较,详见数值篇。
  3. 不能。依赖有环,需要调整依赖或定义额外的启动机制,增加线程不会自动消除环。

资料如何使用 ​

MIT Mathematics for Computer Science 将逻辑与证明、离散结构和概率联系到计算机科学,是本系列选题的重要参考。线性代数和微积分分别可继续学习 MIT 18.06 与 MIT 18.01SC。

本站提供面向工程问题的入门解释与原创练习,不宣称覆盖完整本科数学或某门课程的全部内容。理解一个例子后,应换输入、检查边界,再使用原课程的系统练习继续深入。

继续阅读