(这里提的Logo不是公司标志性图案的那个logo啊~~~)
第一次接触计算机,是小学时候的事情了。学校有一个机房,进去需要换拖鞋的那种,里面有大约30台中华学习机。觉得“学习机”这个名字多少有些矮化了中华学习机的形象,毕竟,它跟“你拍一,我拍一,小霸王出了学习机”的那个玩意儿,不是同一个级别的。中华学习机是国内模仿Apple II的一款机器,据说当年售价900元人民币,好像现在还有中华学习机的模拟器。中华学习机上面也有不少模仿Apple II的软件,其中的两个软件,成了我计算机的启蒙软件:Logo程序和Basic语言,各学了半年吧。
Logo又称海龟作图,是一门供计算机初学者学习的计算机语言,核心思想是屏幕上有一只海龟(其实就是一个小三角形)。你可以向它发送各种命令,比如说前进后退、左转右转,稍微复杂点儿的是循环什么的。海龟按照你的指令在屏幕上爬,在经过的地方留下痕迹,形成一幅图片。当年差不多把这个程序当做游戏玩儿了,玩儿的很投入,从此,有了Logo情结。关于Logo更详细的介绍可以参考wiki上面的词条:中文版和英文版。
对我来说,学Logo和Basic属于启蒙教育,多少有些娱乐性质。读大一时,严肃系统的学习了C语言。作为证明你掌握了C语言的标志,老师要求每个学生用C语言写一个稍微复杂一些的程序,也就是传说中的大作业。老师提供了一些题目供我们选择,简单的有五子棋、俄罗斯方块之类的,此外还有些比较有挑战性的题目,比如说实现一个简单的CAD,以及实现一个简单的Logo。我的选择自然是那个让我魂牵梦绕的Logo。
有Logo情结的人不止我一个,一天我写UI的时候被另一个同学看到。他也同样是一个Logo粉丝,也同样在实现Logo。我们比较了我们的程序,我的UI比他的好,而他对Logo语句的解析强于我的程序。从此,我们合作一起完成这个作业。
用C语言实现Logo语言,实质是一个Logo语言的解释编译器以及相应的UI。现在回想起来,那时开发这个程序对于我们来说,实在是过于困难。原因很简单,我们还没有学习很多必要的计算机基础课程:数据结构、编译原理、汇编语言、图形图像学等等。此外,当时的开发环境也很原始,是DOS年代的Turbo C,这是个无奈的选择,因为当时我们不大可能了解Windows的编程机制。我们需要解决的问题真的很多很难,那时的我们,还真的很无知。
其实开发时需要用到的很多算法,我们都将在未来的日子里学习到。而当时的我们,整天闷在机房里,冥思苦想,憋出来很多诡异的算法。程序的开发工作持续了半年多,把作业交给老师后,我们终于解脱了,当时的情绪,能从那时做的ppt上面感受到。
我们的老师对我们的作业非常的满意,把它放在教学网站上作为范例程序。
对于我来说,当年开发这个程序,几乎耗尽了我的精力,以至于我经常反思我该不该写这个程序。我和那个同学是两个追求完美的人,试图把每一个细节都做到最好。其实,我们的程序显然不是完美的,甚至很多细节透露着山寨的气息,不过我们两个确实曾使出了全部的力气试图把它做完美。在解决很多问题时,我们采用的算法是丑陋的,而在日后,我们将学习更好的算法。虽然我们当时没有想出最好的算法,但是我们曾经认真的分析思考过这些问题。我想,这也是我们最大的收获吧。时至今日,每当我看到我们在2000年时完成的这个程序,我还是会产生时空错位的感觉,觉得这个程序不属于那个时代的我,它过于超前了。
完成这个程序是我最骄傲的事情之一。我的第一份简历,在非常醒目的位置,提到了这个程序。
考研后,我用后来学习到的技术改进了这个程序。不幸的是,随着一块硬盘的故障,我丢失了它的源代码,我非常郁闷非常伤感,打击很大。
最近,我忽然看到了当年的老师的教学网站,我的程序居然还在上面……
下载备份。真没想到这个DOS程序在Windows XP居然还可以运行。
程序的下载。最后,再看一眼这个程序吧:
Apple II上的Logo是这样的,中华学习机上面的应该差不多吧。
后来梅林同学也相应了一篇博文
http://jeremiahmerlin.wordpress.com/2009/04/06/%E6%9B%BE%E7%BB%8F%E6%89%A7%E7%9D%80%E7%9A%84%E6%88%91%E4%BB%AC/
Leave a Reply