分享按钮

[转载]我为什么学ACM

[转载]我为什么学ACM

 
 
写在转载前:刚刚看完一篇文章,我几乎眼泪都要下来了,有多少人懂得,做技术的人他们的精神,有多少人懂得,值得和热爱,这四个字对于一个纯技术的人来讲,是多么的高贵,你们懂么?懂么?希望我们能够更加的去懂得,希望我们身边的人能够懂得。
 
 时间过得真快,大三的上学期就要过去了,可以说这半年来,我只做了一件事,那就是准备并参加ACM-ICPC国际大学生程序设计竞赛。
  做任何事情无论是对是错,都必须好好思考总结一番,如果我做错了,我应该吸取教训,改正错误;如果我是对的,那我应该再接再厉,取得更大的进步。
  为了这件事,我耽误了这学期的课程学习,经过几个月的准备,我参加了亚洲区北京赛区的比赛,获得优胜奖;还参加了西安赛区的比赛,获得三等奖。成绩并不出众。这里就要问了,我浪费了宝贵的大三时间换来的这个成绩值得么,或者更进一步,我们搞ACM这项比赛值得么?
  我无法把握未来,我无法判断这样做究竟是对是错,周围的同学大都进入了实验室进行项目开发,而我却很多东西还都不知道。ACM似乎有种魔力,即使比赛完了,每天我仍忍不住放下功课跑到POJ上去看看,有种拿到题目敲代码的冲动。我真是走火入魔了,我现在还想着如何学习提高自己的ACM实力,想着明年的比赛弥补今年的遗憾,我甚至列出了个长长的书单来:人工智能、组合数学、数论、计算几何、动态规划……做好了学习计划,把一切抛之脑后。难道它比考研还重要么?我虽然不知道ICPC是不是真的有那么好,那么有一点我知道,那就是我已经深深地喜欢上了这项比赛,或者说,不是比赛,而是一个活动,一个过程,因为我得到的乐趣并不是与别人竞争赢得比赛的喜悦,而是挑战自己得到的成就感!
  POJ上有一篇著名的帖子,题目就叫“搞ACM值得么?”回帖者达数百人之多。很多帖子内容我已经记不大清楚了,但有一个人的留言给我留下了深刻的印象,他说虽然不知道自己做的值得不值得,反正他在编程时他的同学们都在打电子游戏。我想,搞ACM总比玩游戏要好的多吧。而我也真真正正地乐在其中,最近半年来我玩游戏的时间还不到5个小时,我已经把做ACM当作是打电子游戏,每做出一题的喜悦之情真是难以形容,这种感觉我想只有那些我的同道中人才能体会吧。
  每年比赛完,就会看到来自各个学校的ACM选手一篇又一篇的“退役宣言”。其中不乏辛酸苦辣,每个人都是为着自己深爱的ACM而付出了太多。ACM值得么?“当我们主力队员中的一个,一个月拼命集训,瘦了很多的时候,突然,我有一种哭的冲动。我问他,为什么?他告诉我:我喜欢ACM。也许是个傻傻的理由,但是就是这句话让我一直留在了这里,并且为了这个梦奋斗着。”——摘自《弱校ACM奋斗史》
  我觉得,我并没有错,和大家一样,做着正确的事情。
  参加ICPC比赛究竟有什么提高呢?我想有以下几个方面的进步是可以肯定的:第一是可以提高对编程语言的熟悉程度,在对时间空间要求非常严格的编程比赛上,对编程语言越熟悉越能编写出高效的代码;第二可以提高编写代码的能力,你可以一次写多少行的代码并且保证其正确性?你可以在一个小时中写出多少行的代码?如果你有意识的训练自己的话,还可以养成好的编程习惯和代码风格;第三点是对数据结构与算法的掌握,这个是最重要的一条,稍后将重点介绍;最后一点是,比赛是3人一组5小时做8~10题,无论是团队协作还是临场决策都对比赛结果产生重大影响,如果这方面做得好的话可以发挥出队150%的水平,当今的社会不再是个人英雄的社会,是一个讲究团队合作的社会!
  算法重要么?算法已经死了么?现在的软件开发环境如此发达,很多代码都可以自动生成,使用算法的时候只需要套用就可以了,算法似乎不再重要,学习更多的语言,掌握最新潮的开发技术似乎才是我们应该走的路。
  真的是这样么?难道计算机专业的学生就应该只学习一下语言和开发技术么?我总觉得不对,我也动手做过几个小项目,给我的感觉是,这样的工作本质上和学习WORD,EXCEL什么的没有什么区别,只是一种熟练工,做的多了自然就熟,这种东西做出来最多只有一个美丽的外壳,内部其实空虚无比,其实这点也很有意思,完全符合了很多人的审美观点,但这个不是我的追求。虽然程序员是个蓝领,但我想做个不断提高的蓝领,我不愿意总做这样的机械工作。用武侠小说里的东西来打个比方吧,学习了这些,就好比学习了精妙的“招式”,但无论如何巧妙,这是个好看而已,无法发挥其真正的用处来。
  当然,对于很多专业比较强的同学开始进行新技术的学习乃至项目的开发,我认为是一种很正确的选择,对于他们来说,这种东西已经不简单是华丽的外壳,或者说是精妙的“招式”,他们已经有了深厚的“内功”,使起“招式”威力巨大。但对我来说是学不来的,他们在中学时期已经有了很深的计算机基础,甚至就是搞信息学竞赛报送上的大学。他们已经具有了很扎实的“内功”,这时他们的选择就不是所谓的“机械的熟练工”了,有了“内功”,再学“招式”,才是成为“大侠”的正道。这话说的很像“以气御剑”的伪君子岳不群的话,但我认为在这里,这句话并没有错,起码我还不能领悟风清扬“无招胜有招”的精神,因为我本就是个悟性平平的笨人。
  而这个“内功”,我想就是深厚基础。比如:好的代码风格,好的编程思想,深厚的数学功底,还有就是能灵活运用各种算法等等。对于我来说,需要的是不急不躁苦练“内功”,再去修炼“招式”。我曾在实验室待过短暂的一周,除了还要做ACM时间不够的原因外,“内功”不足也是一个退出的原因。对于初学计算机的我来说,首先要有个非常好的代码能力,再去说其他的。
  算法真的死了么?不能吧。ACM这个竞赛一年比一年火不就说明了算法强大的生命力么?而且,这项比赛多家国际著名IT企业能曾赞助或是正在赞助,而且ACM的获奖选手可以得到一份更好的工作也是一个不争的事实。是啊,什么软件不需要算法啊,难道你就满足于做个网站或是个什么小型管理系统么?在我眼中,这些东西应该由非专业人士来做才对。其实即使在我眼中,那些有了“内功”开始搞“招式”的人还不够完美。有些中学搞竞赛的朋友对我说他大学不想再搞竞赛,那么,难道他们的“内功”已经练够了?到顶了?肯定不是,只要清华的楼天城还在搞ACM,我想就没有人有资格说“算法学够了”这种话。(楼天城是2004IOI金牌得主,中国ACM界的统治性人物,他所在队伍获得了今年的上海赛区和西安赛区的冠军——注)内外兼修,才是正道。
  以前我一直很迷茫,以为我在死胡同中。现在我发现似乎已经走出了胡同,只不过天还是黑的我看不到出口而已,等待一下就好了。只有英雄才会耐住寂寞,我相信收获果实的那一天终将会到来!
 
posted @ 2012-05-02 17:23  草莓在努力  阅读(534)  评论(2编辑  收藏  举报