@123olp: 编程思维 ├── 0. 核心定义 │ ├── 把模糊问题转化为可计算问题 │ ├── 把现实对象转化为数据表示 │ ├── 把解决过程转化为明确步骤 │ ├── 把结果转化为可验证输出 │ └── 把一次性解决转化为可复用系统 │ ├──…
摘要
一篇关于编程思维的系统性教程,从核心定义到问题建模、数据表示、过程设计等,涵盖编程学习的多个方面。
查看缓存全文
缓存时间: 2026/05/26 13:11
编程思维 ├── 0. 核心定义 │ ├── 把模糊问题转化为可计算问题 │ ├── 把现实对象转化为数据表示 │ ├── 把解决过程转化为明确步骤 │ ├── 把结果转化为可验证输出 │ └── 把一次性解决转化为可复用系统 │ ├── 1. 问题建模 │ ├── 1.1 明确问题 │ │ ├── 问题是什么 │ │ ├── 为什么要解决 │ │ ├── 谁在使用结果 │ │ └── 成功标准是什么 │ │ │ ├── 1.2 定义输入 │ │ ├── 输入来自哪里 │ │ ├── 输入格式是什么 │ │ ├── 输入是否完整 │ │ ├── 输入是否可靠 │ │ └── 异常输入有哪些 │ │ │ ├── 1.3 定义输出 │ │ ├── 输出给谁看 │ │ ├── 输出格式是什么 │ │ ├── 输出如何判断对错 │ │ └── 输出如何被后续使用 │ │ │ └── 1.4 明确约束 │ ├── 时间限制 │ ├── 空间限制 │ ├── 数据规模 │ ├── 安全要求 │ ├── 可维护性要求 │ └── 使用场景限制 │ ├── 2. 数据表示 │ ├── 2.1 基本数据 │ │ ├── 数字 │ │ ├── 字符串 │ │ ├── 布尔值 │ │ └── 空值 │ │ │ ├── 2.2 数据结构 │ │ ├── 列表 / 数组 │ │ ├── 字典 / 哈希表 │ │ ├── 集合 │ │ ├── 栈 │ │ ├── 队列 │ │ ├── 树 │ │ └── 图 │ │ │ ├── 2.3 类型意识 │ │ ├── 数据能做什么操作 │ │ ├── 数据不能做什么操作 │ │ ├── 类型转换 │ │ └── 类型错误 │ │ │ └── 2.4 状态表示 │ ├── 当前状态 │ ├── 历史状态 │ ├── 状态变化 │ └── 状态一致性 │ ├── 3. 过程设计 │ ├── 3.1 顺序执行 │ │ ├── 第一步做什么 │ │ ├── 第二步做什么 │ │ └── 每一步依赖什么 │ │ │ ├── 3.2 条件判断 │ │ ├── if │ │ ├── else │ │ ├── 多分支 │ │ └── 边界条件 │ │ │ ├── 3.3 循环 │ │ ├── 遍历 │ │ ├── 计数 │ │ ├── 累积 │ │ ├── 搜索 │ │ └── 终止条件 │ │ │ ├── 3.4 递归 │ │ ├── 基本情况 │ │ ├── 递归情况 │ │ ├── 问题缩小 │ │ └── 调用栈 │ │ │ └── 3.5 算法 │ ├── 排序 │ ├── 搜索 │ ├── 分治 │ ├── 贪心 │ ├── 动态规划 │ └── 图算法 │ ├── 4. 抽象与分解 │ ├── 4.1 函数抽象 │ │ ├── 输入参数 │ │ ├── 返回结果 │ │ ├── 函数职责 │ │ └── 副作用控制 │ │ │ ├── 4.2 模块抽象 │ │ ├── 文件组织 │ │ ├── 功能分层 │ │ ├── 内部实现 │ │ └── 外部接口 │ │ │ ├── 4.3 接口抽象 │ │ ├── 使用者需要知道什么 │ │ ├── 使用者不需要知道什么 │ │ ├── 输入契约 │ │ ├── 输出契约 │ │ └── 错误契约 │ │ │ └── 4.4 系统分解 │ ├── 拆成子问题 │ ├── 拆成组件 │ ├── 拆成流程 │ ├── 拆成数据层 │ └── 拆成交互层 │ ├── 5. 正确性与验证 │ ├── 5.1 正确性意识 │ │ ├── 能运行不等于正确 │ │ ├── 示例正确不等于普遍正确 │ │ ├── 小数据正确不等于大数据正确 │ │ └── 当前正确不等于未来可维护 │ │ │ ├── 5.2 测试 │ │ ├── 正常用例 │ │ ├── 边界用例 │ │ ├── 异常用例 │ │ ├── 回归测试 │ │ └── 自动化测试 │ │ │ ├── 5.3 调试 │ │ ├── 复现问题 │ │ ├── 缩小范围 │ │ ├── 提出假设 │ │ ├── 验证假设 │ │ ├── 修复问题 │ │ └── 防止复发 │ │ │ └── 5.4 复杂度 │ ├── 时间复杂度 │ ├── 空间复杂度 │ ├── 数据规模 │ ├── 性能瓶颈 │ └── 可扩展性 │ ├── 6. 工程化思维 │ ├── 6.1 可读性 │ │ ├── 命名 │ │ ├── 注释 │ │ ├── 代码结构 │ │ └── 简洁表达 │ │ │ ├── 6.2 可维护性 │ │ ├── 低耦合 │ │ ├── 高内聚 │ │ ├── 单一职责 │ │ ├── 可替换 │ │ └── 可扩展 │ │ │ ├── 6.3 版本控制 │ │ ├── Git │ │ ├── commit │ │ ├── branch │ │ ├── diff │ │ └── merge │ │ │ ├── 6.4 文档 │ │ ├── README │ │ ├── 使用说明 │ │ ├── 设计说明 │ │ ├── API 文档 │ │ └── 变更记录 │ │ │ └── 6.5 重构 │ ├── 消除重复 │ ├── 提取函数 │ ├── 改善命名 │ ├── 简化条件 │ ├── 拆分模块 │ └── 保持行为不变 │ ├── 7. 系统思维 │ ├── 7.1 程序不是孤立代码 │ │ ├── 用户 │ │ ├── 数据 │ │ ├── 文件 │ │ ├── 网络 │ │ ├── 数据库 │ │ └── 外部服务 │ │ │ ├── 7.2 反馈机制 │ │ ├── 日志 │ │ ├── 错误信息 │ │ ├── 监控 │ │ ├── 用户反馈 │ │ └── 测试反馈 │ │ │ ├── 7.3 风险意识 │ │ ├── 数据丢失 │ │ ├── 权限错误 │ │ ├── 安全漏洞 │ │ ├── 性能崩溃 │ │ └── 依赖失效 │ │ │ └── 7.4 演化意识 │ ├── 需求会变化 │ ├── 数据会变化 │ ├── 用户会变化 │ ├── 环境会变化 │ └── 代码必须可修改 │ ├── 8. 工具链能力 │ ├── 8.1 编辑器 │ │ ├── 代码编辑 │ │ ├── 快捷操作 │ │ ├── 搜索替换 │ │ └── 插件管理 │ │ │ ├── 8.2 命令行 │ │ ├── 文件操作 │ │ ├── 程序运行 │ │ ├── 环境管理 │ │ └── 自动化脚本 │ │ │ ├── 8.3 包管理 │ │ ├── 安装依赖 │ │ ├── 管理版本 │ │ ├── 虚拟环境 │ │ └── 依赖冲突 │ │ │ ├── 8.4 调试工具 │ │ ├── 断点 │ │ ├── 日志 │ │ ├── 变量检查 │ │ └── 调用栈 │ │ │ └── 8.5 协作工具 │ ├── GitHub │ ├── Issue │ ├── Pull Request │ ├── Code Review │ └── CI/CD │ ├── 9. 典型应用场景 │ ├── 9.1 自动化 │ │ ├── 文件整理 │ │ ├── 数据清洗 │ │ ├── 批量处理 │ │ └── 报表生成 │ │ │ ├── 9.2 数据处理 │ │ ├── 读取数据 │ │ ├── 转换数据 │ │ ├── 分析数据 │ │ └── 可视化数据 │ │ │ ├── 9.3 Web 应用 │ │ ├── 前端界面 │ │ ├── 后端服务 │ │ ├── API │ │ ├── 数据库 │ │ └── 部署 │ │ │ ├── 9.4 工具开发 │ │ ├── 命令行工具 │ │ ├── 插件 │ │ ├── 小程序 │ │ └── 内部系统 │ │ │ └── 9.5 AI 时代编程 │ ├── 提示词转代码 │ ├── 代码阅读 │ ├── 代码验证 │ ├── 自动测试 │ └── 人类负责判断 │ ├── 10. 常见误区 │ ├── 10.1 把编程等同于语法 │ ├── 10.2 把会复制代码等同于会编程 │ ├── 10.3 把能运行等同于正确 │ ├── 10.4 把刷题等同于工程能力 │ ├── 10.5 把框架等同于基本功 │ ├── 10.6 把 AI 生成等同于理解 │ ├── 10.7 把代码行数等同于能力 │ └── 10.8 把学习资料数量等同于进步 │ └── 11. 最小学习闭环 ├── 11.1 选一个真实小问题 ├── 11.2 写清楚输入和输出 ├── 11.3 设计数据结构 ├── 11.4 拆成函数 ├── 11.5 写最小可运行版本 ├── 11.6 添加测试用例 ├── 11.7 调试并记录错误 ├── 11.8 用 Git 管理版本 ├── 11.9 写 README └── 11.10 复盘设计取舍
相似文章
@dashen_wang: https://x.com/dashen_wang/status/2062318606357303376
作者以个人经历引出AI时代架构师思维教程,强调在抽象泄漏发生时能理解底层本质的能力比工具使用更关键,分享汇编思维和面向对象思维两种模式。
@Russell3402: https://x.com/Russell3402/status/2056331558223786416
本文深入探讨多智能体系统的分工设计,包括触发方式、拓扑结构和调用链,分析Codex、Claude Code、OpenClaw、Hermes Agent等系统的工程实践。
@vintcessun: 一早翻到一个有意思的项目,改变了我对面试准备的认知。一直以为大厂面试刷题就够了,但本质上它考察的是完整的计算机科学知识体系。这个项目把离散的知识点串成了一个系统计划,从 Big-O、数据结构、算法到系统设计、面试技巧全覆盖,甚至包含如何写…
A popular GitHub project providing a comprehensive multi-month study plan for software engineering interviews, covering CS fundamentals, algorithms, system design, and resume tips.
@wsl8297: 分享一本通俗好读的开源书《大模型基础》。 从大语言模型入门到架构演化,再到 Prompt 工程、参数高效微调、模型编辑、检索增强生成(RAG)等关键技术,一本串起来。 GitHub:https://github.com/ZJU-LLMs/…
浙江大学团队开源了一本通俗易懂的大模型教材《大模型基础》,涵盖从架构演化到RAG等关键技术,并附带Agent-Kernel多智能体框架。
@Potatoloogs: 用 Claude Code、Cursor、Codex 理解大项目时,经常会遇到一个问题:每次提问,它都要重新读文件、找线索、拼上下文。 代码在 src,文档在 docs,设计说明、截图、论文、视频又散在别的目录里,资料很多,但关系没有沉淀…
Graphify 是一个面向 AI 编程助手的软件工程知识图谱工具,可以将代码、文档、图片等项目资料整理成可查询的关系图,帮助 AI 在理解大型项目时跳过反复读取文件的步骤。