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

2021-09-07 18:55:31 +08:00
SunshinePlanet  SunshinePlanet

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

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

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

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

16985 次点击
所在节点   程序员  程序员
127 条回复
DeleteZN
DeleteZN
2021-09-07 19:39:39 +08:00
@wtysos11 可能这就是大佬吧。当初我最开始学 Java 的时候,环境变量都要搞很久。你们大佬 tql,最多一周的时间就可以搞懂 cpu 、gcc 、cmake 、gdb 等等。佩服佩服
DeleteZN
DeleteZN
2021-09-07 19:41:38 +08:00
@rpman 人家不就是说需要全面学计算机的基础知识嘛,你急啥?自己代入了?
他急了他急了
DeleteZN
DeleteZN
2021-09-07 19:44:58 +08:00
@Lemeng 企业还看重只干活不要工资的呢
NCZkevin
NCZkevin
2021-09-07 19:48:50 +08:00
acm 败犬路过,acm 性价比确实很低,除了个人努力外还有很多其他因素,说句老实话,我认为 acm 拿银牌以上所付出的时间(运气好,抱大腿的同学除外)用于学计算机其他方向也能学的很好。你举例连 GCC 都不知道的同学 acm 实力估计也很弱,我身边 acm 拿牌的同学能力都不低的,找工作也都非常顺利,这些同学就算基础弱点也很快就能补上。
我大胆猜测一下,你们学校 acm 实力应该非常一般,要不然不会出现你说的这种情况。这种情况下打 acm 的性价比非常低,还不如和你一样多折腾基础知识。
linvon
linvon
2021-09-07 20:10:31 +08:00
打 ACM 也不需要什么计算机基础,它本质上是数学和算法的问题。很多数学系的人都会去搞这种算法,以及高中选拔 OI 队员时大概也是参考数学成绩而不是计算机基础。
此外至于是不是打 ACM 就只会打 ACM 的问题,这和 ACM 、刷题也没什么关系,都是看个人。愿意去拓展学习的都会自己去学的,你可以说学校教的内容和业界大量需要的内容不一致,但大学里本来也不是要培养这些人才的,理论与学术相关才是大学首先要考虑的,但又有几个人认真学了?
至于总是想拉人去打 ACM 的老师,可能确实眼界窄了一些,能拉一个感兴趣的就拉一个了
AkashicRecords
AkashicRecords
2021-09-07 20:11:53 +08:00
我打过 CTF 得过一点点奖,也曾拉人进入到 OI 的圈子(最后他得了区域金……),同时结识了很多 CTF 和 ACM 选手。从自我体验和周围人的表现来看,CTF 和 ACM [不能] 让你成为计算机方面的专家,但是是一个很好的 [试金石] ,让你证明自己的能力。

其实这些竞赛和奥数竞赛一样,竞赛的成功不能代表学术上的胜利。诚然 Tao 12 岁就拿了金牌并最终成了地表最强数学家之一,但是更多的数学家都是那种竞赛上表现平平的。仅仅靠奥数无法培养出数学家,奥数也不是培养数学家的必经之途。不过话又说回来,正是因为竞赛有筛选人能力的功能,所以很多数学家都有奥数的背景也不足为奇。君不见,多少金牌得主都去做对冲基金了。总不能说奥赛能够代表金融投资的潜力吧 XD 。

ACM 老师这样做挺正常的,因为大家投入越多,他带队的产出回报就越多。所以,他肯定就会让大家越多人打越好——即便一时半会出不来成果,培养好的氛围也是不错的,学生锻炼了编程能力也不是件坏事。但是, [大学教育] 中计算机更重要实际上的是操作系统、计算机组成原理、计算机网络等课。如果认为大学计算机就等于编程、算法,那就有失偏颇了。如果说以竞赛为 [最终目的] 的导向话,最大的可能性就是让学生以为编程就是计算机的一切,从而花了大量时间在竞赛的技巧上,这肯定是不值得的。例如计算机科学的明珠——计算理论,要是一个学生认为编程就是一切的话,这课大概就不会去听了。那么大学这种学术为导向的教育就会失去意义,不如网上找培训算了。

想到我大一时候的程序设计课,助教就过于喜欢出使用竞赛技巧的题目。任课老师私下和我吐槽说,这样就变味了,一方面让那些没接触过竞赛的同学没有信心(虽然他会使用语言了,但是他不知道算法的存在,他会归结到自己编程能力的不行而不是自己根本就没学过那些算法);另一方面让大家认为计算机就等于编程和“竞赛用的算法”,很多同学就觉得自己不适合学计算机。但是最后读完大学发现,这些东西其实只是计算机科学中非常小的一块,即便编程能力稍弱的同学,在广阔的计算机科学的世界中,也能找到自己擅长的那一部分。
LotusChuan
LotusChuan
2021-09-07 20:13:46 +08:00
这也算是能力的证明吧,刷题能去比赛,拿了奖之后学校有加分,所以保研简单;比赛得奖之后去校招面试也有优势;读研的话导师面试也不错。
但这一切都建立在其他人在大学都只是老老实实按照学校课程学习或者是去参加一些含金量不高的比赛的基础上,当然国内大部分学校都是这么做的,相比之下你在大学通过刷题能去含金量高的比赛。说得简单点就是其他人都在混日子,你参加比赛没有混日子,那么能力相比之下肯定是你高,所以理应有这些保研读研工作的优势。
打破这个局面的方法也很容易得出,就是找到更加高效的学习方式。刷题的学习效率以及学习面都不优,如果你看重实际能力的培养的话,基本上如果你大学能坚持按照 top 美本的培养流程来一套,能力是不会比只刷题的差的。比如你想了解计算机的基础知识,去刷一遍 CMU15213 就好了,学完要是还比不过只刷刷题的,那 CMU 也可以倒闭了。现在你比那些刷题的更懂一点计算机,但是大概你对计算机的了解也不是特别深入,让你写个 malloc 你写得出来吗,实现个简单的 TCP 做得到吗,命令行工具比如 vim git tmux 这种都熟悉吗。
这些做不到的话,要么去学,要么还真的不如听老师的去刷题,起码你大学没有混日子。
wenbinwu
wenbinwu
2021-09-07 20:33:34 +08:00
有幸跟国内大牛(特大牛的那种)交流过,都在搞算法,当教授,做 AI 啥的,自己有自己的圈子
SunshinePlanet
SunshinePlanet
2021-09-07 20:48:47 +08:00
@LotusChuan 感谢指路。现在也是在 linux 上学习 vim 和 git,学搭环境编译 openwrt
admin601
admin601
2021-09-07 21:08:28 +08:00
术业有专攻罢了。就从算法题来说面向大众的 Leetcode,一般人可能觉得上面的题目就已经够难了,但是搞算法竞赛的大部分都会去国内专门的 OJ 平台和 codeforces/atcoder 等这种国际平台进行训练练习。LeetCode 上除了个别题目,对于一个基础不错的搞算法竞赛的人来说就算是签到题 /热身题了。而且 LeetCode 上的题面很直,不像 ACM/OI 题目还有不少套路题。最后放一个抖机灵的某乎问答。
为什么大家都贬低 LeetCode 的难度? - 知乎
https://www.zhihu.com/question/348344092/answer/902655106
admin601
admin601
2021-09-07 21:11:25 +08:00
@admin601 不过说实在的,如果从大学开始搞 ACM,不是有天赋或者极其有兴趣,那确实性价比不高
fetich
fetich
2021-09-07 21:14:36 +08:00
某一行或竞赛干到第一的,都有过人之处或者投入了远超他人的努力
Junzhou
Junzhou
2021-09-07 21:18:05 +08:00
dev c++是很舒服的,断点调试也很舒服,内置 gcc,可以通过编译命令使用 c++11,你觉得刷题没有用,是因为你不了解打 acm 意味着什么。(我是一个弱鸡选手,参加过,垫底,也只能在蓝桥杯这种比赛上拿奖)

刷题的大致进度就是, 基本语句,基本数据结构,基础排序算法,搜索,递归,dfs,bfs,大数运算,高精度,高级排序(快排,归并,拓扑之类的),高级数据结构(优先队列之类的),记忆化搜索,然后图搜索,最短路,动态规划,网络流,自动机,贪心算法,全排列,后面数论,计算概率,博弈。 我说的可能略过了很多的内容。

然后你现在跟这些人去讲 vsc 多好用? 以上这些内容都能学会的人,会学不会怎么用 vsc 吗,怎么用 gcc g++ gdb 调试? 断点? acm 现场赛(区域),基本代码都是打印出来 debug 的。 其他的我就不说了。



如果 你身边有沉浸于打比赛的,你可以不理解他,但是你们毕业求职的,经历校招的时候,差距就出来了,工具确实能够提高生产力,但是并不是你用了先进的工具就有先进的生产力,说句不太恰当话,一个能把 acm 常规算法,常规题信手拈来来的老哥,会学不会用 vsc,idea 这种工具?
agagega
2021-09-07 21:23:01 +08:00
我可以理解你的心情。当年 vczh 有篇回答就是说,为什么他作为一个中学就开始自己搞编程的人,大学却没有参加 ACM,印象很深。

ACM 当然教不了你说的很多东西。不过真的搞过几年 ACM 还连这些都不清楚的,应该也很少。( OI 圈子里倒是挺多)

我的感觉是,ACM 虽然可能性价比不高,但心智负担也不大,比较符合大家高考一路过来靠做题考试的这个思路。其他的路子(比如搞 infra )没有一个固定的考核标准,没有老师教,可能就容易走偏,或者像我一样因自制力不够而放弃。

现在回头看来,大学时候,要是能有这个机会锻炼自己也挺好的。关键是能摆正心态,认识到进入大学校门后,不会千军万马都走同一条路这个事实就好。

二楼的留言有点魔怔了,企业算法岗和大学打比赛还是有本质区别的。我知道的前选手,拿奖的没拿奖的,很多人也没去做算法。
Junzhou
2021-09-07 21:23:48 +08:00
还有,如果是我理解的那个 ACM,大概率大学开始搞,真的晚了,我大学刷题的时候,认识几个小朋友,中学生打 oi 的,当时看了我写的某篇笔记,特意教我怎么用 c++的 pbds,给我讲一些题的思路。

区域金银 只要不是打酱油的,就只靠打比赛积累的,外加常规课程积累,一线大厂是没问题的。
iyear
2021-09-07 21:27:33 +08:00
@nulIptr #2 打 ACM 和算法岗不太一样吧。。。
Junzhou
2021-09-07 21:32:12 +08:00
@SunshinePlanet 学习 vim 也好,学习 git 也好,这些本质上都是工具。还是建议多关注一些算法,数据结构,计网,操作系统,这些理论知识,外加一门拿得出手的语言,不需要精通深入,只需要扎实,在你走上工作岗位后,你会受益非浅,对于普通人来说,这些的性价比比打 ACM 高太多了。
YvesX
2021-09-07 21:32:42 +08:00
搞啥竞赛的不是只会竞赛呢,哪怕别人那就是个智商测试行不行
又有谁规定的必须要会做工程呢
feather12315
2021-09-07 21:32:46 +08:00
我认为走 ACM 跟打好计算机基础,这两个并不矛盾,到工作前都是要均衡化的,但哪个走得更远点,是两个发展路线。
目前的感受:找应用软件开发相关的工作,对算法的要求高点;做基础软件的,是计算机基础要求高。

我个人跟楼主所说的一样,是从打好计算机基础开始的,上学时候喜欢瞎折腾,算法水平一般般,反倒乱七八糟的技能点了一堆。后来找的是基础软件相关的工作,做这方向代码开发不多,很多时候在 debug,我在这方面知道很多别人不知道的东西,上手速度、debug 速度要比别人快很多。
SunshinePlanet
2021-09-07 21:36:32 +08:00
@Junzhou 这里没有贬低刷题的意思,我也是很认同刷题的。是我周围的环境,ACM 老师都只在强调刷刷刷,可是大部分同学,进入大学前,连电脑都没怎么摸过,老师就开始给新生灌输刷题的理念。我是就这个点和老师冲突的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/800469

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX