V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SunshinePlanet
V2EX  ›  程序员

国内以竞赛为最终目的的计算机学习圈子到底是啥样

  •  3
     
  •   SunshinePlanet · 2021-09-07 18:55:31 +08:00 · 16669 次点击
    这是一个创建于 1179 天前的主题,其中的信息可能已经有所发展或是发生改变。

    进入大学也一年了,在大一开学初就有专门老师在一直在游说新生们去参加 ACM,CTF 。 那老师也一直在说刷一本通,一本通。那时候我还和那老师对线,他一直在那重复刷题,刷题,刷了题什么都懂; 这个观点。 而我当时的观点是 刚刚进入大学,大家的计算机基础参差不齐,这时候应该教大家先熟悉一下 windows,熟悉一下计算机硬件有哪些,是什么,干什么,怎么用之类的基础的东西。刷题是之后的事情,参加比赛也是之后的事情。

    那专门负责 ACM 的老师就一直在那重复“刷题,刷题,刷一本通。”最后管理员禁言,这事就这么过去了。 至于我的那些参加了 ACM,CTF 的同学,也是用 DEV-C++ 在那写代码,我跟他们讲 GCC 是什么,用 VSCode 会更舒服,可以用断点来调试代码等等之类的在我看来很基础的东西,他们也一头雾水,跟我说除了 DEV 其他东西都不知道是什么。简单说就是跟只会用 office 的人没区别,就是软件换成了 DEV-C++(无意冒犯)

    第一年我们编程语言只学了 C 。当然了,上的很水,一本清华大学出版社的教材,老师就是一章一章念完,课程就结束了 这个暑假我们有个 《 C++实验》的课,老师就是上文提到的负责 ACM 的老师。上课内容就是在 拼题 A PTA 上面过题,学生看他投影仪大屏幕做题,下面抄答案,把上面的题刷完。 上课期间,他还在一直说现在你们可以和大一一起刷一本通啊,大一新生已经刷了很多题了。之类的刷题的话。

    这是我自己身边的事实 在网上,好像知乎上,贴吧里,好像只要内容有关 ACM,CTF 之类的,大家好像都是参加过的人,都是这些领域的大佬,或者,很努力在里面奋斗的。根本就没有唱反调的,告诉新人这个东西需要你有一定的计算机基础。
    #因为我身边打 ACM 的同学真的就只会打 ACM 呀。。。

    第 1 条附言  ·  2021-09-09 03:02:28 +08:00
    看了大家的回复,我自己好像也明确了自己的方向。但是就是有一种恐惧吧,我自己是对网络和图形学这方面感兴趣的,未来的职业道路也非常想往这两个地方选一个发展,当然最好是进入游戏产业了,开发游戏,算我的梦想吧。在大学实际用起了 linux 系统,在 linux 的世界里发现了计算机的深不见底,又对计算机有了新的认识。我想在这游戏领略有所发展,但是因为恐惧,恐惧我现在的计算机的知识还远远不够我支持我在这两条道路的其中一条走的舒服,走的远。因为我已经发现我要学习的东西有太多了。四年以后,我能够吃饭的手艺又是什么呢?或者说读研究生,但那也只是把焦虑抛在时间更后面了罢了。往大了说,我能实现我的梦想吗?

    而参加这些竞赛,是啊,我对这些也不是不感兴趣,也不是选择了之后不愿为之奋斗。但是这种刷题的模式,在经历了高考之后,对这也已经漠然了。看着身边的参加这类竞赛的同学,只要走下去,他们的路肯定是越走越宽的,只要得个还算可以的奖,至少这四年问心无愧。思考着自己的未来,加上又再一次跟那位 ACM 老师相撞,所以就有了这个问题。

    总之非常感谢大家的回答,让我知道了大学竞赛的圈子是啥样的,也愿望大家的路能够越走越宽吧。“踏上取经路,比抵达灵山更重要”
    127 条回复    2022-05-31 16:58:13 +08:00
    1  2  
    gBurnX
        101
    gBurnX  
       2021-09-08 17:40:15 +08:00
    @nulIptr

    不知道 vue 作者算不算前端,他公开收入是年入千万。

    太阳系 ACM 第一的选手,能拿得到这个收入嘛?
    iyear
        102
    iyear  
       2021-09-08 18:02:06 +08:00   ❤️ 3
    我的一些看法
    首先选择没有对错之分,是自己热爱的路就坚持走下去。
    我讨论的是兴趣之外的性价比,也就是投入、收益、风险之间的平衡。

    如果搞 ACM 是为了就业有点成王败寇的意思,要权衡好利弊。我个人看来 ACM 的技能树对于就业和科研是有点歪的。ACM 的算法训练和企业算法岗差别挺大的,如果想去算法岗大学四年该做的是科研方向,努力发 paper,进实验室。如果是去开发岗那么算法方面的高度最好点到为止,ACM 对于企业面试和工作中的算法要求太浪费了,力扣就已经够了,更好的方向是去做项目,积累协作开发经验和学习一线企业中使用的技术栈。

    对于大学零基础入门的人不太建议去搞 ACM 了(自制力差的人,找个队强迫自己学习那还是可以的),更建议工程方向,聪明点的去搞科研,风险低,收益居中,性价比高。

    如果是初高中竞赛打出成绩的可以去搞 ACM,只要不太颓废,一般都可以出成绩。

    如果只是因为氛围而去的话是性价比是较低的,能否出成绩基本就看你天赋,毕竟现在 ACM 的前列基本都是有过竞赛经历的人。

    不喜欢刷题和训练的就别去了,肯定后悔,oi 和 ACM 就是高考刷题的计算机模式。

    断断续续打了这么多字,来自于自己的一些想法和学长的交流,也是自己一直以来对竞赛的思考。我也才刚大一,小学初中搞过 oi,那段经历让我对竞赛抱有特别的慎重,不要无脑入坑。

    方向的选择还是很重要的,慎重、大胆都需要。
    Junzhou
        103
    Junzhou  
       2021-09-08 18:07:38 +08:00
    @gBurnX 旷视科技的两个联合创始人都是 IOI 金牌吧
    iyear
        104
    iyear  
       2021-09-08 18:17:44 +08:00
    看#11 和 #14 的发言就很有意思
    熟悉 Linux 和 ACM 金牌根本不是一个难度值怎么比?熟悉 Linux 是及格制的要求,ACM 金牌是排名制的要求。金牌不是满大街都有的。
    ACM 代表实力?是啊,强者那是真的代表实力,写简历上显得牛,但是较弱者呢?去了 ACM 打酱油的写到简历上可不是加分项
    jaywhen
        105
    jaywhen  
       2021-09-08 18:40:50 +08:00
    @iyear 我赞成你的观点,我的意思是要是喜欢就去学,也不要因为周围人怎么样就厌恶或者产生偏见,不喜欢就搞其他的,计算机这么庞大的体系肯定有一个方向是能够吸引题主并且值得做下去的。况且大学应该多养成自学的习惯,反正我大学基本都是靠自学。
    MakinoharaShoko
        106
    MakinoharaShoko  
       2021-09-08 18:57:20 +08:00   ❤️ 2
    @nulIptr 事实上,并非所有打 ACM 的最终都会去从事算法岗。打 ACM 的那么多,拿到银奖金奖的毕竟只是少数,有人能去拿 50w 的算法岗,就有人四年拿不到奖碌碌无为,最后还得去学习一门前 /后端语言去做开发。

    另一方面,这也和个人天赋和兴趣有关系,如果有人就是对前端 /后端感兴趣,并且愿意为此投入精力,而对这类全靠刷题的竞赛不感兴趣,你也不能以未来薪资预估水平为理由否定别人的选择。

    总而言之,我认为岗位是没有优劣之分的,也许部分岗位可能会由于市场的青睐而具有更高的薪水,但是我个人还是认为找到一份自己喜欢,至少不讨厌的工作是更优先的。如果为了更高的薪水,非要去卷那些更热门的岗位,那就毫无疑问陷入了内卷的漩涡,那样的话,即便获得了更高的薪水又如何?

    当然,如果喜爱的岗位和工资最高的岗位重合,那只能说运气是真的好。
    learningman
        107
    learningman  
       2021-09-08 19:01:05 +08:00 via Android
    怎么说呢,有些东西三天就能学个差不多,有些东西要要学三年入门。
    有的人觉得前者重要,有人觉得后者时间已经不够了。
    learningman
        108
    learningman  
       2021-09-08 19:49:00 +08:00
    我认识一个 NOI 银牌的哥们系统都不会装,还是隔壁生物竞赛的来帮他装的,但是影响人家保送北大吗?
    应用这些细细碎碎的东西基本没啥门槛,Quick Start 看一眼就能搓个 demo 出来,和人家大概是没法比的吧。
    expy
        109
    expy  
       2021-09-08 19:57:22 +08:00
    能有自己的规划按部就班的学习当然更好,不然刷题总比无所事事或者整天打游戏强。
    rpman
        110
    rpman  
       2021-09-08 20:01:21 +08:00 via iPhone   ❤️ 1
    @iyear 那个回复只是对楼主语气的发言,打 ICPC 无疑是一将功成万骨枯
    rpman
        111
    rpman  
       2021-09-08 20:02:34 +08:00 via iPhone
    @gBurnX 兄弟,格局小了。。
    gBurnX
        112
    gBurnX  
       2021-09-08 20:37:58 +08:00
    @rpman
    @Junzhou

    我只是有点好奇,地球第一前端,和地球第一 ACM,pk 收入,到底谁能赢。
    soupu626
        113
    soupu626  
       2021-09-08 20:41:33 +08:00   ❤️ 1
    如果以竞赛为目的,除非投入极大,不然其实挺亏的,我那会有个杭电的老师好像说过,“如果一个队队长四六级不过,高数挂科,基本就 final 了”,我曾经的队友也是天天刷题,熬夜打 cf,挂科,最后大四还是大三才拿了个区预赛的铜(我退的早,打铁选手)。
    但是如果以个人的成长为目的,进校队其实提升很大
    一是周围的人都很 nice,很上进,不夸张的说校队里的那帮人,是计算机学院学习能力最强的,基本除了 ACM,其他各类比赛也都能看到这帮人,我们曾经两个人,肝了一个周末,干了一个教务处的 Android 端出来,就真是现学 Android+Django
    二是作为程序员,刷刷题,练练脑子,锻炼下解决问题的思维方式,以及抗压能力,挺好的,面试的时候最难一般也就问到简单 dp 和简单图论,做做准备很好。
    三是,感受到了人与人的智商是有差距的,我看了一个星期还看不懂的莫比乌斯反演,大佬两天搞定了,这也是我退役的主要原因之一,真感觉自己已经到了我这个付出度能达到的上限了。

    但是,如果退役后,要往工程岗方向发展,最好拿一点时间看看工程规范,现在回头看我当初些的那些代码,一道题平均就 80 行,命名随意,缩进极深,几乎没有拆分。自己都快看不懂了
    iyear
        114
    iyear  
       2021-09-08 20:53:30 +08:00
    @rpman #110 那没事了,楼主发言确实有些情绪输出了
    qscqesze
        115
    qscqesze  
       2021-09-08 21:15:25 +08:00   ❤️ 4
    上网搜资料,侥幸刷到这个帖子,作为参与 acm 拿过小奖的,现在在某大厂做架构开发的过来人说几句话。

    对于 acm 竞赛而言,它实际上并不是计算机竞赛,而是数学竞赛,和计算机知识关系不算特别大,很多时候是在做数学题而已,所以你才会发现大部分做 acm 的人完全不了解 c++ 亦或者 gcc 之类,当然仅限初期。

    准确来说,acm 是属于 tcs 领域( Theoretical Computer Science )。维基百科原话:Theoretical computer science (TCS) is a subset of general computer science and mathematics that focuses on mathematical aspects of computer science such as the theory of computation, lambda calculus, and type theory. 你可以去关注相关 tcs 领域的 paper,几乎是数学方向,所以你的看法是对的。

    话说回来,acm 我欢迎任何同学加入进来,但要清楚,acm 是一门竞赛,而不是学科,是竞赛就会有竞争。一所学校对计算机感兴趣的有成百上千人,最终能够有资格获奖的也就寥寥几十人而已,而真正能够踏上最后比赛举起奖杯的也就那些人而已。

    至于那几十个获奖的人,能拿到高薪,是自然而然的事情,因为他们本身就是胜利者。而这些人中的绝大多数,即使他不做 acm,他去做其他事情,他一样能够脱颖而出。并不是因为他做 acm,所以他厉害;而是因为他厉害,所以他做 acm 也厉害。

    另外为了高薪才来参与 acm 的人,这种纯纯的功利心,真的很少见,至少我当时参加 acm 的初心就是好玩而已。
    MatDK
        116
    MatDK  
       2021-09-08 22:03:41 +08:00   ❤️ 1
    从几方面看
    1. 对老师来说,他确实功利了。因为他的绩效,就是 ACM 。那他当然要鼓吹这个,让学生尽量参加,到时候他挑几个好苗子有成绩,学校有光,他也有奖励。这方面他确实没有完全尽到 1 个传道受业解惑的好老师标准,但是他也没强制你们搞些乱七八糟的东西,也不算坏人。

    2. 对你来说 我能感觉到你的眼界可能比很多同班同学高。你说的都很对,但可能也不适合很多同学。你如果喜欢其实可以试试 ACM,也很有挑战性。如果不喜欢八股也没问题,就按自己的路线走就行了。

    3. 对于其他学生来说,有的基础不好但有潜力,有的根本不喜欢计算机,只想水个毕业证,等等等等。对于基础不好但是有潜力的同学来说,ACM 可能是他们尽快踏进行业,获得前途的 1 个敲门砖。在求职,或者考研应该都有加分的。退一步说,就算没得奖,对他们来说 leetcode 那种八股也是小菜一叠。

    评价计算机编程有好几个维度,例如 架构,文档,算法,调式能力,代码规范,等等等等,ACM 只是其中偏向算法的 1 个分支。就像有人搞奥数一样,你大可以语数外理化 各 95 分去上好学校,也有人就凭 1 个数学竞赛 150 分去上好学校。我承认 ACM 很八股,很功利。但是对很多人来说,这是 1 个很有机会的平台。
    justyy
        117
    justyy  
       2021-09-09 08:39:33 +08:00
    我高中参加过 NOIP, 铜牌,现在在微软剑桥研究院: https://www.microsoft.com/en-us/research/people/zhihualai/
    zhuangzhuang1988
        118
    zhuangzhuang1988  
       2021-09-09 09:43:17 +08:00
    @justyy 牛逼
    draymonder
        119
    draymonder  
       2021-09-09 10:37:11 +08:00
    @qscqesze 看到卿学姐了~
    ytmsdy
        120
    ytmsdy  
       2021-09-09 11:05:55 +08:00
    做为打了 4 年 ACM 的只拿了省赛二等奖和抱大腿进入亚洲赛的菜鸡竞赛狗,来说一说我的对 ACM 的理解。
    ACM 真的是一个拼智商的地方,让人可以充分的体会到,人和人的智商差距是鸿沟级别的。亚洲赛级别拿奖的的选手真的很能打!他们的脑回路都是异于常人的,有些普通人根本没法理解的 DP 问题,他们看一眼,想一会就可以把 DP 方程给写出来。
    ACM 拿奖了,出去找工作是很好的能力证明。相比较刚刚毕业的学生没有什么项目经历,没有什么开源项目,只会一些基础的编程技巧,ACM 选手确实是吊打普通人。
    LZ 应该听说过一句话,程序=算法+数据结构,虽然说竞赛选手的工程能力弱了一点的,但是算法基础扎实,搞几个项目工程能力就上来了。
    pkm
        121
    pkm  
       2021-09-09 11:44:46 +08:00
    @ytmsdy 不能同意更多
    namelosw
        122
    namelosw  
       2021-09-09 12:46:58 +08:00   ❤️ 1
    我觉得绝大部分 ACM 选手都是很优秀的。不过的确有一小部分人的代码一直都是 ACM 那种风格… 放在工程师不太合适。

    另外楼主想表达的东西其实我比较赞同:

    ACM 比较强的选手一般各方面都很强,但是某些人宣扬的 ACM 文化有时候对很多小白或者学生是有害的:很多人听了某些「唯算法论」党的忽悠,眼里就只算法和某些诡异的 C++用法,但是不仅 ACM 打得不好,Java Spring 啥的也不踏实学,最后养成了眼高手低的毛病。

    跟网上很多「唯底层论」党类似,忽悠了很多人去死磕底层,最后底层没学会,Java 也写不好,最后跑到网上继续吹「唯底层论」。

    穷秀才虽然屡试不中,为了让自己心理平衡只能继续渲染「唯读书高」的思想,然后继续走这条不适合自己的死路。

    算法也类似,网上吹「还是算法导论牛皮」的绝大部分人都没看完,也没人真做完过习题。本质是「满腹牢骚」的穷秀才文人相轻,互相虐待以继续这个恶性循环,被骗冲了钻石就要骗别人。很多真正的大佬更多地是推 Skiena 或者说算法导论最后有兴趣看一看就行了。

    大部分人学习的第一要务是解决问题的能力,能在各种平台上很快做出来东西,这样永远不愁没饭吃:因为企业雇佣人的核心是解决问题:你前端后端客户端 devOps 信手拈来自然不怕没人雇你,哪怕只有一部分熟练也能混得很不错。很多学生被别人忽悠,前面的水平不够,就把「深度」「底层」「算法」当第一要务,本质上就是提头进赌场梭哈。
    crstudio
        123
    crstudio  
       2021-09-09 13:20:44 +08:00
    @gBurnX 这种 PK 没意义啊,收入高不高看有没有商业价值以及商业价值发挥的如何。C++程序员小马的收入更高。ffmpeg 作者的收入可能也没 vue 高。
    shadowfish0
        124
    shadowfish0  
       2021-09-10 00:27:47 +08:00
    @namelosw 感谢,说的很好,很有启发
    Chinsung
        125
    Chinsung  
       2021-09-10 16:14:37 +08:00
    虽然 ACM 以考验算法能力和技巧为主,而计算机本身是一门涵盖很多很综合的学科,从硬盘 CPU 处理器操作系统网络。
    但是一般来说,ACM 吊的人,那也是真的吊。只会 ACM 的,绝对是少数中的少数了。
    就比如说,很多天才或者竞赛选手被诟病只会 XXX,别的都很弱。但是这种绝对都是少数,大多数科学家除非先天就存在一定问题,否则高智商基本也能带来不差的情商和对其他东西的学习能力。
    Chinsung
        126
    Chinsung  
       2021-09-10 16:16:36 +08:00
    再补充下,看到你的回复,既然你很想做游戏的话,进游戏厂最好的敲门砖就是 ACM 了,因为游戏最主要的还是算法比较硬,诸如图论等,现在大家讨论意义上的算法岗大多数指的是人工智能和推荐之类的算法岗。大部分游戏岗,在校算法能力硬,那就是最好的敲门砖了(个人感觉)
    Gigalo
        127
    Gigalo  
       2022-05-31 16:58:13 +08:00
    楼主你好,我之前是一个打 CTF 的,而且是大二才接触,感同身受。最后还是觉得竞赛不太时候自己,但是我学一个暑假能进校队的我知足了,已经证明了自己的能力了,没必要去比较啥了。了解了解竞赛是什么就可以了。每个人有每个人的路,选对路才是最重要的。如果你选择了一条自己认为正确的道路,并且能够持之以恒,克服困难,最终结果一定不会黑暗。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2800 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 02:26 · PVG 10:26 · LAX 18:26 · JFK 21:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.