编程时千万要记下一切!

Swizec Teller CSDN 今天

【CSDN 编者按】在编程中,我们常常会遇到这样的情况,那便是苦思冥想许久好不容易对实现某个功能的代码实现过程有了些想法却轻易就被“打扰”得烟消云散了,也因此行业开始流传“当一个程序员冥思苦想时,不要去打扰,甚至一句友好问候都多余。”本文作者分享了一种颇为行之有效的方式,再也不用担心会忘记,能够从被打断的地方继续开始。

作者 | Swizec Teller,JavaScript 开发。

译者 | 弯月

责编 | 沭七

出品 | CSDN(ID:CSDNnews) 

以下为译文:

七年前,我养成了一个古怪的习惯。周三的时候,正是这个古怪的习惯救了我一命。

当时我们正在大学里进行一次编译器考试。我们各自构建了一种简化的 Pascal 编译器。

在那个学期初,教授展示了他专门为我们发明的这款降低了难度的 Pascal。熟悉的 Pascal 语法,还包含算法、变量赋值、函数等功能的子集。

他还给了我们一堆 Java 代码,那是个做了一半的编译器。

那段代码知道如何采用抽象语法树并将其转换为字节码。你可以将该字节码当成普通的 Java 可执行文件在 JVM(Java 虚拟机)上运行。

这样一来我们就可以在一个学期内完成这个任务了。就好象我在工作室给工程师们构建了一半的应用程序,他们只需填补空白。

我们的任务是构建编译器的前端。分词器、解析器、语义分析器。

看起来很有意思。

到学期结束时,我们每个人都做好了自己的编译器。虽然输入与输出都相同,只是中间的实现方法各异。

那段代码现在还在我的 GitHub 上(https://github.com/Swizec/compilers-homework)。

还有一篇旧文章,关于为什么编写编译器的人都是超级英雄(https://swizec.com/blog/why-people-making-compilers-are-superheroes/swizec/4616)。

考试来临了。

历经 4 个小时。开卷考试,你可以使用电脑,你可以上网,也可以看书。想用什么就用什么,但是不能互相抄袭。

任务就是往编译器里添加功能。

当时有 2 或 3 个新语法选项。我记不清具体内容了,但是评估的过程很简单:将你的编译器发送给教授。他会编译编译器。然后运行一堆测试用例。测试通过百分率就是你的考试成绩。

天啊。如何才能保持 4 个小时的高度专注?怎样才能保持头脑清醒?

记笔记!把一切都写下来。

记不清我是怎么想到这个主意的,但我就在那次超残酷的考试中首次尝试了这种方法。

在思考问题的时候,你肯定会有一些想法。把一切想到的东西都写下来。

这个方法可以解决三个问题:

  • 更加易于集中注意力。在记笔记的时候,你的注意力自动地就会更加专注。你的思绪会非常有条理,不会慌乱。逐个遵循逻辑步骤。

  • 让你放慢脚步书写的速度远不如思考的速度快。放慢脚步意味着你会更加深思熟虑。在动手写代码之前进行深思熟虑是一件好事。

  • 即使被打断也不会前功尽弃无论是在办公室、在家里,还是在上网,突然有个奇怪的想法冒出来,你的思绪就会被打断。写下你的想法可以让你更加容易地回到原有的思绪中。

  • 扩大工作记忆。你的工作记忆只能容纳 7 条。你只需 7 条记忆就可以完成你的项目吗?

不要像下面这个人一样👇。

图中的这个人研究的代码并没有深入他的大脑,在被打断后,他不得不从头开始。通过记录一些笔记,就可以让他从被打断的地方继续开始。

周三的时候,我就是这么做的。

12 月 20 日我接手了一项新功能,然后放了两周的假。我只做完了一半,1 月 2 日回来的时候什么都想不起来了。

我甚至记不起那个功能是什么了。

在笔记的帮助下,我顺利地做完了这个功能😊。

英文:When you code, write down everything

链接:https://swizec.com/blog/write-down-everything/swizec/8851

本文为 CSDN 翻译,如需转载,请注明来源出处