90天古法编程计划
当 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 网络编程几乎没碰过
如果你也是"能看懂但不敢自己写"的状态,可以参考这个计划。
规则
- 禁止 AI 生成代码——Copilot 关掉,ChatGPT 只用来查概念
- 禁止复制粘贴现成实现——看懂别人的代码后,关掉页面,自己从头写
- 每天至少1小时——可以多,不能少
- 每周一篇博客——记录造了什么、踩了什么坑
- 每步必须有验证——“跑起来就算过”,跑不起来不算完成
- 能讲清楚才算会——每个知识点要能用大白话讲明白
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 经验直接迁移:你理解任务调度和信号量,这里只是从"任务"变成"进程"。
xTaskCreate→fork+exec,xQueueSend→pipe 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 每日详细计划:每日详细版