Blog

Logo 语言竟然和 LISP 语言有渊源

前几天看 LISP 资料的时候看到有文章提到 LISP 的分支有 Logo。我当时十分怀疑这个 Logo 是不是我小学时计算机课上讲的用于绘图的 Logo 语言。今天专门看了一下维基百科的介绍,发现这竟然是真的:

Logo的原型来自另一个计算机语言LISP,派普特(Logo 的发明人)修改了LISP的语法使得他更易于阅读。Logo通常被称作没有括号的Lisp

这个事实直让我惊呼“天啊”,没想到我过去一直觉得非常神秘的 LISP 语言,我在小学的时候就有过接触了。当然这个接触距离远了一点,从直观上来看,Logo 和 LISP 有很大的不同,不过如果给每一条 Logo 指令都加上小括号,把里面的中括号也改成小括号,我想它应该跟 LISP 的 S-exp 很像了。

在上世纪九十年代的中国的广大的小学中计算机课的语言竟然跟 LISP 有关,听上去挺天方夜谭的,我想这跟 Logo 简单的构造有很大关系;另外 Logo 是用于绘图的语言,每个实现都包括一个解释环境,并且可以立马在屏幕上把图形绘制出来,这也让 Logo 更加直观、易学。我在小学四年级的时候学校开设了计算机课,刚开始是基础知识和在 WPS 中打字,现在回忆起来接触 Logo 的部分要么是在四年级下学期,要么是在五年级了。当时的印象是 Logo 开始的时候很简单,到后来画一些复杂的图形的时候让我觉得有些吃力。当时老师在课堂上让我们画一些多边形,让我们不要用量角器量角度,要自己推算夹角。小学的时候哪接触过几何啊?所以当时我比较怕这部分,好在考试的时候不考。

印象里是小学的时候我参加了当地少年宫的计算机班,现在记不清有没有在那里继续学 Logo 语言了,不过当时参加了当地的一个小型竞赛,项目包含了 BASIC、Logo 等语言,还有其它的什么东西,我应该是报了这两项。BASIC 的部分是用 BASIC 语言来放音乐,就是 PLAY 命令,要求把一首歌的第一句——“我们是共产主义接班人”用喇叭放出来。Logo 语言让用循环命令加上变量,从小到大并不断修改夹角的画正方形,最后形成一个蜗牛的形状。这些在课上都有讲过,我觉得非常容易,在竞赛场内还很容易的就做出来了。竞赛的时候有电视台来摄像,当我运行用 Logo 画蜗牛程序的时候被记者看到了,还要求我再运行一次让他拍,到后来我还从电视上看到了这个画面。可惜等我第二次去上课的时候老师说找不到我的程序,我的程序就这么丢了。具体原因我现在记不清了,总之跟我们用的 Logo 程序载入程序的错误有关。似乎 Logo 只能载入同一张软盘上的程序,我换了软盘后就没法正常运行。为了解决这一点我在赛场搞来搞去结果莫名的把程序给删除了,我自己也不知道就把程序软盘交上去了。后来我总结应该把 Logo 程序和我自己的程序放在一张软盘里,大概就是这么个情况。由于没有我的程序,我到最后只拿了三等奖。

现在我对 Logo 都忘得差不多了,下载了一个伯克利的 Logo 发行版重新体验了一下简单的绘图,感觉也没什么意思了,我也没有兴趣深入研究。小时候用的 Logo 挺原始的,好像也没有什么输出的概念,也不知道现在的实现能不能导出成类似 ps 的格式,如果可以的话倒是可以当作简单的 METAPOST 来用。

没有评论

Leave a Reply