编程——极有趣的游戏
老夫上班时天天编程,一坐四小时不挪窝,旁观者无不以为俺“任劳任怨”“吃大苦流大汗”,年年评先进,俺私下窃笑:“其实老夫天天玩游戏呢,哈哈!”
编程者都深知其中乐趣,但很少有人愿意把这快乐写出来,让众人知晓。
老夫接触电脑还是八十年代中期,大概算中国最早玩电脑的一批人。那时有些单位才刚刚开始有电脑,一台IBM两万,连我们科研单位都买不起,我先弄本谭浩强的《BASIC语言》学着,发现就跟解几何题似的,趣味无穷。
后来给儿子买了架中华学习机,开始给儿子编游戏程序,有了真东西,就更好玩了。
我当年买的中华学习机就这个样子,现在任何地方都看不到了
程序语言不过一些英语单词,但前后连起来就等于给电脑下一串命令,让它干什么就得干什么。我上学时学的是俄语,幸亏三十来岁自学了两本广播英语,后来搞编程全用上了,一点没糟践。
那时编了个《猫捉老鼠》游戏,给“老鼠”整一个“随机函数”,让它瞎蹦乱跳。连我自己都猜不到它下一步会往哪儿跳,然后用鼠标控制“猫”去捉“鼠”,儿子玩得不亦乐乎。
后来儿子发现那老鼠有时候“挺傻”,自己会往猫嘴里钻。我当然明白,其实那就是随机函数干的,随机乱跳,恰好跳进猫嘴里。
又编个《五子棋》游戏,我跟不会下棋的妹夫下着玩,几盘撕杀下来,我已丢盔卸甲。
我编的五子棋游戏还要更好看一些
再编个《画笔》游戏,就跟现在电脑上的《画笔游戏》差不多,而且还设计出压缩存储功能,让爱画画的儿子画着玩,连饭都不想吃了。
后来开始搞汉字编码发明,就正式干上了电脑编程工作,那就不光是业余编编游戏了,而是做数据库,一干就干到退休,做了数不清的数据库。
有次我做了一个软件,配一个封面,我设想用数据库语言编成一个月球绕地球转的动画图象,这比用动画软件FLASH编制难多了。而且不是平面的,是那种立体空间的,有近大远小的透视感觉。我给月球搞一个椭圆轨道,当转到离读者近的地方时,月球最大,越转越远,也就越小,而且近处转得快,远处转得慢,看起来就跟我们真的看一个天体模型似的。我只须调整程序中的数值,转圈就能按照我的设想运行。
最好玩的是,我让月球转到近处时,变成暖橙色,越远就越冷,从暖橙色慢慢变黄,变绿,变蓝,给人感觉极像是远去了,到了天尽头似的。其实,这里不过是把月球的颜色值搞成一个函数,随着在椭圆上的位置而变化。
那时我感觉电脑好玩极了,不管多奇妙的场景,只要你能想象出来,就能做出来。天天编程,乐此不疲。
当时自己做动画,把我画的画一帧一帧连起来,立刻就能动了,活了。我为了教游泳,编了个游泳教材,其中就做了一段蛙泳动画,那个游泳者手脚配合,动作绝对标准,而且还能翻脚掌,旁观者看了觉得奇怪,不知道那脚掌是怎么翻过去的。为了感觉真的在往前游,加了个背景,只要背景不断往后跑,就感觉游泳者好像不断前进似的。
这是我制作的水中站立动画
后来玩C语言,这家伙功能强大。我用这种语言编了个电子琴,利用电脑键盘就能弹琴,自己扣个耳机听着玩,太有趣了。黑键白键全有,各种半音都能弹出来,最厉害的是能变36个调,只要直接点击“>”键和“<”键就能升调和降调,比正规买的高级电子琴变调还方便。而变调功能是我通过一个简单函数在程序中实现的。
通过编这段电子琴程序,我可以想见,即使高级电子琴里的程序也不过如此,只要有材料,我完全可以自己制作一架电子琴出来。起码软件部分没问题。
数据库那玩艺儿更好玩,成千上万的信息放进去,查得好不好,全看编程技巧。临退休编了四大数据库——中国古代诗词库、中国古文库、四大名著库、鲁迅著作库。这四个库非常适合于搞文学研究的人用。
我编的诗词库
比如你研究《红楼梦》,想知道随便某个不起眼的丫鬟,比如宝玉的小丫鬟“坠儿”,非常不起眼,谁都不注意。如果我们要想知道她从哪一回开始出现,哪一回结束,总共出现了多少次,每次都有什么言行,要用人工方法查找,恐怕几天也不一定查得精确。而用我的库,只要一两秒,全部结果都列得清清楚楚。
于是我们知道,“坠儿”这个词最早出现于第26回,在这一回共出现了15次,而第一次是:
“"林姐姐,你在这里作什么呢?"红玉抬头见是小丫头子坠儿。”
最后一次出现在第60回,这一回中只出现了一次:
“一个是红玉的,琏二奶奶要去还没给人来,一个是坠儿的,也还没补。”
数据库不但能把每次“坠儿”的言行查得清清楚楚,而且还能给出统计表:
------------------------------------------------------------
回目
词组
出现次数
------------------------------------------------------------
第二十六回
坠儿
15
第二十七回
坠儿
5
第二十八回
坠儿
1
第三十五回
坠儿
1
第五十二回
坠儿
11
第五十三回
坠儿
1
第五十八回
坠儿
1
第六十回
坠儿
1
------------------------------------------------------------
总计
坠儿
36
连这样没人注意的小丫头都能查得一清二楚,那些主要人物,比如宝黛钗三位,要想完全查清就更没问题了。
极不起眼的坠儿
我再举个例子,比如我现在想知道在《三国演义》中“白蛇”这个词共出现了几次,在第几回,每次都说了些什么,只要一两秒就能得到如下结果:
========================
三国集句─《白蛇》
单词集句共3句
周末七国分争,并入于秦;及秦灭之后,楚、汉分争,又并入于汉;汉朝自高祖斩白蛇而起义,一统天下,后来光武中兴,传至献帝,遂分为三国。
──《第一回》《宴桃园豪杰三结义
斩黄巾英雄首立功》记录号:1
血流芒砀白蛇亡,赤帜纵横游四方。
──《第十四回》《曹孟德移驾幸许都
吕奉先乘夜袭徐郡》记录号:14
高皇手提三尺雪,芒砀白蛇夜流血;平秦灭楚入咸阳,二百年前几断绝。
──《第三十八回》《定三分隆中决策
战长江孙氏报仇》记录号:38
------------------------------------------------------------
回目
词组
出现次数
------------------------------------------------------------
第一回
白蛇
1
第十四回
白蛇
1
第三十八回
白蛇
1
------------------------------------------------------------
总计
白蛇
3
=================================
再比如在中国现存十万首古诗词中,要想查找既含“黄河”又含“昆仑”的诗,而且还得保证这两个词在同一行,或同一句中,要彻底查遍一个不许漏,恐怕非常困难,但用我的库,几秒钟就得,全部列出表来,而且诗名、作者、朝代全部记录在案。
比如这两个词出现在同一行的情况如下:
黄河但东注,不见归昆仑。
黄河西来决昆仑,咆吼万里触龙门。
如果要求更高一些,要求这两个词必须出现在同一句中,则有:
黄河西来决昆仑。
黄河万里昆仑来。
这么好的软件却无法推广出去,我免费推荐给我的文科同学,可惜这些榆木疙瘩对电脑一窍不通,只好我自己天天在家偷着乐。
编程对我的吸引力大到什么程度?一进入状态后,整天满脑子都是程序,晚上睡觉脑子里肯定也是一行行英语单词,甚至去水库游泳,还在一边游一边编程,一趟横渡回来,一段程序就编好了,回去输入、调试,立刻就想看到结果。
当然,编程也有苦恼的时候,有时明明编得很清楚,但就是运行不了,总出错,还不知道错在哪里。一开始总以为也许软件有问题,后来把毛病找出来后,才知道还是自己错了。这时我才发现,人脑在逻辑思维的精确性,严密性上,远远不如电脑。通过这样长期训练,我们的逻辑思维也就一步步变得更严密更精确。
加载中,请稍候......