北上广跟我同龄的年轻人用过386电脑的应该都不算少了。本博客以前也有文章讲过关于我小时候学电脑的回忆 。其实我还曾有幸试操作过Apple II,在上面学习过一下LOGO语言 。
这个计算机语言抽象来讲其实只是一个轨迹作图工具,但是不知道是谁把那个小三角型称为“乌龟”,尾巴绑了一支画笔,我们要用LOGO语句指挥乌龟画画。我天生就特别喜爱乌龟这种动物,因此在玩LOGO的时候我脑子里是真的以为自己在指挥着一直乌龟,哪怕Apple II 320×240的单色屏幕显示的归根结底只是个很小的三角型。我想象着,在那球面CRT又厚又凉的玻璃后面有着一个比这屏幕所能显示的更为丰富的世界,在那个世界里,这个三角型就真的是一只乌龟。
可是这个LOGO语言我只玩过这么一次,不过它在八九十年代中国还是流行过一阵的,作为少年儿童学习计算机编程的入门教材。那时候订阅的什么《电脑学习报》之类的刊物,就经常有用LOGO语言的范例。不过我自己家有了电脑之后直接就学习BASIC语言了。那个小乌龟只能存在于我的想象之中,但我肯定它也存在于每一个玩过LOGO的小孩的想象之中。相信每个这样的小孩都曾经想在哪儿亲眼看到那只乌龟的“真身”一次——而不只是被拙劣的显示器抽象成的三角形。我就这么想着想着转眼就长大了不想了。今天在Youtube看到一个视频,才知道原来大学里有那么一种学生课题就是制作真实的乌龟机器人,带上一个墨笔,根据电脑Logo代码运动。当我看到视频里那个机器乌龟慢慢爬行的时候,差点没忍住掉眼泪,好像什么毕生梦想终于成真了似的。
这里 还有希腊一所学校的机器龟课题网页。这里 有一篇非常难得的Apple II时代LOGO语言的图文介绍。
引自:http://www.sydlexia.com/logo.htm
在youtube找了一下又找到了七十年代美国小孩在计算机上玩LOGO语言的实况视频:
多好玩啊!我有时想现在的小孩绝对没办法体会我小时候的那种兴奋和乐趣了(尽管理性告诉我只要是小孩玩啥都会特兴奋特有乐趣,我的时代在这方面没什么特殊的)!
Windows 3.x版本的画图程序,在繁体中文版中叫做“调色盘”
其实我小时候跟这些美国小孩相比也不逊色的。我也懂用BASIC语言画画。我姨丈以前是在香港开电脑公司的,我小学六年级的时候有一次去香港(那时候去申请去一次香港探亲可不容易),我姨丈带着我这个大陆来的小朋友去他公司玩。那时候我自己家的电脑还是安装的DOS系统,可是他公司里的已经全部是Windows 3.1系统了。在上面可以用“调色板”(英文版叫Paint,简体中文版叫“画笔”,繁体中文板叫“调色板”)画画。画了一会儿就没意思了,我就问旁边的哥哥怎样进DOS,找到我熟悉的QBASIC来打发时间。我用LINE和CIRCLE等绘图语句在屏幕中间画了一个青蛙的头,两个眼珠按每秒间隔左右转动,然后还在屏幕右下角显示一个数字时钟。由于我学过手风琴,懂五线谱,我懂得用PLAY语句编写音乐字符串。电脑的PC speakerp突然响起音乐来,让在我右边干活的哥哥大吃一惊,我姨丈出来看了也很惊讶,觉得我人小本事却不小。那次从香港回来,我姨丈给了我一套用十几张3.5寸软盘拷贝的Windows 3.1繁体中文版带回广州安装,于是我算是我同龄人之中比较早接触Windows的人了,后来过了一两年内地才普及PWIN32。
由于我太迷电脑,有一段时间妈妈不让我开电脑。于是我只能通过看编程书上面的范例来解馋,这又无形中开扩了我的视野,一些简单的算法都是那时候了解的。加上没有电脑的话我必须在自己的脑子演算程序的实际运行效果,很多程序含有嵌套的条件判断和循环分支,这都极大的锻炼了我的记忆力和复杂思维能力。
由于我已经使用Windows了,但每次要编程都要回到DOS运行QBASIC,而且编的程序也只能在DOS环境下运行,渐渐地就觉得有点别扭。有一次,我问在中大学计算机的峰舅父,怎样编出在Windows下运行的程序。他说,要用Visual Basic。这是我第一次听说一种能编Windows程序的BASIC语言。但当我真正接触到他,就已经到高中了,Windows也已经升级到95。
我的高中同这徐立是参加校电脑小组的,我有一次去机房找他玩,他就跟我介绍了Visual Basic。他知道我已经很懂BASIC语言,但是在Visual Basic上实现一个程序,还是跟DOS下面的BASIC有很大的不同。他真是个极其牛逼的老师!我至今都知道他给我举的例子:一个文件浏览器。先放几个控件,然后利用控件的方法和属性,就可以很直观地设计我想要的功能,一个长得很像Windows程序的东西就这么做成了。之后我每次我脑子一下子转不过来的时候,想起徐立给我介绍的这个例子就马上转过来了。就这样,从老BASIC转到Visual BASIC,我几乎没遇到过什么困难。
高中在Visual Basic 5.0上尝试过很多小程序,但都是没有什么实用性的东西。直到高三,我买了希望出板社和Microsoft Press出的官司方教材:程序员手册和控件参考手册(其实就是把MSDN里的两份文本翻译成中文),啃了起来。通过这两本书,我理解了所谓“面向对象”的编程方法。上了本科,我在机房通过设计对象,来做了一个小游戏(可是有一些bug,并不完美)。大三大四的时候,我又学习VB+Access数据库编程,后来接触Visual Studio.net(6.0是ADO,.net升级为ADO.net,好用很多)。那时候,经济学院的一位老师找到了我,希望我帮她的博士课题做一个分析软件。她的课题是上市股票优劣性的一种评价方法(大致是这样吧,具体为一个公式),为了显示这种方法的好坏,她需要用若干年的原始数据来进行验证,这涉及到每年近千支股票(近千行),每个股票有十几个指标(十几列)。她的公式还是有条件和选择性的,因此不得不利用数据库编程。我最后成功地帮她做出了软件来,她给了我三百块钱。这算是我赚的第一桶金了(我整个大学就没去做过家教)。
其实到了那时候,学习编程的资料已经非常好找了。MSDN的盗版碟满街有卖的,那时我还经常上CSDN论坛上转呢。
读研之后,我已经不再经常编程了,但是有需要的时候我还会利用编程的技能做些小软件。例如,由于我喜欢听音乐睡觉,又没钱买MP3。就算我有Discman,但每次快睡着时候都要再醒过来把它关掉这点很不爽。我那时电脑里存有海量的古典音乐。我心想,假如能直接听我电脑的音乐睡觉,而且电脑音量能逐渐变小,最后自动关机,那就好了。在网上找来找去都找不到这样的软件,因此我就自己编了一个这样的软件,买根音频延长线从电脑拉到床上,终于实现了这一目的。这是本科时候的事情。硕士住西六的时候,陶洪有一次在外地让我给他编一个Timer程序,适合在学术会议上提醒演讲者用的。他上网找的界面不是很难看就是很卡通,或者声音很夸张,不适合学术会议的场合。希望我快点整个。我花一晚上时间把Visual Basic捡回来,弄了一个叫Lecture Time的东西,顺利实现。
今天看到LOGO的事,想起了以上这些,于是又禁不住搜索了一翻,发现2008年微软出了一个Small Basic 可在现在的Windows系统中使用。它是一个界面和功能都极其原始的编程工具,变量没有类和定义域,随便用(有点像Visual Basic里的Variant类型),功能调用延用Visual Basic的对象的模式,而且有些对象特别新潮(如Flickr对象)。具有基本的条件判断、循环和分支结构。这个是作为编程入门者学习的工具,它极大的免去了以往初学者不得不熟翻各种具体编程环境和语言关键词的麻烦(Small Basic只有14个关键词!),把初学者精力集中在最基本的程序概念上,同时又极其容易在屏幕实验(这又免去了界面动态的设计这一麻烦事)。
以下是胶体粒子运动的简单模拟程序,算是跟我现在的课题非常相关吧(2022年更新,以下程序已经不可用)。