用于编写文字冒险游戏或在线课程的语言:20 世纪 70 到 80 年代计算机辅助教学的一瞥

译自 Language for writing text adventure, er, online courses: glimpse into the computer-assisted education of the 1970s and 1980s。除非特殊声明,译文中「我」指原文作者 Oleg Kiselyov。 线上课程现在已经不是什么新奇事物了。一门典型的线上课程包含了一段教学视频和几个课程网页,以及由屏幕上的几道选择题组成的「小测」,完成小测后会显示正确答案并统计得分。然而,「计算机辅助教育」这一概念比互联网还要早几十年出现。那时人们就很快意识到,像上面描述那样的课程是非常枯燥乏味的。 一门引人入胜、富有成效的课程应更具互动性:讲解和提问应交织穿插在课程之中。提问之后当场就要判断学生的回答是否正确,如果回答错误,可以给他们另一次回答的机会或者一些提示。如果学生还是不能回答出正确答案,则启用备用课程,更慢地讲解课程主题。问题应该是多变的,最好具有不确定性。答案的形式也应该是自由的,学生的回答可以是任意数字或字符串,而非是单纯的选择题。总之,一门引人入胜的课程应该看起来像冒险游戏。 人们很早就意识到,编写一门好课程的脚本就像编写一款好游戏的脚本一样,是一种不同于编程的技能。让课程作者用 Fortran 或者汇编语言(当时的计算机编程语言)来写脚本是不合理的,他们需要更好的工具--用于编写课程脚本的高级语言(游戏行业也意识到了这一点)。伊利诺伊大学在 20 世纪 60 年代末开发的 TUTOR 就是早期的课程脚本语言之一。 在苏联,有一种大型机上的 TUTOR 方言/实现,我在喀山大学学习和工作时就遇到过它。在大型机上学习计算机课程很不方便,因为一般很难接触到大型机。更何况,苏联的大型机经常坏掉。 个人计算机的横空出世为计算机辅助教学提供了更好的平台,至少个人机比大型机便宜得多。这就是当时我在个人机 BK-0010 上写一门 TUTOR 方言解释器的动机。个人机的硬件性能显然不如大型机,但我的实现比大型机上使用的实现还是有一些优势。 在原版 TUTOR 及其方言中,创建演示文稿首先要在屏幕上定位光标,然后再输入文本,而我的实现支持格式化输出文本或绘图。文本格式化模板中可以使用字符串或数字表达式插值,还可以包含用于实现颜色、黑白反转等一系列视觉效果的屏幕控制代码。此外还有一种绘制线条的特殊操作符。 这种脚本语言其实是一种包含了数值和字符串计算,以及字符串转换、编辑和匹配等功能的编程语言。由于学生可以按任意形式回答,为了判断学生回答是否正确,字符串匹配功能是必不可少的。该语言还支持 26 个整数变量以及 8 个字符串变量,以及分支判断、循环和子程序等特性。作为 TUTOR 的一门方言,它有专门的运算符实现下列功能:接受学生输入的答案、基于字符串模式匹配的结果跳转到不同分支、前进到下一课、回溯或切换到另一个教案。可以把几个课程脚本组成套装。课程脚本则用内置的全屏编辑器进行编辑。 解释器使用 PDP-11 汇编(MACRO-11)编写。解释器本身占用 3KB 内存,编辑器占用 1.5KB 内存,简单操作系统占用 2KB 内存。BK-0010 个人机主内存剩余的 9.5KB 空间可用于存放课程脚本和其他东西。用户写完课程后,可以删除掉编辑器以将其内存用于课程。 我现在才意识到,上面所描述的脚本语言足以用来编写文字冒险游戏(事实上不止文字,因为它支持绘图)。可惜当时我和我朋友都不知道「文字冒险游戏」这个概念。 当时我写了几个示例课程,并计划移植一些大学开发的现有 TUTOR 课程,但现在看来好像就剩下了解释器代码了,如下示。 几天前(2018 年 9 月),我参加了大学规定的一门关于个人信息处理的线上课程1,由一段视频和十多道选择题组成。我很遗憾地意识到,在 1988 年,在时钟速度只有 3MHz、总内存比现在的电脑小几百万倍的电脑上,我本应编写和学习一些更吸引人的课程。...

February 25, 2024 · 阅卜录 · Public Domain