写代码遇到困局怎么办

在这个专业两年有余,公开课、书籍也了解了一些,但实际编程水平却极其有限。

最近写 rcore 遇到了一个问题——写某个 lab 的时候有几个样例死活过不去。经过了十几个小时悲壮地 debug 最后以放弃告终。

为什么上文要强调“悲壮“,因为我的 debug 全都是无效的 debug,我只是再看了看文档、请教了群友,运气好的话,我就可以用掉了十几个小时之中的一两个小时来重构。要是上帝保佑,样例就能顺利地 pass。假如运气平平,那么剩下的时间只能是将各种函数不断排列组合,然后不停地按方向键花上几分钟来跑样例,机械地重复十几个小时却没有任何发现。

在脑海里构造的城堡永远不会崩塌——假如一个程序的数据流向和底层逻辑能在我脑子里跑一遍,那么他就能跑。实际上很多时候不能,我只能模糊地感觉出:这个函数大概是这么用,那个方法写出来大概会有这个效果,这个语法大概是这样写,那个语法可能这样改改就能跑。

学弟和朋友有时候觉得我很厉害,实际上我只是八股小子,最多是比身边的人多看了一两本书或者奇怪的公开课视频,任何一个将 61a 写完或者将 61b 的 gitlet 写出来的人都可以爆杀我几条街。

无论是 rcore 又或者别的什么:61C、61B、算法,甚至是前端,大多数时候我都是在将各种门外汉一拍脑门就能想出来的写法进行全排列,最多不过是简单的 printf,能用上 debugger 就已经是我贫瘠经验的极限,每当遇到问题我就像数学考试那些只能将“解”字写在试卷上的小孩一样无助。
到最后只能当 cheater 去看别人的 solution,或者干脆就摆烂了。

有时我在想是不是应该从基础开始:比如 61abc 系列、csapp甚至是 leetcode hot100(好吧这个是必刷) 但不知道作为大三选手时间多半不允许我这么做。

于是时至今日我的水平差得令人发指,既不熟悉语法和算法,连文档也只能做到囫囵吞枣一知半解,这让我很羡慕那些会编程的同学,我相信自己的学习方法一定出了问题。

当局者迷,旁观者清。我自己显然没办法知道问题出在哪里——那些英文字符要么看起来一切都那么自然,要么就是我自己也没法描述那些不可名状的问题。

我没法接受将自己的时间和毅力用在这些没用的地方,虽然我在这方面没有天赋,但世界上理应有方法能让我做得更好,那么方法是什么?

1 Like

:disappointed:肥也不知道能回答些什么,按照个人经验就是边写边抄效率最高,快速上手一个东西都是直接去写,虽然这样会导致地基很不稳但前期的反馈会更好

虽然不是一个类型,但最近肥在写的 mbt 就是一边看文档和模仿别人的样例去加入自己的想法,然后再用学 go 时候的一些思路去实现想法

debug 就是需要花时间慢慢构建出自己的流程,前面当 cheater 也好摆烂也好都是在慢慢熟悉

要是困扰过头了放一放也好,学一些其他的回头再来看有没有能用新知识区理解旧困境的可能

op 已经好厉害了

看写 os 的那些群友经常会卡在一个地方一周起步,所以时间从来不是大问题

谢谢你的回答 :_1_smiley:

rcoreDDL 太紧,加上微信群的群友速度太快,心态有点崩了 :smiling_face_with_tear:

:persevere::persevere::persevere:对比就会恶性循环