学C语言的第3天,我点开了一篇大厂技术文章,然后……
刷到那篇文章的时候,我正准备关掉手机去睡觉
事情是这样的。
作为一个刚刚结束高考、计科的准大一新生,我这段时间的状态大概是:
- 早上醒来刷B站,看“计算机专业大一应该做什么”
- 下午刷B站,看“C语言从入门到精通”
- 晚上刷B站,看“AI时代学计算机还有没有出路”
- 睡前最后刷一下手机,然后——
我刷到了这篇文章:
《AI 乱改代码?试试这套 SDD 规范驱动工作流》
标题里的“AI乱改代码”成功吸引了我的注意,因为我想象中的AI写代码一直是“一键生成、完美运行、我只需要复制粘贴交作业”的画风。AI乱改很严重吗?
于是我点了进去。
然后我就看到了这些东西:
OpenSpec、Spec、Design、Tasks、MCP、Skills、AGENTS.md、Hooks、Vibe Coding……
我当时的表情大概是:😐 → 😕 → 😵
但来都来了,硬着头皮读呗。
读着读着,我脑子里冒出了三个问题。
第一个问题:这玩意儿,跟我学的C语言有关系吗?
这篇文章讲的SDD(Spec-Driven Development,规范驱动开发),看起来是针对大型项目、团队协作、前端后端微服务架构的。里面的代码示例我基本看不懂,提到的工具我一个都没用过。
我打开大一培养方案,确认了一下:第一学期主要学C语言,写的是控制台程序、排序算法、链表操作、学生成绩管理系统这类东西。代码量撑死了几百行,需求就是老师一句话:
“用C语言实现一个学生成绩管理系统,要求支持增删改查。”
这种情况下,我需要先写一个几十页的Spec文档吗?显然不需要。
但是——
我在文章里看到了这段话:
这些问题的症结,往往在于研发上下文缺乏有效组织,这是单纯优化Prompt难以逾越的瓶颈。
虽然我还没开始“研发”,但这句话让我想到了一件事:
我学C语言的时候,经常遇到这种情况——
打开Dev-C++(别笑,真的用这个教),开始敲代码,边想边写。写到一半忘了刚才定义了什么变量,往上翻找。程序报错了,瞎改一通,跑通了,但完全不记得改了什么。第二天再看这段代码,跟看天书一样,完全不知道自己在写什么。
这不就是“上下文缺乏有效组织”吗?
所以我的结论是:
SDD的工具和流程,大一用不上。但SDD的核心思想——先把需求写清楚、把架构想清楚、把任务拆清楚,再动手写代码——这玩意儿放到任何语言、任何阶段都管用。
哪怕只是写一个200行的C语言课设,也值得花10分钟先在文件顶部写一段注释:这个程序要做什么、有哪些功能、边界条件是什么。
这应该就是SDD在大一阶段的“平替版”吧。
第二个问题:如果我只学C语言,是不是就跟不上AI时代了?
这篇文章里反复提到的场景是:用AI生成代码、用AI辅助开发、用AI帮忙调试。
而我,一个准大一新生,目前的技术栈是:
- HTML(能写个带标题的网页)
- CSS(能让背景换个颜色,但不太美观)
- Python(能跑
print和input,没搞懂class是什么) - C语言(正在学,目前进度:
printf("Hello World!")以及scanf)
也就是说,我连“手动写代码”都还没完全学会,AI辅助开发这件事对我来说,好像还比较遥远。
但文章里有一句话让我稍微安心了一点:
现在模型的能力已经很强了,但它并不会自动替我们完成所有判断。真正决定产出质量的,还是取决于我们的用法。
翻译成我能听懂的话,大概就是:
AI是工具,人是司机。大学四年应该学会的不是“怎么让AI写代码”,而是“怎么写代码、怎么设计程序、怎么判断AI生成的东西对不对”。
C语言可能不是最时髦的语言,但它教会你内存怎么管理、指针怎么操作、程序怎么运行。这些东西,是你在AI时代判断“AI写的这坨代码到底对不对”的基础。
所以我的第二层结论是:
大一好好学C语言,不亏。学的是“判断力”。
第三个问题:这篇文章里,有什么是我现在就能用的?
说实话,文章里90%的内容我现在用不上。但剩下的10%,我反复看了好几遍,觉得大一就能开始用。
我总结成了三件具体的事情:
第一件事:写代码之前,先写注释
原文学到的:Spec(规格说明)要写清楚“做什么、不能做什么、验收标准是什么”。
大一的平替做法:拿到一个编程作业,先别急着敲代码。在文件顶部写一段注释:
/*
* 程序:学生成绩管理系统
*
* 功能:
* 1. 添加学生(学号、姓名、成绩)
* 2. 删除学生(按学号)
* 3. 修改成绩(按学号)
* 4. 查询成绩(按学号)
* 5. 计算平均分和排名
*
* 数据:结构体数组,最多50人
*
* 边界:
* - 学号是8位数字
* - 成绩0-100
* - 学号重复了要提示
* - 删除不存在的学号要提示
*
* 验收:所有功能跑通,输入非法数据不崩溃
*/
写完之后再开始写代码。过程中时不时回头看一眼,问自己:我有没有跑偏?
就这一个习惯,能省掉大量的无效debug时间。
第二件事:把大作业拆成“每日任务清单”
原文提到:Tasks(任务拆解)要把需求拆成可执行、可验证的小任务。
比如学生成绩管理系统,老师给了一周时间。我拿到题目后,别等最后三天才开始写,先拆任务:
| 天 | 任务 | 验收 |
|---|---|---|
| 第1天 | 定义结构体 + 写主菜单循环 | 编译通过,菜单能循环显示 |
| 第2天 | 实现添加学生功能 | 能写入数组,打印验证 |
| 第3天 | 实现查询和修改功能 | 按学号能查能改 |
| 第4天 | 实现删除和排名功能 | 删除后数组正确,排名正确 |
| 第5天 | 文件读写(保存到txt) | 重启程序数据不丢 |
| 第6天 | 整体测试 + 边界测试 | 所有功能跑通,乱输入不崩 |
| 第7天 | 写实验报告 | 提交 |
每天完成了就打勾。万一第6天崩了,你可以回到第5天的版本重新来。
再也不会有“课设前夜通宵改bug”的绝望了。
第三件事:每次做完作业,花10分钟写“复盘笔记”
原文提到:Archive(归档沉淀)要把经验沉淀下来,以后复用。
DeepSeek说大一的平替做法是:
每次实验做完,在手机备忘录里写三行话:
【踩了什么坑】
- 指针传参忘记用 &,导致值没改成功
- scanf 后缓冲区有换行符,用 getchar() 清掉了
【学会了什么】
- 动态内存分配 malloc 和 free 怎么用
- 链表的插入删除操作终于搞懂了
【下次注意】
- 涉及指针的操作,先画图捋一遍再写代码
我也确实知道这份笔记的价值,会随着时间推移越来越大。等到大二学数据结构、大三准备面试、大四做毕设,翻出来看,我会比“学过就忘”的同学省下大量复习时间。
三个字总结就是:别白学。
最后,我想说点认真的
这篇文章我确实没完全看懂,MCP是什么、Hooks怎么配、OpenSpec怎么用——这些对我一个刚学C语言的人来说还太遥远。
但我看懂了文章的核心精神:
人负责定义规则和判断结果,AI负责在规则内完成实现。
其实学编程也是一样:
你负责先想清楚、写清楚、拆清楚,然后代码(不管是手写的还是AI生成的)才能在规则内稳定运行。
所以,虽然我还没开始用AI辅助写代码,但我打算做一件事:
把SDD的思想,先用到我的C语言学习上。
每次写程序前,先写注释说明白要做什么。
每次拿到大作业,先拆成每天能完成的小任务。
每次做完实验,花十分钟写一份复盘笔记。
这些习惯养成了,等大二真正开始用AI写代码的时候,我应该不会成为文章里说的那种“AI乱改代码”的人。
因为到那时候,我已经学会了——先定好规矩,再让工具干活。
假想小剧场(都看到这里,就点点赞呗orz)
写到这儿的时候,我室友路过看了一眼我的屏幕。
他问:“你在写什么?”
我说:“我在写一篇技术文章的读后感。”
他看了一眼标题草稿,说:“你不是刚学C语言三天吗?”
我说:“对,所以我现在还是一知半解,但我觉得挺有用的,先写下来。”
他说:“那你这篇文章准备发哪?”
我说:“掘金。万一四年后我成了大佬,这就是我入行的第一篇技术感悟。万一没成……”
“没成咋样?”
“没成就当给学弟学妹留个参考吧,至少有人试过了,准大一也可以看大厂技术文章。”
他沉默了一会,说:“那你现在还是先把C语言作业写完吧。”
我说:“对,写完我就去用Git把代码传上去,哪怕就一百行,也得有版本管理。”
他看我的眼神,像看一个刚学会走路就想去跑马拉松的人。
但我觉得,那个方向是对的。
——写于2026年7月最后一天,计科准大一新生,C语言学习进度3天。
这篇文章我可能会在四年后回来看。到时候如果还在写代码,希望自己已经用上了真正的SDD。