再谈ACM/ICPC

作者: yangzhe1991 分类: 我是搞技术的 发布时间: 2011-08-14 12:41 ė 613条评论

之前写过一篇文章,大致说了我对ACM的看法。现在正好是集训,又各种纠结,恰好看到这个这个两篇文章,于是决定再讲讲。

我对ACM的情感、动机跟绝大多数人不一样。最主要是源于高中NOIP的悲剧和拿着PHO保送资格却高考差一分掉档补录到东大的SB,说白了就是怨念,想证明自己而已。后来因为稀里糊涂的成了管理者或者类似的地位,想退出已然不取决于自己的想法,就不是很自由了。

ACM带给我什么在我最后两次regional结束前还不得而知,因为如果我能拿到银奖,其作用将比去年的铜奖大很多。没错,对于我来说ACM要的也就是结果而非过程。如果有银奖,申请美国学校、在国内找实习和工作的机会都会增加不少,甚至可能是“一票通过权”的优势。我搞ACM的动机并不是因为功利,但事实上对我来说如果指望ACM能带给我什么,那么我需要的也只是结果。

我在roba大牛的日志里回过,ACMer遇到的问题,与高中各科竞赛类似:为了竞赛而学习比较深层次的知识(相对来说),拥有大量做题带来的经验,但致命的是除了顶尖高中生竞赛选手和顶尖大学的ACMer之外,其余所有人学习的知识非常不系统,尤其是数学上的。比如我高中学物理竞赛,确实知道了很多大学需要的知识,力热声光电磁相对论,但因为PHO不要求掌握高等数学,实际上已经限制了对物理的理解。作为一个真心热爱物理的人,当时我就有一个想法,那就是大学一定要把高中草草学的这点物理知识系统化,无奈补录到了一个不学物理的软件工程专业,这辈子跟物理越来越远。ACM/OI更是如此,排除牛校牛人,对于我等众人来说,学习算法是真,可是对数学的学习仅仅局限于数据结构/离散数学中提及的数学知识,可能因为ACM要有数论题而稍微看点数论和组合数学,具体数学能看进去的人也不多。到最后,ACMer的数学功底并没有因为ACM的训练而提高多少,对算法的理解甚至可能只局限于套模板(包括我在内)。这对于想从事算法研究的人来说,无论是在公司为了某个任务做优化,还是在研究机构发paper,都是致命的。

ACM除了算法之外,带来的间接好处是可以提高编程能力。但很明显提升编程能力的主要途径就是去编程,至于写什么样的代码,什么语言的代码区别不是很大。或者说,按照我招新的时候对新生的解释,ACM起码可以提供一个锻炼写代码的机会。对于有项目、能找到老师做项目哪怕是当免费劳动力的人来说,他们并不需要ACM来提升“编程能力”。甚至那些项目因为更接近日后工作的码农日常作业而锻炼的价值更大。码农是个需要经验的熟练工种,这个没人否认吧。至于很多人说的代码不规范,因为我没接触过实际的团队项目开发,也没看过太多的工程代码,暂时不能评价,但我觉得对于真正有能力的coder来说,习惯是可以改的。公司招应届生估计也会倾向于招“有潜力的可塑之才”而不一定非要能拿来就用的。

当然,有潜力并且现在已经好用的当然就是极品。可这显然跟搞不搞ACM无关。

我说过,我认为ACM是一种竞技。确实刷poj可以当成娱乐活动,锻炼脑子和手指头。但想参加比赛付出的经历远非“锻炼身体”能比。因此我曾经说过“ACM不是谁都能搞的”。或者说,搞ACM的人不能变牛,起码是不搞ACM也能很牛,但不牛的人搞ACM确实有些浪费时间。ACM就是牛人间的游戏性质的较量。牛和不牛的临界点在哪里我说不清楚,暂且划在能否得亚洲赛铜牌这个档次。省级、地区级的比赛虽然有,但毕竟含金量不大,那种ACM开展特别好的学校或者牛校甚至可能刷了很多题都不能进校队,这样的人我觉得,从什么人生的角度,什么重在参与啊,努力和尽力了就可以啊什么的,算是值得的,但实际上真的不值得。同样的付出,人家有证书作为证明,你没有。而所谓潜移默化提升的能力却并不是那么显著,或者说同样的时间完全可以做其他的事情带来同样的更大的提升。就算是想研究算法,也大可不必刷poj的题目,作为一个稍微通过各种渠道研究过一些算法还发了两篇凑数的国际会议论文的人,我只能说研究算法和ACM是两码事。

我把ACM形容的比较功利,但首先前提是ACM依然是我接触的大学里所有比赛中最公平、最锻炼能力的。在我看来,ACM这种准备时间长、比赛时间短、评价体系又绝对避免主观判断的应该是最锻炼人能力也最有说服力的。因此如果想参加比赛,ACM应该还是CS类专业的首选。但我不是在说ACM是否有价值,而是ACM是否是最有价值的事情。显然不是。ACM就是一种游戏,可以让人痴迷,可以让人形成一种容不得别人说ACM不好的圈子,但游戏终究是游戏。浙大今年夺冠之后cnbeta上一群人冷嘲热讽,我们看着当然不爽,但他们说的毕竟没什么错——不就是比做题么,中国人当然厉害,号称最聪明的人,怎么做不出什么科研成果。

从我们学校的ACMer毕业的情况看,offer都还不错,肯定是学校学院平均水平之上而且上很多——正如我后来在roba日志里回复一个人说的,搞ACM的人本身都是上进的,只要上进水平一定比不上进的高很多,而在我们这个普通985的学校里,上进者的比例不超过三分之一,要是看后面的学校绝对不到20%。重要的是去看,他们拿offer的原因是否是因为ACM。可以肯定的是,ACM的经历让他们更容易被公司相中,因为“平均水平”高一些,起码觉得搞ACM的更有可能靠谱,尤其是编码能力这种无法体现在简历上的。但我相信如果单纯凭借那些ACM的经历,而没有跟老师做项目或者实习的时候带来的收获,一定很可能悲剧,尤其是我们最近7年最好成绩也只是铜牌,一些学长最好成绩只是东北四省赛一等奖的前提下。

也许,ACM的成绩也跟什么GRE一样,算是一种门槛吧。可以说准备GRE的过程对于逻辑思维英语能力的培养作用很大,但不可能指望我们的一切能力都来自于这个需要背红宝的考试。

本文出自 杨肉的演讲台,转载时请注明出处及相应链接。

本文永久链接: https://yangzhe1991.org/blog/2011/08/%e5%86%8d%e8%b0%88acmicpc/

13条评论

  1. schocat 2011 年 8 月 14 日 18:54 回复
    Unknown Unknown Unknown Unknown

    这是把人看作完全理性简化模型,事实上人理性是有限的,不然哪来的快乐?得到东西并不等于快乐。

    1. yangzhe1991 2011 年 8 月 14 日 19:36 回复
      Unknown Unknown Unknown Unknown

      如果所谓的感性,那么一旦没有了乐趣如何坚持?ACM可不是那种能让一个人一直有兴趣并且抛弃其他的东西

  2. schocat 2011 年 8 月 14 日 20:01 回复
    Unknown Unknown Unknown Unknown

    顺其自然,如果学一学就没乐趣了他也不该坚持了,如果学了很多那沉没成本会让他做到底。

    1. yangzhe1991 2011 年 8 月 14 日 21:03 回复
      Unknown Unknown Unknown Unknown

      说是这么说,但我觉得很多ACMer对自己的出路并没有很好的打算,或者说通过ACM学到的其实把算法、知识点学会后成长曲线就非常平缓了。这段时间其实就是为了ACM而ACM,有的人意识到自己最后得到的奖不会很高就退出了,但很多拿不到奖的还在坚持。一方面是热爱,一方面说实话也有点“傻”

      1. schocat 2011 年 8 月 15 日 19:40 回复
        Unknown Unknown Unknown Unknown

        感慨,热情可以到老都有,但天真用几次就不会有了。

        1. yangzhe1991 2011 年 8 月 15 日 19:46 回复
          Unknown Unknown Unknown Unknown

          问题纠结的地方就在于,天真好还是不好。。。

  3. Chao Xu 2011 年 8 月 15 日 17:19 回复
    Unknown Unknown Unknown Unknown

    求你写的paper…

    1. yangzhe1991 2011 年 8 月 15 日 18:10 回复
      Unknown Unknown Unknown Unknown

      没啥可看的。。。凑数的。。

      1. Chao Xu 2011 年 8 月 15 日 18:50 回复
        Unknown Unknown Unknown Unknown

        …可以用来了解一下你做了什么算法问题…
        …因为我到现在都没做出什么东西… 🙁

        1. yangzhe1991 2011 年 8 月 15 日 18:52 回复
          Unknown Unknown Unknown Unknown

          额……那个什么创新性实验计划弄了个研究机器人导航的项目。。拿一堆钱最后就发俩EI的会议论文。。能发出去我们组一致认为是奇迹……

  4. 小媛 2011 年 8 月 24 日 21:12 回复
    Unknown Unknown Unknown Unknown

    对你的一些看法不敢苟同。
    我觉得搞ACM是一个漫长的过程,积累和沉淀都很多,对人要求很高。最起码搞过ACM(当然我指认真搞的),专业素质一定不差。当然有得必有失,项目只是另一条不同的路罢了。

    1. yangzhe1991 2011 年 8 月 24 日 23:41 回复
      Unknown Unknown Unknown Unknown

      那就看专业素质指的是什么了,如果会做算法题也算专业素质,那么ACMer就有很强的专业素质。但如果专业素质就是指真正会用于实际的东西,对于web开发或者非算法研究类的单纯程序设计,搞ACM的人如果不做项目,就相当于什么也不会。

  5. 123 2013 年 6 月 8 日 17:13 回复
    Google Chrome 27.0.1453.94 Google Chrome 27.0.1453.94 Windows XP Windows XP

    其实应该把ACM当作是一种学习算法和数据结构的渠道或许会更好,把做题当作是学习之后的训练和巩固,而不是单纯为了ACM而ACM,你觉得呢?

发表评论

邮箱地址不会被公开。 必填项已用*标注

Ɣ回顶部