我们简化复杂的概念以理解它们。当运行良好时,数学使事情变得更简单。(偶尔,药物比疾病更糟糕。)
让我们将泛泛的“数学教你思考”改为更具体的“数学帮助我们简化思想”。我们层层隐藏细节,以揭示本质真理。
这种思维方式是必要的吗?生存所需?通常不是。但它往往很有趣。
你能识别为面部的最简单画作是什么?仍然有趣的最简单笑话是什么?锻炼肌肉的最简单练习是什么?知道这些会改善你的艺术、幽默或健康吗?
抽象计数
这张图里有什么?

计算机说“数百万个像素”,而你说“三头狮子”。你在几秒钟内抛弃了无数细节,揭示了更深刻的洞见。
发生了什么?我们将场景抽象成更简单的东西。

- 从前景中移除背景
- 移除每只动物之间的差异
- 移除“动物性”(将狮子视为通用的“线条”)
- 移除用字面线条数对象的必要性
- 移除指定固定数字的必要性(“n今天恰好是3”)
我们倾向于将明确意识到的步骤称为“数学”。一旦变得自然,就只是“毫不费力的看见”。(如果能把更多概念移入“毫不费力”类别,岂不更好?)
抽象学习
让我们将“数学简化”应用于一个更大的概念:学习。
学习涉及什么?在最本质的层面上,我们需要什么?
Learning = Insight + Enthusiasm
洞察力(对我来说)来自类比、图解、示例、简明英语描述和技术定义。(了解更多关于 ADEPT 方法)
热情来自幽默、温暖、共情以及被当作人(而非数学机器人)对待。
一堂好课两者兼备。但等等:仅靠热情就足够了吗?嗯。也许这样写更好:
Learning = Insight * Enthusiasm
- 如果你在任何一个方面得分为0,你就没有真正在学习。
- “负面洞察”是学到错误的东西。
- “负面热情”是讨厌某事物,甚至到了劝阻他人的地步。
- “带有负面热情的负面洞察”可能是在劝阻他人学习错误的东西(这很好,对吧?)。
这只是在玩弄词语和伪方程。当然。但看到热情如何影响教育揭示了一个真相:当热情指向错误的方向时,教育体验可能变得负面。
上面的方程不一定要“正确”。它们帮助我们理清一个想法。数学的方法是隔离关键因素并弄清楚它们之间的关系。
抽象技术
对于像汽车这样的东西,关键要素似乎是:
Car = Propulsion * Control
传统上,推进的细节涉及汽油发动机,控制的细节需要人类驾驶员。但我们感兴趣的是抽象:这些细节可以隐藏吗?
也许推进可以是电动的。也许控制可以来自计算机。一辆自动驾驶电动汽车用不同的细节满足了方程的本质。(就像1个苹果+2个苹果=3个苹果一样,1头狮子+2头狮子=3头狮子也成立。)
提出正确的问题是困难的,也是关键的。对于这个问题,哪些是基本变量?什么重要,什么可以舍弃?
抽象编程
很多人认为“数学有助于编程”。是的,但并不是你想的那样。
大多数程序员不会使用除代数和基本统计之外的任何东西。(是的,是的,如果你在做一个视频游戏物理引擎,你可以坐下来。)
数学的关键教训在于它如何抽象了世界的巨大复杂性。以下是几种基本类型的“量”:
- 整数(整数)
- 浮点数(十进制数)
- 十六进制数字(一种更简单地使用2的幂的整数)
- null(未设置的数值, 非零)
程序员不需要数学技能来做算术。他们需要数学来看到世界变得简单的例子。
任何数据(文本、图像、视频等)都可以表示为巨大的数字列表,即上述元素的组合。这相当简单。
数学中还有哪些隐喻(函数、结构、变化、概率)可以帮助我们简化代码?
抽象阶梯
Bret Victor有一篇精彩的关于 抽象阶梯.
如果一个新概念对我来说很难,我会想我是否处于正确的细节层次。没有通用的答案,比如“细节越少越好”。有时你盯着自己的脚,需要缩小视野;有时你在云端,需要放大。
类比、图表、例子、简单英语和技术定义,把它们扔到墙上,通过试错找到更好的理解方式。就像做视力检查一样,靠近或远离一个想法,直到它清晰聚焦。
数学愉快。