2009年6月17日

IT 迷途 (5)

帝都归来,L 老师颇严肃地对我们说,要开始学习"真正的编程"了——用 BASIC 解题。

后来我才知道,能称得上"真正的编程",在于这是奥赛五项之一,大号信息学,理论上跟"走遍天下都不怕"的数理化享受同等待遇。

无论是 BASIC 还是算法,连 L 老师自己也是勉力摸索。给我们讲 BASIC 讲算法,他的办法是依托教材讲语言,然后以题为纲,放任在我们把玩、体会语言的过程中悟算法。

遇到难题,L 老师会尽量用自己的资源去寻找解法,但更多还是依靠自己。小强们以独破难题为荣,以攀比解法为乐。用 L 老师的话讲,能者为师。

得益于这样"开放"的教学方式,我们不仅是解题能力在进步,对于 Apple BASIC 本身的挖掘也越来越多。例如 Ctrl+Shift+P(快速输入 PRINT)等快捷键,例如在尝试更多快捷键的时候找到的 FLASH/INVERSE/NORMAL、VTAB/HTAB 等绝少有书提及的语句,例如 FOR 循环最多只能嵌套 8 层的机能限制,例如 Ctrl+黑苹果+Reset 可以进行自检,例如 PRINT CHR$(4);"CATALOG" 这样在 BASIC 代码里调用磁盘命令的技巧等等等等,只要不是玩得太疯,L 老师并不干预。

此时 L 老师已给我们每人准备了一张个人专用磁盘(Janus 牌的 5 寸低密盘,双面容量 360k,外观如下图),用于存放解题代码。在发放软盘的那个神圣的时刻,L 老师颇自豪地说,磁盘能存很多东西,即使到你们毕业,这张盘也装不满云云。事实证明这类话通常都不靠谱。即使有指甲刀开口的神奇(单磁头软驱无法直接使用 软盘的背面,所以可以手动把磁盘翻过来开写窗再利用),毕业时我的代码也塞满了两张软盘。至于之后不久数据拷贝之风吹满地,软盘走下神坛飞入我等寻常小强 家,则是后话。



起初,我们是每天下午两节课后(14:30)去微机组训练,直到放学。后来,为了备赛,竟得以停课集训。至于落下的文化课,L 老师翻了翻五年级的课本,撇撇嘴说就这点东西我给你们讲就行,然后花了一个星期讲完了五年级的数学内容。

不用上课,极少考试,每天都泡在微机室里研究"奇技淫巧",而且理由冠冕堂皇,这段时光我终生难忘,甚感幸运。

1992 年的 J 市青少年计算机竞赛,是我第一次参加奥赛系统的比赛。很紧张。上午漫长的笔试,因为实在忍不住要去厕所而不得不提前交卷(EQ!EQ!)。下午上机,并不 很大的屋子里满满摆了一圈的 Apple IIe,大家面壁环坐。题目公布之后,每个人都蓄势待发,左食指抚 F 键,右食指抚 J 键,俨然高手对决,争分夺秒。一声令下,噼里啪啦夹杂着大力敲打空格键的"哐哐"之声立即此起彼伏,场景颇壮观。由于备战充分,上机题目对我来说并无难 度。看到某题,按正常思路要用到 9 层循环。偷偷瞄了一眼旁边几个正在调试代码的外校选手,无不是在盯着一排整齐的 FOR 语句和 RUN 起来从未见过的错误提示而困惑不已。我不由心下窃喜。这次比赛,我拿到了 J 市小学组的个人总分第七名。

至 1992 年暑假,赴 S 市参加东北城市少儿计算机竞赛。大概属于少年宫编制的这次比赛很诡异。赛前很久,赛题和规则竟然就以明文下发:大概要做一个类似现在的数据库应用程序,实 现简单的增删改查。如今回想起来,这种应用型的竞赛之所以开卷,大抵是为了参赛队伍进行技术攻关,实现数据的磁盘存储、检索等。但当年的题目描述却没有明 确说明,典型的需求不清;而当年的我也绝没有水平理解到这个程度。组里讨论来讨论去,一致觉得此题颇易。于是比赛变成了:代码烂熟于胸,跑到 S 市,上机飞速录入,举手示意答题完毕(提前有加分,我第一个举的手,两小时的规定时间我大概只用了二十分钟)。当然,我也只是实现了基于数组存储的增删改 查,数据的生命周期和应用程序等长,根本没有数据持续存储的一行代码。赛后组委会开了很长时间的会。大抵是没有料到我们会做出这么个东西来,而回头看题目 确实又语焉不详。开会的结果,我们拿了一等奖。能有这个结果,大概其他选手交出来的东西也都多少偏离了题目的初衷。

对于我停课集训一事,班主任一直颇有微词。有了这样的成绩单,无论是我还是 L 老师都可以无虞了。
发表评论