您的位置:首页 > 大数据 > 人工智能

RoBa's blogProgramming, algorithm, and daily lifeRe: 真的ACM很有用么?

2014-08-25 22:10 169 查看
最近一直懒得写文章,把今天在水木回复的一个长文贴一下,同时也是为了表明上一篇《ACM伤不起》纯属调侃之作,其实我对ACM比赛和ACMer有很多很多的爱啊~

==========================================

作为一个搞了多年ACM但没有什么成绩,目前刚刚入职几个月的菜鸟,我来随便胡说几点。写到最后发现有的地方稍微偏激了点,不过懒得改了,欢迎楼下来拍。

  1. ACM竞赛不是搞研究,但是搞过ACM的学生,至少不比不搞ACM的学生更远离科学研究,我甚至敢大胆地讲,从统计意义上讲ACMer会更喜欢搞研究。实际上,就我对身边和网上讨论群的观察,对计算机科学始终保持严肃认真态度的更多地是ACMer。在ACMer的讨论里经常动不动就出现形式语言、可计算性、编译原理以及最优化、概率、统计等等内容,而大部分通常的计算机专业学生往往也只把计算机科学简单地等同于编程而已。我本人就是在竞赛中领略过算法的优美之后,开始对计算机科学以至数学产生由衷的敬畏和赞叹。反观那些所谓的研究(尤其是在国内的学校),称得上研究方法、研究思想的又有多少呢?云山雾罩故弄玄虚来忽悠经费的就不提了,大学学报连某些基本的概念都弄不对,求最大流把最朴素的ford-fulkerson加个拍脑袋想出的heuristic,也不证明一下就敢宣称O(VE)的复杂度,还有什么调和级数既收敛又发散,这又算是什么研究方法呢?

  2. ACM题目里确实有很多可以算作“奇技怪巧”的东西,但这些“奇技怪巧”正是若干年前研究论文里发表的内容。实际上为了解决某些ACM题,我们经常要去查阅过去的论文,ACM题目只是把论文里的内容放在了一个有实际背景的上下文里而已。用一个巧妙的数据结构把某一步操作从O(n)降到O(logn),如果这个解法之前没有被发表过,这样的“奇技怪巧”不正是一个绝好的论文题材么?难道只有NP=P这样的大问题才值得研究?

  3. 因为版上前面几个帖子讨论的是公司招人该不该看重ACM什么什么的,我就大胆地从公司招人的角度谈一谈这事。以我的观察,ACMer大都有这么几个优点:(1)聪明,并且知道比自己更聪明的人有很多。大言不惭地讲,这个竞赛还是需要一点智商的,以我的观察,参加这个比赛的同学在刚开始时大都是颇有点自负的,但是被各种大神虐几顿以后就会知道天外有天了。(2)对计算机有发自内心的兴趣,并且有持之以恒的精神。大体来讲参加ACM竞赛的功利性是比较小的(当然,随着ACM竞赛在国内越来越受到重视,不可否认现在竞赛的功利性变强了),要想得到个像样的成绩,如果不是出于真正的兴趣是坚持不下来的。不做比赛的同学平时可能也到OnlineJudge上随便做几道题,可能觉得没什么大不了,但是不是所有人都能有毅力坚持几年,做几千道题,写十几万行代码。题海战术你可以不赞同,其实我也不怎么赞同,但有这种毅力的人一定是有可取之处的。(3)基本功扎实。编程语言、算法、数据结构这样的课程就不必多说了,概率、离散、组合数学等等也都是ACMer日夜操练随手拈来的东西。因为很注重程序效率,ACMer往往也对汇编语言、操作系统、体系结构等知识有相对更深刻的理解。你可以批评说ACMer从来不写工程代码、变量名随意、代码风格不好、不考虑异常情况什么的,但那只是因为他们从前不关注这些。从公司的角度看,给新人培训代码规范,比起给新人培训算法数据结构等等一整套基本知识,哪个更容易呢?说到这里我觉得很多人有个误解需要澄清一下:ACMer会做ACM题,不代表人家只会做ACM题。如果一个ACMer能搞定那么多繁复纠结的算法,他学起工程性的东西来会很困难么?

  以上是我猜测公司看重ACM比赛的几点最重要原因。相比之下,你是不是懂某个算法这件事本身并不是特别重要的原因。公司不是因为你恰好懂某些算法而招你,而是因为懂这些算法表明你更可能是一个优秀的人才。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: