刘炯(Sharpmark)的博客

v4.0 一个不怎么更新,又舍不得关掉的博客

编程五年(二)

这次写中学时期的编程学习历程。
考中学没有费什么事就轻松考上了。上了中学发现同班同学中有以前跟我一起学编程的刘晓亚。并在初中二年级的时候,家里给我买了我的第一台电脑。联想台式机。一万的价格(PII CPU+32M内存+3G硬盘……)。不过买回来以后我可没有用来编程。我只是用来玩游戏了,在玩的过程中也开始从感性角度了解了电脑,最开始我连硬盘和内存都分不清楚,慢慢的俨然一个电脑小高手。玩了一年,上了初三,迫于升学压力,妈妈又禁止我动电脑了。等顺利升入高中之后,电脑又重新归我了,高一赶上学校搞得“研究性学习”,我开始接触一些办公软件,作图软件等等,并尝试自学3DS Max,未果(你看机器配置就知道肯定未果了……)。高一的时候,还认识了一个计算机老师叫张鹏华。虽然他并没有教我们什么编程技巧,不过跟他在一起做研究性课题的时候,还是学到了很多电脑文化,在一定程度上打开了我的眼界并度过了很多快乐的时光(比如说他教我们MMX读做妈妈叉,PPT读做泡泡糖……)。我的上一个Space的名字SingSongForYou就是为了纪念他,而取自他原来的邮箱ID。听说他前几年去了北京,做了程序员,呵呵,祝他好运!

高二上学期的时候遇到了学校剩下的唯一的计算机老师付红燕老师。说句实话她的计算机水平并不如我,不过她依然是我的老师,我依然很尊重她。而且是她组织我们参加了NOI(全国大学生信息学奥林匹克竞赛),那时我跟刘晓亚参加了,我们也是在那个时候才开始真正熟悉了。高二上学期,我吸取上次NOI考试的教训,开始自学Pascal语言(因为语法优美、面向过程、运行速度快),接触了程序函数的相关概念,当时也疯写了一段时间的Pascal代码;并买了《离散数学》和《数据结构与算法》自学。那段日子很苦,除了高中的学习压力还要额外学东西。记得当时的体育课是自由活动,男生全部在外面玩篮球或者玩乒乓球,女生有一些也出去玩,玩什么我就不知道了,有一些女生在教室不愿出去。因为学算法的关系,我基本体育课也不出去,只有我一个男生坐在角落里面学习,她们则在教室里面疯玩、聊天。感觉很尴尬,真想冲出去,不过一直忍着,我需要学习。周末还要去上NOI比赛的备战班,一学就是一天。
到了年底,比赛终于开始了,4道题,之前只研究算法,居然不会读写文件,所以3、4题从文件中读数据的题目只好放弃了……{-_-#},前两题都做了。最后阅卷人运行程序的时候,第一题顺利通过,第二题前几个测试数据也通过了,最后一个运行后没有出来结果。我说“算了吧,可能是程序不行。”老师居然安慰我说:“没事,再等等……,你的算法是对的。”我说:“是我水平不行,算了吧,已经超时了。”所以最后老师终止了程序。因为我用的是递归而在规定时间没有出来结果,如果用非递归(人工实现堆栈调用)效率会快很多,就能算出结果了。很可惜,不过也没有办法,说明还是我的水平不到家。最终我拿了个省二等奖(省第12名),无缘晋级全国联赛。

比赛之后,因为以前的QBasic功底,学了点VB6编程,又通过付老师向学校借了本VB6的书开始自学,理解了诸如事件驱动的含义、控件等等。并做了一些小程序,现在还记得的是Click Me,猜数字等等,现在他们还躺在我的硬盘中。等到了下半学期,我的VB已经玩得很顺了(恩,是玩,还开发不了大程序),于是开发了一个计算器程序,并取了个很狂的名字“算遍天下”。一直做到0.4.4版左右。各种科学计算、进制转化、单位换算……,功能还是很强大的。当时很认真,把写完的程序打印出来,然后上课没事的时候拿出来研究研究,优化优化,反反复复写了N多个版本,并写了非常详细的注释。我现在的自认为比较良好的编程风格就是从那个时候开始的。随着“算遍天下”的完成,我也进入了高三,待遇与初三一样,一年不碰电脑……。于是我的编程之旅便再一次停滞了。

现在回头想想,如果我最初学的是C,可能我在高中的时候就能更早的接触C++了,会VC了。不会像现在一样还是VC入门阶段。当最开始教Basic的时候,就注定了我与Basic语言大系的不解之缘。高中的时候,因为计算机特长,在学校也算是小有名气了。更重要的是结识了很多志同道合的朋友,虽然他们中不是所有都在学编程,不过仍然能互相学习。张谦,永远比我快几拍,我总能从他身上学到好多东西,比如他高一用Baidu搜索mp3,我快高三才知道Baidu是个什么玩艺;刘晓亚,我们有相同的学习经历,总能在一起讨论有趣的问题,不过他比我聪明很多,现在在南京大学学软件,我们很久没有联系了,挺怀念跟他一起聊天的时光,不知道他近况如何。

高中时候,我在算法理论上有了些进步,但个人感觉不大。学VB的时候也没有抓住什么要领,过于钻于细节和满足于写出个小程序的成就感而迷失了方向,止步不前。不过在这个过程中,还是极大的锻炼了自己的自学能力和查资料的能力(高二的时候已经抱着MSDN猛看了……)。
细数编程的时间,只有一年而已。算算写的程序,Pascal的算法程序写过几十个,每个200行,约30*200=6000;计算器代码长度算过,是2000行,来回反复重写,所以总计约写了2000*2=4000行;其他的VB程序杂七杂八保存至今的写了也有2000行左右。共计约是12000行。(未完待续)

Comments