昨晚聊天的时候谈到,某些知名的社群贡献文字性教学项目的内容并不优秀。所谓的博客、讲稿、教学、讲课,都是为了承载“将一个东西传达到其他人的心中”的任务;但这并不简单,需知很多知识点,网上的辣鸡博客一抓一大把,尤其是像 KMP 这样的大众玩意。这篇讲讲这一问题。
忘了在哪里看到一个讲很多同学理解不了高数、而“大佬”们不知从何讲起的故事,提出一个命题说“理解了某知识点的人不能理解未理解的人的感受”,深以为然。从“教与学”的角度看来,朴素的教是不能朴素地导致“学”的成果的,因为教的人无法读取学习者的内心,无从知晓学的人的前置技能、思维方式,而朴素的、顶底的教学方法(指直接给出结论、然后证明它是对的;这在算法教程中尤其常见)正会受这样的效应的影响。这种“简直是直接贴一份代码”的讲述博客可以说是非常垃圾。比如在下的很多前期作品。
那换一个方向看呢?针对某个话题,从 intuition 的角度出发,从其被提出的缘由讲起,接着讨论它所经历过的改善,最后再介绍最终的形式——换言之,讲授者像发明者一样重新从零开始为学习者建立整个体系:这就是“底顶”的教学方式。愚以为,这样才能为学习者创造“本质”而“深刻”的理解。
举个例子:用搜索引擎查找“深入理解KMP”,亲眼看了前 10 条都是换汤不换药的“从暴力开始考虑复用优化”的 DP 理解。笔者本人是在学习了 AC 自动机和后缀(树|自动机|数组)三件套之后才对 KMP 有一个比较直观而 Intuitional 的理解(甚至可以说 KMP 已经变成了一个朴素的想法);而网上的众多博客,(恕直言,)大多就 KMP 谈 KMP、没有深化与推广,其中不乏广受好评的某些博主的作品, 众多算法讲稿合集类项目也难以逃脱,比如我向来推崇的師大資工演算法筆記和 P大算协贡献的OI Wiki。
所以回到标题,讲稿与博客到底应该是什么样子?我想,一份优秀的讲稿首先应该出自于一位优秀的讲师(而不是优秀的小说家、散文家、诗人)。无论最后的成品是书面还是网络,讲述都应该用口头教学那种视角与语气,应该从听众的世界观内已经有的东西去组合出你要的结果、而不是把结果糊在读者的脸上让他们接受,应该是启发听众与读者去自己解决问题、而不是直接告诉他们解答让他们验证。读一份讲稿或内容类似的博客,应该感受到作者一步一步诱导、手把着手引导你去思考,而不是看到一个做法,”啊真不错“,然后验证其正确性。在此处,zball 君曾写道:
好歹也在这世界上活了这么多年,看了太多的书,写下来的语言仍然和口语一样平白。
这并不是错误或”耻辱“,反而是教学与讲述的正确方式,应当推崇;端庄典雅、“文学性”“艺术性”,只能为一份循循善诱的好讲稿提升门槛,减少受众。
也许这篇文章里面的某些东西冒犯到了某些人,但需注意这个失之理想主义,只能说是一个最高目标吧。笔者本人并不能保证自己写出来的东西满足上述要求;比如最近写动态连通性那篇,最开始有一些 Intuitional 的介绍,后面还是只能拍出来结论,写的还是挺差的。之前一直有想法施工一篇字符串,写的像自己之前在 hz2hs 讲的那样能让人听懂;就先咕着吧。
写在后面
不知不觉就两个小时码字去了…这可能是我的博客第一篇这个长度的议论文…虽然感觉写的挺垃圾的,就是一些观点堆在一起,也没有什么逻辑可言…议论的意义上,这玩意甚至可能不如自己高考考场上写的东西…只能说是表述自己的想法吧…
但我作为人是不得不思考的,有思考的话写下来不亏,所以以后可能会更多吧。