90天古法编程计划

从纯 vibecoding 回归手写代码的90天训练计划。每周造一个能跑的东西。
August 13, 2026

当 vibe coding 成为主流,“古法编程"是否还有意义

作为AI Native一代,各种agent软件层出不穷的当下,坚持古法编程似乎是对于效率的背叛。

问题在于,你可以不古法编程,但你必须有古法编程的思维与能力。

但如果没有基础的代码撰写能力、算法开发技能,读不懂AI写出的代码结构,则会被大模型牵着鼻子走——看似码了一天代码,实则是点了一天enter,不知道,看着如山的代码,也越来越懒得问为什么。导师质询,你得复制过来质询大模型,大模型挖了坑你也无从察觉,只能一脸尴尬的跟导师say sorry。很慌,真的很慌。

所以我认为我们真的需要暂时背叛效率,每天花半天时间,慢下来,自己培养自己的古法编程能力,这不仅让我们在断网的时候仍然不慌,还能够逐渐统治大模型,让思维升格。

近期,由三名波兰工程师组成的创业团队Slopfix专注于清理Vibe Coding导致的"代码屎山”,以基础报价每周1万美元、按代码缩减比例收费的方式提供代码清理、维护服务,避免项目做大后代码冗余失控积重难返。市场需求已经产生,我们应该敲起警钟,古法编程能力的培养不能再拖了。

90天的目标:不使用 AI 生成代码,每周造一个能跑的东西,在造的过程中重建编程能力。


核心理念:做了再学,不是学了再做

以前也上过编程语言课,但考完试就忘了—因为没有真实运用的场景。为了降低遗忘概率,我们必须在做中学:每周造一个能跑的工具。 数据结构、算法、网络编程,不是提前学好的,而是造东西的过程中"需要什么补什么"。

  • 造字符串引擎 → 自然需要动态数组和 malloc/free
  • 造 CSV 工具 → 自然需要排序算法和函数指针
  • 造数据库 → 自然需要哈希表和 B+ 树
  • 造爬虫 → 自然需要多线程和锁

每一步都有"跑起来就算过"的验证标准。不是"写完了练习题",而是"工具能用了"。


我的起点

  • 一年 C 语言嵌入式开发经验——基本语法没问题,寄存器配置、位操作、FreeRTOS 任务调度都用过
  • 没有AI验证对自己写的代码没底——每次开工第一件事是打开 AI 对话框,自己写完一定一遍一定要交给AI验证,然后再自己查一遍没有错误,最后ctrlC ctrlV
  • 代码能跑,但心里没底——说不出为什么这样写,出了 bug 不知道从哪查起
  • 嵌入式和桌面 C 是两个世界——FreeRTOS 的信号量、消息队列、优先级管理我懂,但 malloc/free、文件 I/O、socket 网络编程几乎没碰过

如果你也是"能看懂但不敢自己写"的状态,可以参考这个计划。


规则

  1. 禁止 AI 生成代码——Copilot 关掉,ChatGPT 只用来查概念
  2. 禁止复制粘贴现成实现——看懂别人的代码后,关掉页面,自己从头写
  3. 每天至少1小时——可以多,不能少
  4. 每周一篇博客——记录造了什么、踩了什么坑
  5. 每步必须有验证——“跑起来就算过”,跑不起来不算完成
  6. 能讲清楚才算会——每个知识点要能用大白话讲明白

AI 的正确用法:只当"搜索引擎"和"概念解释器"。可以问"什么是 B+ 树",不能问"帮我写一个 B+ 树"。


90天路线图

阶段一:用 C 造小工具(Day 1-30)
  W1 内存透视器    W2 字符串引擎    W3 mini-grep    W4 CSV 数据刀

阶段二:系统级编程(Day 31-60)
  W5 mini-shell    W6 HTTP 服务器   W7 迷你数据库   W8 多线程爬虫

阶段三:全栈项目(Day 61-90)
  W9-10 从零写 Web 应用    W11 调试与性能    W12 重构与总结

阶段一和二用 C 语言(有基础不用学新语言;C 没有高级数据结构库,逼你造轮子)。阶段三切换到 JS/TS(补全前端能力),同样禁止框架和 AI。

每日详细计划:每日详细版


阶段一:用 C 造小工具

每周造一个命令行小工具。不是"学完数据结构再写练习题",而是"造一个东西,缺什么补什么"。

Week 1:内存透视器(memory_probe)

造一个工具:输入一个数字或字符串,打印它在内存里的真实样子——二进制、十六进制、字节排列、地址。

会自然碰到:二进制/补码、IEEE 754 浮点数、指针、struct 内存布局、大小端、malloc/free。

嵌入式背景的加分项:二进制和位操作我天天用,但"能讲清楚为什么"和"会用"是两回事。这周把"会用"变成"能解释"。真正的盲区是指针深入和 malloc/free——嵌入式里我很少用动态内存。

验证./memprobe int -42 输出补码,./memprobe float 0.1 输出 IEEE 754 位序列,./memprobe struct 显示字段偏移和 padding。

Week 2:字符串引擎(str_engine)

C 没有好用的字符串类型。自己造一个——带长度、能拼接、能查找、能分割、能替换。

会自然碰到:动态数组(字符串底层就是)、malloc/free(每个操作都在管内存)、指针运算、内存泄漏检测。

这是计划最关键的转折点。过去一年我的习惯是"先看 AI 怎么写,再筛选复制"。从这周开始反过来:先自己写,写不出来也硬憋。

验证:拼接/查找/替换/分割字符串,valgrind 报告零泄漏。

Week 3:mini-grep

造一个文本搜索工具,能在真实文件里搜索关键词,支持正则、高亮、多文件。

会自然碰到:文件 I/O、字符串匹配算法、命令行参数解析、递归(目录遍历)。

验证./minigrep "^Error" log.txt 正确匹配并高亮显示。

Week 4:CSV 数据刀(csv_knife)

造一个能读取、筛选、排序、导出 CSV 的命令行工具,整合前三周所有知识。用 Week 2 的字符串引擎作为基础。

会自然碰到:解析、排序算法(要排序就必须自己实现)、函数指针(排序比较器)、错误处理、代码重构。

验证:打开真实 CSV,按列筛选+排序后导出新 CSV,Excel 能打开。


阶段二:系统级编程

Week 5:mini-shell

造一个能跑真实命令的 shell——支持管道、重定向、后台执行、内建命令。

会自然碰到:fork/exec/wait、管道、文件描述符、信号。

FreeRTOS 经验直接迁移:你理解任务调度和信号量,这里只是从"任务"变成"进程"。xTaskCreatefork+execxQueueSendpipe write。但 fork()、虚拟内存、文件描述符这些 RTOS 里没有的东西是重点。

验证ls -la | grep .c > out.txt 正常工作。

Week 6:HTTP 服务器(tiny_httpd)

造一个浏览器能访问的 Web 服务器,返回 HTML/CSS/JS 静态文件。

会自然碰到:socket、TCP、HTTP 协议、MIME 类型、URL 解析。

这周对我来说是全新领域。嵌入式很少碰完整的 socket 编程。但 HTTP 协议本身其实很简单——就是文本解析加 socket 发送。

验证:浏览器访问 localhost:8080 看到页面,CSS 和 JS 正常加载。

Week 7:迷你数据库(tiny_db)

造一个持久化的 KV 存储——存数据、关程序、重开数据还在。

会自然碰到:文件 I/O、哈希表(为了快查找)、B+ 树(为了范围查询)、持久化。

你不会"先学 B+ 树再写数据库"。你会先发现"GET 太慢了",然后想到"加个索引",然后自然地需要 B+ 树。学习顺序是反过来的——需求驱动学习。

验证:SET/GET/DELETE 正常工作,重启后数据不丢,范围查询能返回结果。

Week 8:多线程爬虫(web_crawler)

造一个多线程网页爬虫——并发下载页面,提取链接,存到本地。

会自然碰到:pthread、互斥锁、条件变量、生产者-消费者模型、哈希集合(URL 去重)、HTTP 客户端、Makefile、单元测试。

FreeRTOS 经验再次迁移:这就是生产者-消费者模型——用 xQueue + 任务做过,这次用 pthread + 条件变量重做一遍。

验证make 构建,./crawler http://example.com --depth 2 并发抓取,无重复无崩溃。


阶段三:全栈项目

Week 9-10:从零写 Web 应用

切换到 JS/TS,禁止 React/Vue/Express。从空编辑器到一个能部署的完整 Web 应用。

手写 HTTP 服务器、路由、中间件、CRUD API、认证、前端原生 JS。项目选 URL 短链服务或 Todo 应用。

验证:能部署运行,别人能通过 API 文档使用你的服务。

Week 11:调试与性能

给 Week 9-10 的项目加调试、日志、性能分析、优化。

验证:找出瓶颈并优化,基准测试显示性能提升,无内存泄漏。

Week 12:重构与总结

代码审查、重构、补测试、写文档。最后做 LeetCode 中等题计时挑战,写90天终极总结。

验证:测试覆盖率 > 70%,终极总结博客发布。


我会怎么记录

整个90天,我会持续更新我的进展:

  • 每周一篇项目博客(12篇)——“这周我造了什么”,怎么造的,踩了什么坑
  • 三个阶段总结(3篇)——每阶段结束时的回顾
  • 终极总结(1篇)——Day 90 发布,90天前后自评对比

总共 16篇博客


写在最后

我有一年的嵌入式 C 经验,语法不是问题,FreeRTOS 的并发概念也懂。但这一年来,AI 慢慢成了我的"代码拐杖"——没有它不敢迈步,有了它又不看路。

这个计划要做的事情很简单:把拐杖扔了,摔几次,然后学会自己走。

虽然有点吊轨,这份计划也是AI帮我写的,anyway,我们尝试一下,一步步来,有没有可能脱困。


计划制定日期:2026-08-13 预计完成日期:约 2026-11-11 每日详细计划:每日详细版