Skip to content

编写宗旨


PA 是在 2014 年,由余子濠和蒋炎岩开发完成的,每隔几年会进行一定的改版,现在已经是 v3.x 的版本了。也就是说,PA 已经是我们一位亲爱的“一旬老人”了。

但是,在当下,十年已堪称一个时代。

十年前,我们没有如此快速的电脑,没有琳琅满目的高级游戏,没有丰富的社交媒体。十年,哪怕是高中里最勤奋的的卷王都不太会去刷十年前的高考真题吧?

所以我在想,我应该以一种什么样的方式来编写我这份文档,才能将这个经典的实验以一种新的方式阐述出来,焕发出新的生机。


科技的发展总是引人反思:学习的最佳方式是什么。在过去没有发达的网络的年代,我们不得不抱着一本“百科全书”,枯燥地一页一页翻,来学习知识。遇到什么报错,什么问题,都只能自己痛苦地摸索。后面有了网络,我们的同学们终于算是可以通过发帖求助的方式来解决问题了,但毕竟还是得亲力亲为,做很多复杂的工作。好的,现在我们的 AI 登场了,它是一个不怕累不会烦的 24 小时定制助手,随时准备帮你解决你的个性化问题。

显然,在这么多年的时间里,教育这件事都还是一直在进行的。随着时代的变化,我们的教育又该发生哪些变化,才能跟上时代的步伐?这个问题很大,我不敢说我能回答,但我希望从我的视角来阐述几个例子,说说我的看法。


既然我们遇到的细枝末节的问题,在网上都能找到答案,那我们在教学上是否还有必要详细讲这些东西呢?好了,大概率是不用了,所以询问这些的行为也就从教学里被杜绝了,人们开始说“RTFM”“STFW”之类不知所云的东西,这些黑话也一直被奉为圭臬。再进一步,现在有了 AI 大模型,你甚至都不用自己去搜索,就能得到一份整理好了的答案。那我们亲爱的“RTFM”和“STFW”同学是不是也该跟我们说拜拜了呢?

那么在不同的年代里,同样是学生,在这个过程当中,哪些最重要的东西继承下来了,没有消失?我认为,是在“核心知识”支撑下的“思维”。

为什么同学们常常会说某某教材编得不好,看不懂呢?究其原因,要么是编写者自己就没搞懂在硬写,要么就是这本教材的精髓之处被过多的细枝末节干扰了,使同学不得其要,读起来枯燥乏味。一本厚厚的教材读完之后,实际上在同学们脑子里剩下的,就是核心知识和思维模式,以及一些也被写在书里的,和核心知识有关的拓展知识,它们因为被写在书中,所以被“顺带”记住了。而现在大模型的出现,使得这些拓展知识也可以轻松被总结出来,只需要编写者给出一个方向,同学们就完全可以根据自身兴趣选择学习或者不学习这些拓展知识。

所以,现在我们的学习材料,完全可以尝试只保留对于塑造思维必要的最少核心知识,拓展部分则可以作为兴趣内容,供同学们自主探索。如果我们还将大量的拓展知识也放在材料当中,恐怕会影响同学们对主干内容的深入理解。我们作为编写者,只需要时刻提醒读者围绕主要的框架来理解这份材料,然后偶尔指出几个拓展方向(事实上,看起来很轻松随意,但这是需要很谨慎且重要的一件事情),其他的就充分信任读者就好了。


这里我根据第一次修读课程的回忆和经验,冒昧说一下我对原有手册可以提升的一些方向的理解。

原有手册中的内容十分丰富,但丰富的另一面就是看了后面容易忘了前面。这是很真实很残酷的体验,我在读文档的过程中,一会跟着文字学习理论,一会又想着这部分对应实验代码的哪些地方,一会又看到手册中的一个超链接点出去看看,一会又被一个蓝框思考题吸引走了目光……在这样的“围追堵截”之下,对着文档看了又看,几遍下来才明白实验相关的部分到底是哪些(不过说实话,实验相关的内容确实写得是很精彩的,这是我完成 PA 时的真实想法),好不容易做完了实验,其他跟实验不是紧密相关的内容也又忘得差不多了。

PA 作为一个大实验,它是要用软件构建一个计算机系统,但不涉及底层电路,不涉及复杂的 C 程序编译链接执行,不涉及存储器组织,不涉及 IA-32 这个具体指令集下的异常类型和处理,那这可就苦了上理论课的同学们了,同学们先上了一个月的运算电路,又上了一个月的程序链接执行,又上了一个月的存储器,又上了一个月的异常,然后做完了这个实验一脸懵:这两个关系在哪?这其中当然是有联系的,但正是因为这门课叫做《计算机系统基础》,同学们学习这个,正是因为对计算机本身架构缺乏一个整体理解,但是想要弄懂这两部分的联系,就得对计算机系统整体有不错的理解,这种困境本身像是一个先有鸡还是先有蛋的问题。

《计算机系统基础》这门课设置在大二上,这时同学们学习过的内容不多,仅限于一些电路相关知识,和程序设计基础这种基础课程,并没有接触过操作系统,C 语言系统级编程之类的内容,所以在 PA 实验过程中接触这些内容会相当的困难,深陷在未知的细节中,而缺乏全面的认识,在修改实验代码时缺乏自信心。这样的话恐怕实验效果也会大打折扣。

现在站在我们面前的是全新的一代人,我也在一直思考:“以往的训练模式是否还符合现在的需要?”老师常常推荐我们使用的 Vim,跟我们说一定要养成的读手册能力,熟练使用大量命令行工具配合协作的能力。但比如现在我们可能记忆了十天半个月的工具,还不如 AI 几秒钟现场写一个脚本上手即用。那么这些东西真的还需要吗?或者至少教学上和日常使用时,训练的方式是否该有所变化?


好的,啰嗦了这么半天,我们该怎么做呢?在最后我就抛砖引玉一下,说一下我的理解,这些也将是我书写这个文档的标准。

第一,在这份文档里我会尽可能删除不必要的拓展内容,至少会标注出来这些是拓展内容,看过一遍即可,或者仅供有兴趣的同学深入了解。

第二,为了减少遗忘,重复可能是必要的。在关键区域对前面的知识进行重复,但也不是简单的重复,而是尽可能从不同角度讲解同一内容,既能突出知识点的重要性,也使得内容更丰富,有利于深入理解,减少遗忘。

第三,我会加入一些有关拓展知识指引,以及 AI 使用技巧的总结,借此阐述我对如何组织拓展内容和如何使用 AI 的理解。

文档的撰写思路受到了 jyy 实验安排的启发,在此感谢。

如果有相关的建议不吝赐教的,也欢迎联系:231250084@smail.nju.edu.cn,在此先行感谢。