我是怎样练会编程的

2019-07-07

我上大学那会儿,学校里教的第一门编程语言,基本上都是谭浩强编的 C 语言教材,入门经历通常不会很愉快。因为 C 语言这东西,看不见摸不着的,常常在机房里坐半天,对着蓝屏的 Turbo C 一顿忙活,最后只打印出来一行数字。成就感与付出的努力不成正比。

我刚学 C 语言的时候,也同样很困惑,期末考试都是踉踉跄跄通过的。后来自己买了本 《C++ Primer》,一头扎进书海才逐渐摸到了代码的感觉。

不过要说能让编程水平突飞猛进的,还是算法比赛。差不多读大三的时候,我的高中同学孙忱说,他在一个网站上答题,推荐我也试试。这个网站就是下面截图的 PKU Online Judge

网站的界面还和十几年前一样,貌似已经很久不维护了。我记得自己的账号是 dc10101,却早就忘了密码,遗憾的是这个网站并没有找回密码的功能。不过还是能通过只输入用户名就查到用户信息,包括总排名和答对了哪些题。

我一共做对了十八道题,最后一次登录是在 2008-03-17 08:40:46,我查了一下日历,那是一个周一的早晨。当时的我在沈阳东软工作,正给中移动做一个垃圾短信过滤的项目。不知道那天早晨为什么会登录这个网站。仅两个月后的 5 月 12 日也同样是星期一,汶川发生了大地震。那年发生的大事一个接一个让人喘不过气。

人都有好胜心。在好胜心驱使下,就不惜吃苦受累,从而突破自己的边界。我知道孙忱在 Online Judge 做题以后,也暗暗使劲,想做出点成绩让人看得起。有那么一阵子,脑子里只有解题,到哪都带张纸写写画画。不久之后,我的做题数量就超过了孙忱,也就逐渐失去动力了。

尽管 PKU Online Judge 连找回密码的功能都没有,却有一个类似用户 PK 的功能:输入两个人的用户名,列出两人的做题对比:

在上面做过 18 道题后,我算彻底跨过了编程的门槛,非常幸运。而相比之下我的很多同学大四毕业也没能入门,只好放弃了当程序员。

刷题可以保持头脑敏锐。若是新学一门语言,刷刷题有助于巩固语法的熟练度,总的来说益处多多。何况现在有 leetcode 这么好的平台,比当年我刷题用的 PKU Online Judge 不知好到哪里去了。

END