编程思维:一张脑图讲透
从问题建模到最小学习闭环:@123olp 的编程思维全景脑图,高中生可读版。
开篇:这课解决什么问题
以下内容整理自 @123olp 2026年5月25日发表的《编程思维》脑图。原文是一张大树状图,从 0.核心定义 一路展开到 11.最小学习闭环,共12大块。
这门课要回答:① "编程思维"到底指什么(不只是写代码)?② 遇到一个真实问题时,标准的思考链条是什么?③ 新手最常见的8个误区是什么?④ 最小的学习闭环长什么样?
配套:想走"AI工程师"实战路线见《第09课》;想先理解"AI时代编程(提示词转代码、人类负责判断)"可先看本课 s7。
0–1:核心定义与问题建模
以下来自 @123olp 原文脑图。
0. 核心定义(5个"转化"):把模糊问题→可计算问题;把现实对象→数据表示;把解决过程→明确步骤;把结果→可验证输出;把一次性解决→可复用系统。记住这五句,就抓住了编程思维的骨架。
1. 问题建模(动手写代码之前,先回答):
- 1.1 明确问题:问题是什么?为什么要解决?谁在使用结果?成功标准是什么?
- 1.2 定义输入:输入来自哪里?格式是什么?是否完整、可靠?异常输入有哪些?
- 1.3 定义输出:输出给谁看?格式是什么?如何判断对错?如何被后续使用?
- 1.4 明确约束:时间/空间限制、数据规模、安全要求、可维护性、使用场景限制。
就像点外卖:核心定义是把"我饿了"(模糊)变成"30分钟内送一份宫保鸡丁到A座"(可计算);问题建模是确认"谁吃(输入:1人份/微辣)、送到哪(输出)、超时怎么办(约束)"——没想清楚这些就下单(写代码),大概率送错。
2:数据表示——先想清楚"东西"长什么样
以下来自 @123olp 原文脑图。2. 数据表示:代码操作的是数据,所以先想清楚数据长什么样:
- 2.1 基本数据:数字、字符串、布尔值、空值;
- 2.2 数据结构:列表/数组、字典/哈希表、集合、栈、队列、树、图——不同的问题配不同的"容器";
- 2.3 类型意识:数据能做什么操作、不能做什么操作;类型转换与类型错误;
- 2.4 状态表示:当前状态、历史状态、状态变化、状态一致性。
新手常犯的错误是跳过这一步直接写逻辑——结果写到一半发现"这个数据该用什么装",推倒重来。数据结构选对了,算法 often 自然就简单了。
3:过程设计——把解决过程变成明确步骤
以下来自 @123olp 原文脑图。3. 过程设计(程序的五种基本动作):
- 3.1 顺序执行:第一步做什么、第二步做什么、每一步依赖什么;
- 3.2 条件判断:if / else / 多分支 / 边界条件;
- 3.3 循环:遍历、计数、累积、搜索、终止条件(没有终止条件的循环=死循环);
- 3.4 递归:基本情况、递归情况、问题缩小、调用栈;
- 3.5 算法:排序、搜索、分治、贪心、动态规划、图算法。
高中生友好理解:顺序是菜谱步骤,条件是"如果咸了就加水",循环是"把每颗豆子都捡出来",递归是"俄罗斯套娃"(大问题套着小一号的自己)。
4:抽象与分解——把大问题拆小
以下来自 @123olp 原文脑图。4. 抽象与分解:
- 4.1 函数抽象:输入参数、返回结果、函数职责、副作用控制——一个函数只干一件事;
- 4.2 模块抽象:文件组织、功能分层、内部实现 vs 外部接口;
- 4.3 接口抽象:使用者需要知道什么、不需要知道什么;输入契约、输出契约、错误契约;
- 4.4 系统分解:拆成子问题、拆成组件、拆成流程、拆成数据层、拆成交互层。
核心心法只有一句:隐藏复杂性。好的抽象让使用者不用知道内部怎么实现的——你用微波炉不用懂磁控管,这就是接口抽象的胜利。
就像组装宜家家具:函数是每一块板子(职责单一),模块是"卧室系列/厨房系列",接口是说明书(你只需要知道"把A拧进B",不需要知道板子怎么压出来的),系统分解是先分房间再分家具。
5:正确性与验证——能运行≠正确
以下来自 @123olp 原文脑图。5. 正确性与验证:
- 5.1 正确性意识:能运行≠正确;示例正确≠普遍正确;小数据正确≠大数据正确;当前正确≠未来可维护——四连击,新手坟场;
- 5.2 测试:正常用例、边界用例、异常用例、回归测试、自动化测试;
- 5.3 调试:复现问题→缩小范围→提出假设→验证假设→修复问题→防止复发(六步法);
- 5.4 复杂度:时间复杂度、空间复杂度、数据规模、性能瓶颈、可扩展性。
这节与《第09课》第5阶段"评估"呼应:"通常正确就是生产环境的 bug"——能跑和正确之间,隔着测试、调试和复杂度分析三道坎。
6–8:工程化思维、系统思维、工具链
以下来自 @123olp 原文脑图。三块"让代码活得久"的能力:
- 6. 工程化思维:可读性(命名/注释/结构/简洁)→可维护性(低耦合高内聚、单一职责、可替换可扩展)→版本控制(Git:commit/branch/diff/merge)→文档(README/使用说明/设计说明/API文档/变更记录)→重构(消除重复/提取函数/改善命名/简化条件/拆分模块,保持行为不变);
- 7. 系统思维:程序不是孤立代码——用户、数据、文件、网络、数据库、外部服务都是系统的一部分;要有反馈机制(日志/监控/用户反馈)、风险意识(数据丢失/权限错误/安全漏洞/性能崩溃/依赖失效)、演化意识(需求会变、数据会变、用户会变、环境会变,代码必须可修改);
- 8. 工具链能力:编辑器、命令行(文件操作/程序运行/环境管理/自动化脚本)、包管理(虚拟环境/依赖冲突)、调试工具(断点/变量检查/调用栈)、协作工具(GitHub/Issue/PR/Code Review/CI/CD)。
9–11:应用场景、八大误区、最小学习闭环
以下来自 @123olp 原文脑图。
9. 典型应用场景:自动化(文件整理/数据清洗/批量处理/报表生成)、数据处理(读取/转换/分析/可视化)、Web 应用(前后端/API/数据库/部署)、工具开发(命令行工具/插件/小程序/内部系统),以及——AI 时代编程:提示词转代码、代码阅读、代码验证、自动测试、人类负责判断。
10. 常见误区(8个,逐条对照自查):① 把编程等同于语法;② 把会复制代码等同于会编程;③ 把能运行等同于正确;④ 把刷题等同于工程能力;⑤ 把框架等同于基本功;⑥ 把 AI 生成等同于理解;⑦ 把代码行数等同于能力;⑧ 把学习资料数量等同于进步。
11. 最小学习闭环(11步,今天就能开始):① 选一个真实小问题 → ② 写清楚输入和输出 → ③ 设计数据结构 → ④ 拆成函数 → ⑤ 写最小可运行版本 → ⑥ 添加测试用例 → ⑦ 调试并记录错误 → ⑧ 用 Git 管理版本 → ⑨ 写 README → ⑩ 复盘设计取舍。
就像学做饭的最小闭环:别先买100本菜谱(误区⑧),先选"今晚做番茄炒蛋"(真实小问题)→ 列出食材和成品标准(输入输出)→ 切好配菜(数据结构)→ 分步下锅(拆函数)→ 先做出能吃的版本(最小可运行)→ 尝咸淡(测试)→ 记下次少放盐(复盘)。一盘菜学会,厨艺+1。
下一步:拿这个闭环去走《第09课》阶段1的5个小程序(计算器/文件整理器/API脚本/数据清洗/记事本)。
术语翻卡:点卡片看解释
自测一下:点问题展开参考答案
模糊问题→可计算问题;现实对象→数据表示;解决过程→明确步骤;结果→可验证输出;一次性解决→可复用系统。
明确问题(是什么/为什么/谁用/成功标准)、定义输入(来源/格式/完整可靠/异常)、定义输出(给谁看/格式/如何判对错/后续使用)、明确约束(时间/空间/规模/安全/可维护/场景)。
示例正确≠普遍正确;小数据正确≠大数据正确;当前正确≠未来可维护。
编程≠语法;会复制≠会编程;能运行≠正确;刷题≠工程能力;框架≠基本功;AI生成≠理解;代码行数≠能力;学习资料多≠进步。
选真实小问题→写清输入输出→设计数据结构→拆成函数→最小可运行版本→加测试用例→调试并记录错误→Git管理版本→写README→复盘设计取舍。