noip与stl

五年前,反对STL比现在做得更彻底,NOIP里干脆禁止STL的所有容器类和泛型算法,主要动机来源于三个方面:

理由1. 数据结构本身也是考点,STL帮选手做了太多的事情
理由2. PASCAL没有这些东西,工具之间存在不平衡
理由3. 老师不懂,教不动。学生太笨,学不会。时间太少,没法教,这属于“超纲内容”

后来之所以STL又允许用了,一方面可能是组委会觉得这样不妥,一个编程比赛,用的C++语言竟然是标准的阉割版,而且到底阉割了多少东西,还很难解释清楚。另一方面,也阉割不干净。选手可以想出各种不直接include头文件但也可以使用map的办法。

在我看来,Pascal作为教学语言,有优势但微乎其微。不仅它的IDE比dev c++烂得多,只能单步调试,还有查看变量,对编程竞赛的人来说简直是噩梦。所以,Pascal早晚会退出竞赛舞台,因为老师傅们总有退休的时候。于是理由2会在几年后就会自动消失。

理由1的出发点我是赞同的,但我得到的结论恰恰相反——学STL其实是促进学习数据结构的,这世界上不存在学了一样东西会让你不去学另一样东西,只有懒惰才会阻止你继续学习。想学好STL应先学好数据结构,不学是走不远的,所以学点STL反而能激励学生钻研数据结构。

理由3才是现实的问题。ACM-ICPC选手有足够的时间掌握STL,但高中生周一到周五都要上课的,除非起步很早或很聪明,要不学这东西的时间是不太够。到底这算不算超纲内容,是比赛需要禁止的呢?需要不需要像数学高考一样,不允许看到使用微积分解题呢?我觉得支持反对都有道理。

最关键的在于,NOIP不仅支持STL,还提供了-o的基本优化。C++的同志们爽了!

你可能感兴趣的:(NOIP)