1. 别急着删高数笔记:编程学得越深,你越会回头找它
1.1 我在大二那年遇到的第一个“数学拦路虎”
说出来有点丢人,我大一学C语言的时候,自认为代码写得还不错,指针、结构体、链表都能捣鼓。直到大二上数据结构,老师让我们实现一个二分查找,我三下五除二写完了,还给宿舍哥们显摆。结果他问了一句:“如果数组不是单调的,二分还能用吗?”我当时愣住了。我知道二分的前提是有序,但“有序”到底意味着什么,为什么必须是单调的,我说不清楚。
后来我做数值分析的作业,要用二分法求方程根。老师给的条件是:函数f(x)在区间[a,b]上连续,且f(a)*f(b)<0。我当时脑子里“嗡”了一下——这不就是高数书上介值定理的代码版吗?大一学介值定理时,我只觉得它在考试里出现,根本没想过两个月后我会在代码里和它重逢。
那一刻我突然意识到,高数不是一门孤立的课,它更像是给程序员的思维预埋了很多“接口”。这些接口在你写业务代码的时候可能用不上,但一旦接触到算法、图形、仿真、数据分析,它们就会一个接一个往外冒。
1.2 “学高数有什么用”的真实答案只有一个
网上关于“高数无用论”的段子特别多。比如“我买菜只需要加减乘除”“当了程序员以后发现高数完全用不上”。这些话我没法全盘反对,因为确实有很多岗位,日常在写增删改查、在调接口、在处理页面逻辑,确实不需要解微分方程。但你如果把计科专业的学习周期拉长到四年、八年去看,就会发现一个真相:
高数不是用来“直接用”的,它是用来理解“为什么程序可以这样工作”的底层思维的。
什么是底层思维?举个例子。你知道梯度下降是机器学习里最常用的优化方法,但你知不知道它的核心就是高数里的偏导数和方向导数?你调学习率的时候,有没有想过为什么太大了会震荡、太小了会慢?如果你只把它当成一个黑盒,那你永远只能调参,而无法判断模型到底在干什么。
再举个例子。图形学里做一个三维物体旋转,要用到矩阵乘法;矩阵乘法的结合律是线性代数教的,而线性代数又是高数体系里最亲密的兄弟。很多同学说“我学矩阵是为了考研,不是为了写代码”,但等你写AR滤镜、做游戏引擎、跑NeRF的时候,你会发现你永远在跟矩阵打交道,只是IDE里不显示“矩阵”这两个字而已。
高数真正的作用,是训练你从“单个的点”跳到“连续的面”去看问题。程序里所有东西都是离散的,但现实世界是连续的。没有高数训练,你会习惯把所有问题都理解为“一个点一个点地处理”,而很难建立“某一小段的变化率”“全局收敛到某处”这类系统观念。这才是高数对于计科学生最关键的价值。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 编程和高数之间的三座隐形桥梁
2.1 循环就是求和,递归就是数学归纳法
我帮不少学弟学妹改过代码,发现一个规律:很多人刚学循环的时候,只会把它理解为“让某段代码重复执行”。这个理解没错,但太浅了。如果你把循环和数学里的求和符号放在一起看,很多困惑会瞬间消失。
比如你想算1到100的和,代码可以写:
python复制total = 0
for i in range(1, 101):
total += i
这个循环的本质,就是高数里那个带Σ的级数求和。Σ下面的i=1、上面的100,就是循环变量的起点和终点;Σ后面的表达式f(i),就是循环体里每次累加的那一项。你把total += i换成total += i*i,就变成了平方和公式。你换成一个无法写成闭式表达式的函数,就变成了数值积分里的基本操
