CSP第一轮是恶心的¶
如果让我用一句话评价 CSP 第一轮,那就是:CSP 第一轮是恶心的。它恶心的地方,不在于题目难,而在于它经常让人感觉,它并没有真正筛选出会写代码、拥有信息学能力的人,而是在筛选那些擅长考试、擅长记忆理论知识的人。对于一个信息学竞赛来说,这种错位感是非常强烈的。
信息学竞赛的核心到底是什么?毫无疑问,是编程能力,是利用计算机解决问题的能力。一个真正优秀的信息学选手,应该能够面对一个陌生问题,分析其中的规律,设计合理的算法,然后通过代码实现自己的想法。他可能会研究动态规划,学习图论,掌握数据结构,优化程序复杂度,在一次次调试中提升自己的能力。他的成长过程,应该是在键盘前完成的,是在一行行代码中积累出来的。然而 CSP 第一轮却经常给人一种奇怪的感觉:一个每天认真写代码、拥有很强实操能力的人,可能会因为几个理论知识点被淘汰;而一个几乎没有编程经验、只会背计算机基础知识的人,却可能轻松通过。
这就是很多人认为 CSP 第一轮毫无意义的原因。
当然,计算机理论知识并不是没有价值。计算机科学当然需要基础知识,了解计算机组成、网络原理、数据表示等内容,对于一个未来从事计算机相关工作的人来说都是有帮助的。但是问题在于,CSP 第一轮有时候把这些内容放在了一个过于重要的位置,甚至让它们影响了真正编程能力的评价。一个人不会写代码,但是背熟了大量概念,他可能拿到不错的成绩;另一个人每天训练算法,能够解决实际问题,却可能因为不知道某个冷门知识点而失去机会。这种情况对于很多学习信息学的人来说,是非常难以接受的。
因为他们学习信息学,并不是为了成为一个“计算机知识百科”。
他们学习信息学,是因为喜欢编程,喜欢创造,喜欢通过代码解决问题。
一个真正会写代码的人,可能不会记住所有计算机历史知识,也可能不熟悉某些偏门的专业术语,但是当他面对一个实际问题时,他能够思考,能够分析,能够设计方案,能够写程序实现。这种能力,才应该是信息学竞赛最重要的东西。而一个只会背理论知识、没有实践能力的人,即使能够回答很多选择题,也不代表他真的具备解决问题的能力。
这就像选拔一个厨师。如果考试内容只是让他背各种食材名称、厨房规则、烹饪历史,那么一个从来没有做过菜但记忆力很好的人,可能比每天做饭的人成绩更高。但问题是,真正站在厨房里做菜的时候,谁更有价值?答案显而易见。信息学也是一样。真正重要的不是你能背出多少定义,而是你能不能把想法变成程序,能不能让计算机按照你的思路运行。
CSP 第一轮最让人难受的地方,就是它可能让很多真正喜欢编程的人产生挫败感。一个学生可能花了大量时间学习算法,解决一道道难题,调试无数次程序错误,但是考试结束后,他发现自己输给了一个刷理论题更多的人。这种结果很容易让人怀疑:自己学习的信息学到底有没有意义?自己花在代码上的时间是不是错了?
更令人无奈的是,这种考试机制还容易改变学生学习的方向。很多人为了通过 CSP 第一轮,不得不把大量时间投入到背知识点、刷选择题、研究考试套路上。他们开始关注“这个知识点会不会考”,而不是“这个知识点为什么重要”。他们开始追求分数,而不是追求真正的信息学能力。久而久之,学习信息学的过程可能从探索和创造,变成了一场考试技巧竞争。
信息学竞赛最吸引人的地方,本应该是自由和创造。面对同一道问题,不同的人可以设计不同的算法;面对一个复杂任务,可以通过自己的思考找到解决方案。那种写出程序、运行成功、解决问题的成就感,才是很多人喜欢信息学的原因。但是 CSP 第一轮有时候却让这种核心价值被削弱了。
当然,CSP 第一轮也并非完全没有存在价值。它至少能够帮助一些学生了解计算机基础知识,也能够让更多人接触信息学。但是,如果一个选拔机制无法很好地区分“真正有编程能力的人”和“只擅长理论考试的人”,那么它就必然会受到质疑。尤其是在信息学这样一个高度依赖实践的领域,代码能力的重要性不应该被大量记忆性内容掩盖。
很多人吐槽 CSP 第一轮,并不是因为他们害怕考试,也不是因为他们不愿意学习基础知识,而是因为他们认为:信息学竞赛最终应该回归信息学本身。计算机科学不是靠背诵发展起来的,程序也不是靠背诵写出来的。真正优秀的程序员,可能不会记住所有细节,但是他们拥有分析问题、解决问题和不断学习的能力。
所以,CSP 第一轮最大的问题,就是它可能挡住了一些真正会写代码、有实践能力的人,同时放进了一些只会理论知识、缺少编程能力的人。它评价的东西和信息学真正看重的能力之间,存在一定差距。
一场考试可以决定一个人的排名,但不能决定一个人的水平。一个人有没有信息学天赋,不应该只看他能不能在一张答题卡上选择正确答案,更应该看他能不能面对一个问题,坐在电脑前,敲下一行行代码,把自己的想法变成现实。
因为真正的信息学能力,不是在选择题里体现出来的,而是在代码运行成功的那一刻体现出来的。
Fuck CCF_NOI!