Notes · 2024.11.09
导论 97
进北邮计算机的第一门大课。
2024 年 9 月进北邮计算机,计算机导论与程序设计是第一门把人和机器拉近一点的大课。机房座位按学号,屏幕统一亮着 IDE。我那时候觉得会写循环、会交作业,就算进门了。后来成绩单上是 97。少的三分没去复查。课已经结束,问题换成另一句:这条链路从哪进、从哪出、挂了谁看日志。
导论课没教这个。课教的是能写。项目教的是能交。
第一门大课实际在练什么
语法、作业、上机、小测。内容并不神秘。神秘的是节奏。一周一次作业,截止卡在周日晚上。我有过把程序留到周日下午的记录,机房网络一卡,提交系统排队,手心和后来路演一样湿。从那次起作业提前一天交,周日只留改格式。
97 分里有卷面也有过程。过程分看的是你有没有按实验指导一步步来。指导写得很细,细到有人会嫌烦。烦的那些步骤,后来在项目 README 里我反而要自己写:环境、依赖、如何运行、失败时看哪。导论是别人写给我。项目是我写给别人。方向一翻,才知道细有多贵。
程序设计课上的「对了」是样例输出一致。样例外的空输入、超长字符串,有的题不考。不考我也会自己喂一次。喂过才知道自己的拆分在空字符串上会不会炸。这个习惯不是高尚,是被一次上机扣分吓的。
上机座位固定,环境统一,按理说该稳。不稳的是自己的 U 盘和云盘各一份,改了一边忘了另一边。交的是旧的那份,本地是新的。新的过了样例,旧的没过。从那次起,提交前在机房当场编译当场跑,不相信家里带来的「已经对了」。已经对了是宿舍里的话。机房只认这一次运行。
语法早不是问题之后
后来写 Python、写 FastAPI,语法很少卡住。卡住的是端口被占、代理没走 127.0.0.1:7890、超时把成功路径盖住。导论课的报错在编辑器红波浪上。项目的报错在另一台机器的终端里,有时连红波浪都没有,只有一直转的圈。
我开始强迫自己把「能写」和「能交」拆开。能写:本地跑通。能交:别人按 README 能跑通,挂了有日志。导论 97 证明前半。后半是课设、国创演示、检测接口一点点补的。补的时候会回头看导论作业,发现当时已经在写函数、已经在调库,只是没有把失败当功能。
失败当功能,这句话导论课件里没有。课件里的错误处理是语法级。系统级的失败是后来的课和后来的赛。
代理、端口、超时,导论作业用不上。用不上不等于以后不碰。我把当时的作业仓库留着,偶尔打开看自己怎么给变量起名。a1、tmp、flag2 在第一学期很香。香完三个月后读自己的代码,读不懂题在问什么。读不懂的代码,97 分也救不回。救的办法是:名字写题意,注释只写约束。约束比如「输入保证有空格」——保证若以后不成立,注释就是坑的位置。
97 我怎么看
没有 100。我接受。有的小测马虎,有的实验报告截图糊。糊在当时觉得无所谓,老师放大看就无所谓不了。后来交课设报告,截图我都会检查一遍窗口是否切干净、学号是否在要求的位置。这是 97 教的,不是 100 教的。100 容易让人以为自己已经细了。97 留了一个缺口,缺口正好用来记住细。
这门课把人和机器的距离拉近一点。一点的意思是:你会让机器按你的指令走。真正近,是机器不按你走的时候你还知道下一步按哪。那一步在导论里只偶尔出现,在项目里天天出现。
97 里那三分,有一次来自报告格式。格式在当时觉得琐碎。琐碎的东西在国创材料、奖学金表、三好附件里会再来。再来的时候,导论那次重交实验报告的经验还在:页眉学号、截图日期、步骤编号。编号乱了就先改编号,再改正文。正文改完编号仍乱,老师和评委都只看见乱。
现在写程序的第一问
新开一个脚本,我先写它怎么被调用、失败打印什么。再写中间的逻辑。逻辑可以短。调用和失败必须有。导论作业如果重做,我会把这一问加进去,即使评分表没有。评分表没有的东西,才是后来真正要用的。
97 分就停在成绩单。下一门课、下一个仓库,用「能交」当验收,不要用「能编译」当验收。编译过只说明语法过了。语法过了在 2024 年 9 月是成就,在后来只是起点。