编程十年 (6):虚荣的C

高二的暑假里,我带着自己写的一些程序跑到发小儿家里显摆。他家里也买了电脑,其实他家的经济状况还不如我家,但因为比我晚买了半年,所以价钱便宜了将近一千块钱!性能也提升了不少,我的机器是赛扬366的CPU,14寸球面显示器;而他买的电脑配的是PII450 CPU,显示器也是17寸纯平的。那是新世纪的开始,正是计算机飞速普及和疯狂贬值的年代。

正是在他家里,我才第一次知道,虽然VB程序编译出来也是exe文件,但在没有安装VB的机器上也是不能运行的(后来知道,缺少的其实只是msvbvm.dll这个运行库)。还好QBasic是DOS自带的,而Windows 98又自带了一套DOS系统。无奈之下,只能给他秀一下QB写的一些东西。

谁知道这孙子明知道编程是个挺牛逼的活儿,还故作蛋定,一脸找抽地告诉我,你这个不牛逼,人家牛逼的人都用C语言。其实他甚至不知道编程语言是什么玩意儿,但不知道从哪听来的“C语言”,却正戳中我的软肋。那时的我并不知道编程的精髓在于算法、结构、模式乃至编程思想,而编程语言只是表达这些内涵和将其转变为产品的工具而已。我只知道,在学校里,会一门Basic语言就挺牛逼的,可以让虚荣心和成就感极度膨胀;而在学校外面,还有一种未知的、更牛逼的名叫“C语言”的语言,使我的虚荣心受到强烈打击。

为了“更牛逼”,我决定开始学习C语言。

和学Basic的时候一样,我认为首先要做的是买一本书看。在书店反复斟酌(当然,斟酌的不是书的质量,而是口袋里的银子)之后,我买了一本计算机二级考试的C语言教材。

人类在接触任何新事物的时候,总是会充满恐惧,有抵触心理。我也一样。其实我本打算利用暑假把整本书看完的,毕竟这是一本很薄的书。但是才开个头儿就看不下去了,因为VB的语法已经在我脑海里深深扎根,所以我很难接受C语言的一些写法。凭什么非得#include才能调用我最熟悉的print(注:此处没笔误)啊?好好的PRINT干嘛非要写成printf啊?变量名凭什么区分大小写啊?程序凭什么不从第一行开始执行,非要写个main函数啊……

于是很快我就丢掉了书,回到了Basic的怀抱,整日与电脑为伍。直到快开学了,补作业。

再开学就高三了,传说中的毕业班。我爸看到我假期里在电脑前废寝忘食的操(注:读一声)行,不由得非常之紧张;虽然他不知道编程和玩游戏的区别,但他很清楚在这上面搞的玩意儿高考是用不到的。所以,一开学就给我定了个规矩,今后只能周末用电脑,平时必须学习课堂知识;为了让我认真履行这个规矩,他还把主机箱拆下来放到他的床底下……

虽然在学习编程时,手边有一台计算机是很方便的,但有的时候,适当地离开计算机,看看书、在草稿纸上写写程序反而更有助于提高。

于是,为了我的虚荣心,我又一次开始了编程语言的学习历程,依然是看纸质书(并且只有一本),在纸上用笔写代码,只不过这时开始用水笔了,不再用铅笔了。至于学习时间,我选择了晚自习时间——为此,可是放弃了每天2个小时的娱乐时间啊……

不过,这简直是有百利而无一害,既避免了堕落,还学习了编程;更重要的是,让我能够攒下一些零用钱,有了腐败(上班后学到的一个词,指出去大吃大喝)的资本。那个时候已经学会了喝酒,而且自打高二下半学期以来,我学会了故作深沉、忧郁和无病呻吟。所以比起玩游戏,我更喜欢和哥们儿一起坐在马路边,吃一把羊肉串,喝几瓶啤酒。

奇怪的是,虽然我没比以前在学习上下更多功夫,学习成绩——或者说成绩排名——却慢慢提高了起来。由于不再逃课去网吧,而且每个晚自习都趴在桌子上写写画画的,老师自然以为是我突然觉悟了,竟然在期末考完试给我评了个“优秀进步生”,还在高三下学期的开学典礼上由校长给颁奖——奖品是废纸(奖状)一张加一摞横格本-_-|||

有些本来学习就不错的一些同学,也对我的变化感到了好奇。有一天晚自习的时候,班上第一名的MM突然蹿到我桌子前面问:“你复习什么呢?”我本来应该是被吓一跳的,可因为过于投入,变成了一脸茫然,然后脱口而出“C语言”。学习那么好的MM自然是没有听过这个词的,于是也一脸茫然。于是我们就相视而茫然。若干秒之后,她尴尬地举起物理练习册,说“问你个题”。

哦,对了,当时我是物理课代表,所以她问我物理问题也是很正常的情况。其实我喜欢物理,从高一起就开始争取物理课代表了,为的是抄作业方便。不过当时物理课代表被一个学习比我好的MM抢走了。后来我当课代表,是因为该MM当了班长;该MM当班长,是因为当时班长忙于谈恋爱,辞职了。

所以说,我的物理课代表只是徒有虚名,就像天上的浮云一样;而以眼前这道题的难度,身为学习第一的她,完全可以自己搞定。所以我的鉴定结果是,此乃刺探军情之伎俩而已。

有点跑题了,地球是圆的,跑着跑着就回来了,所以在此之前,我要继续跑。

其实,后来我也曾思考过,为什么那段时间学习成绩能上来一些呢?这也是高中生活带给我的唯一启发(其他学到的知识都还给老师了)。原因就是——大量重复。其实高中的新知识,高一一年就已经学得差不多了。到了高二,主要的任务就是应付会考(说白了就是副科的高考),先把副科都干掉;另外就是文理分班。等到了高三,基本上就是重复之前的知识。

这是一个很大的陷阱。学习好的同学会嫌烦,反正都会了,何必重复?学习不好的同学会侥幸,还会重复的、还会重复的、会重复的、重复的、复的、的……于是,会有一批人自甘堕落。而我——用我妈的话说——是一个奴性很强的人,非得鞭子抽着才干正事。而高中,或者说目前中国的整个教育,正是一个举着鞭子填鸭的过程。对于我来说,学的东西是不是重复无所谓,可千万不能让那根鞭子砸下来抽到我。

于是,顺水行舟,不退即进。不是爷进步了,是你们Y的退步啦。

不过,大量重复还是给我留下了深刻的印象。正是这种重复性训练,使我对书本知识掌握得越来越劳,颇有“顺手拈来”的感觉。这一点教育着我,在后来的工作历程中,我并不排斥“重复劳动”,当别人正在抱怨“每天都做一样的事”时,我只是思考“这次又做一次这个事,比上次有进步没有?”、“下次还能做得更好点不?”

跑题结束。

就是这样,为了我的虚荣心,我把一整个学年的晚自习卖给了C语言。

其实,当时我每周末还是可以用一用电脑的,但整个高三一年,我却没有编译过一个C程序。由于我用的书是计算机二级考试教材,上面有介绍上机考试的内容,书里面给了一些上机考试的截图,现在看很明显是Turbo C的界面;但当时我并没有见过Turbo C,只是觉得这个界面看上去很像QBasic啊。于是我天真地在QBasic里一行行键入我写的代码,结果自然是无法运行。

后来我在重装操作系统时,因为最初表哥给我的Visual Basic安装盘已经坏菜了,所以我不得不去电脑市场再买一张,这个时候我见到了Visual Studio,它的封面上写着Visual Basic、Visual C++和Visual FoxPro。由于没有卖单独的Visual Basic安装盘的,我犹豫了一下,还是买下了这张Visual Studio。

不过我一直也没想到,这里面的所谓Visual C++,正是微软公司出的C++开发环境,而C++在一定程度上和C是兼容的,至少兼容我写那些破程序是没问题的。于是,我与C++失之交臂。而再次相遇时,她已略显人老珠黄,而年轻的C#则如出水芙蓉般博得了我的爱恋。

那个时候根本没有编译器、IDE的概念,不知道不同的语言是要不同的编译器来编译的,也不知道QBasic也好,Turbo C也好,还是后来的Visual Studio,都是IDE环境。不过幸好,程序的无法运行并没有打击到我,反正高三也没什么事,继续学呗。就这样,我坚持了下来。

作者: Anders Liu 发表于 2011-04-24 21:30 原文链接

推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架
新浪微博粉丝精灵,刷粉丝、刷评论、刷转发、企业商家微博营销必备工具"