我的程序人生(二)--被动的发展
与许多始终热爱编程的朋友(如unruledboy )不一样,刚开始的时候,我更多的是为了学而学。但是,从程序编写中获益的东西的确不少。
首先就是程序思想。在捣腾AppleII一体机上的固化BASIC的过程中,学会了把问题转化成程序模型,这一点很重要,熟练以后,接下来几年的数学课的解应用题,对我来讲就跟小孩子玩泥沙差不多(那时我也还是小孩子吧??)。那个年龄段的学习习惯和长大后不一样,更多的是评直觉而不是逻辑和推演,我一直认为,正是这段时间对程序思想的学习决定了我以后的编程习惯,甚至对其他领域的思考习惯也或多或少地受到影响。为了应付接下来的计算机比赛,老师确实找了许多稀奇古怪的题目给我们编程解决,我想,这就是最初级的“数学建模”吧。
AppleII机很快就退出历史舞台了,另一位主角粉末登场。小学新校区落成后,我们迎来了IBM XT/AT机型,就是8088/8086机型了,那时候我已经六年级,理所当然地成为学校“计算机兴趣小组”的“老大”。我们的学习对象也从BASIC转移到DOS操作系统和在其上运行的LOGO语言。操纵那只古怪的“海龟”在屏幕上画图,确实也是蛮有意思的。其中最大的收获是学会了第归算法,通过“海龟”在屏幕上的形象显现,第归算法变得更容易理解了。
六年机毕业的时候(1992年),我接触计算机已经三年了,但是都没有离开过老师指引的领域,只知道LOGO、BASIC、和一些基本的DOS命令,对计算机的其他东西依然一无所知,甚至连个具体的概念都没有。但是,知道初中没有电脑课后,我就迫不及待死缠烂打地让老爸给我买了第一台计算机IBM XT(8088)兼容机,花费2600元,这在当时可是不少的一笔钱。不过当时我们镇上拥有自己的计算机的人,特别是学生,是非常稀有的。拥有了自己的计算机后,我才真正开始了对计算机技术的主动探索,也正是这段时期,才是我在计算机领域的真正入门。
很难想象这样一台计算机居然要2600元,它配有一个25行80个字符的单色显示器,8088 8MHz的CPU,640K的内存,双5寸低密软驱,就是能读又大又黑只有360K容量的盘片的那种软驱。配有DOS3.3,CCDOS2.0操作系统,后来我自己又用节省回来的压岁钱,用昂贵的价格买了LOGO,TrueBASIC,PASCAL,PCTools,DBASE III,Lotus1-2-3,WordStar(金山公司的东西,最早的字处理软件,我一直怀疑它就是WPS的前身),KV300等软件,天知道这些东西是不是正版的。
先是研究CCDOS,这个东西让我第一次在电脑上看见汉字,当时可兴奋了,厉害的是在它上面运行的TrueBasic居然也支持汉字字符串了,可惜LOGO、PASCAL不可以,然后它居然是窗口界面的,这是我第一次看见窗口界面的软件,就是不知道它是否支持鼠标。当时觉得非常神奇,直到高中的时候,我用PASICAL和汇编程序成功模拟出它这种最原始的窗口效果(说白了就是调用中断处理程序直接向显示缓存里面画窗口和菜单的样式,利用一些反白显示,捕获键盘按键来更新菜单等小技巧来虚拟,同Win3.1的呈现的窗体概念完全是两码事),才缓解了我的热情。
LOGO后来就没有多大兴趣了,因为没什么用,谁吃饱没事去画线条图呢?发现PASCAL和TrueBASIC越来越好玩,特别是一些高级功能,我甚至用BASIC写了一个蛮大(反正那时候的程序怎么大也很少超过100K的,整个DOS3.3的核心才放在一个360K的盘上)的综合管理程序,里面含括了许多小功能,比如游戏啊,迷宫啊,出题机啊,音乐库啊什么的,^_^,现在想来,那是我第一个门户系统哦(Portal,可惜不是门户网站)。
然后就是迷上汇编了,用DEBUG和PCTools,我可以做很多奇怪的东西,修改FAT分配表,让文件加密;直接写屏幕,在西文状态下显示中文;改游戏,让我无敌;直接让喇叭乱响。。。当时觉得难度最大的是研究dBaseIII,可能当时对数据库还是缺乏概念吧,总之老是似懂非懂,到现在我也说不清dBaseIII是个什么概念(谁知道的告诉我一声,我当时只会在上面写写程序而已),还有Lotus1-2-3也是让人费解的东西,觉得比较难用。倒是DOS3.3就被我摸透了,而且始终对它很有感情,大学的时候,还专门找来源代码研究了半天。
直到现在,每次看到写好的,动不动就几十兆的程序,还有那些上G的应用程序或者操作系统,我就怀念当初以K为单位的DOS时代。那是面向过程的、结构化编程的时代,那个时候,我和许多人一样,根本就不会意识到与“框架”、“对象”等概念相关的任何东西。