HQ Software Foundation

学习笔记重要吗?

April 02, 2023

即使现在,中文的技术博客还是很少在持续输出高质量内容。相比之下在Hacker News上,每天都有很多新的技术文章。一般来说,能够在前排的都是非常具有独创性的想法和评论,大部分的文章很简短,但是绝对足以发人深省。

在诸如CSDN、博客园和知乎这样的地方,更多的是学习笔记。大部分这种笔记都是由新手写成,段落结构没有什么逻辑,充斥着不知道从哪里复制粘贴来的段落、运行不起来的代码、一大堆凌乱的参考链接和配置环境的种种细节。好的技术作家是很少见的,尤其是能够把一件事情的具体原理说明白的人,即使是阮一峰这类的著名博客主,也经常会在自己不熟悉的领域被人指出问题。

实际上,我写过很多这样的文章。这只是对我学到内容的简单总结,加上一些浅显的理解。等到几天之后,我可能会觉得自己当时想错了。而且,大部分学习的东西都不是成体系的内容。我的意思是,我很难想要明白自己想表达什么。大部分时候,这些东西只是简单收集的零散知识,构不成一篇文章的结构。我现在简单摘录一下这种文章可能的形式,从我当年的某个学习笔记中:

延续传递风格(continuation-passing style,CPS)最初在1970年代作为一种编程风格出现,在1980年代到1990年代期间,其作为高级编程语言的编译器的一种中间表达形式开始崭露头角。

现在,CPS作为非阻塞式(通常是分布式的)系统的编程风格而被再次发掘出来。我对CPS很有好感,因为它是我获取博士学位的一个秘密武器。它十有八九帮我消减掉了一两年的时间和一些难以估量的痛苦。

本文介绍了CPS所扮演的两种角色——作为JavaScript中的一种非阻塞编程风格,以及作为一种功能性语言的中间形式(简要介绍)。

什么是持续传送风格?

如果一种语言支持延续(continuation)的话,编程者就可以添加诸如异常、回溯、线程以及构造函数一类的控制构造。 可惜的是,许多关于后续的解释(我的也包括在内)给人的感觉是含糊不清,令人难以满意。后续传递风格是那么的基础。后续传递风格赋予了后续在代码方面的意义。更妙的是,编程者可以自我发掘出后续传递风格来,如果其受限于下面这样的一个约束的话: 没有过程被允许返回到它的调用者中——永远如此。

存在的一个启示使得以这种风格编程成为可能: 过程可以在它们返回值时调用一个回调方法。当一个过程(procedure)准备要“返回”到它的调用者中时,它在返回值时调用“当前后续(current continuation)”这一回调方法(由它的调用者提供)。一个后续是一个初始类型(first-class)返回点。

这太混乱了!而且信息量确实很低!在新手的笔记中,他们往往会记下那些看似比较重要的东西,但实际上很快他们就会直到这些知识是平凡的——这并不代表这些知识不重要,而是这种认识上的进步带来的新手和熟手间的壁垒,不止如此,在现在和过去的自己之间也有着同样的隔阂。比如,我在2017年的一篇学习笔记里想尽办法记录了我通过百度搜索来的一系列名词的解释:依赖注入、控制反转、MVC、Servlet、JSP、设计模式、Hibernate、Spring、Java Bean、MyBatis、Tomcat……说实在的,这些东西对于当时的我来说每一项都有如天书。

直到很久之后,我才理解这些概念究竟代表什么。而现在看当时写的笔记也没什么意义,复制维基百科和别人的博客这种事情从来就不代表自己学会了什么。我根本没有理解那些最根本的东西,但这从来都不是一件简单的事情。

回到最开头的问题,学习笔记重要吗?事实上,我觉得是不重要的。在很长一段时间我的看法是,如果你认为自己的博客没有好到能够给人带来显著的帮助的话,就不要发出来了。这也是我的博客将近六年来都没有写东西的原因之一。

但事情不该是如此。

最近我越来越感觉到,写学习笔记的过程也代表着一种思考的过程。在这个时代我们可以用AI来帮助润色文章,但是人思考的过程是AI无法替代的。这就是说,写作这件事情本身就很重要,思维导图这一类的工具也是如此。

是的。我们应该有一种探究根本的方式,并且通过写作表达出来,这不是传统的写学习笔记的过程,而是对自己的思考的总结。我觉得可以有下面的方式:总结并扩展一本书,把它和其他的背景相关联;或者是把作者的思路简化,提取出最直接的结构;联系不同的文章并提取最关键的共同点和事物发展的脉络,这些应该都是可行的。不过,这仅仅是辅助理解的方式,并不能算真正的学习笔记。

而真相是,学到了什么不重要。重要的是你如何理解,而对一件事情的理解取决于你的目的。如果是为了有趣,那么就讲明白有趣的部分;如果是为了考试成绩,那就去说清做题高分的秘籍;如果是为了做出其他成就的铺垫,那就写影响的方面有哪些:这些都是我们学习的本源目的。

最近 Obsidian 这类的工具提出了双链笔记的概念,似乎也比较成熟了。我们的博客未来是不是有可能设计成这样子?总之,我觉得这个博客未来还会添加一些功能。首先我还是要搞明白Gatsby的原理。


© 2023, Built on 2023-12-28 11:20 with Gatsby