百科问答小站 logo
百科问答小站 font logo



为什么信息竞赛都不开编译优化以及不允许内联汇编? 第1页

  

user avatar   marong1204 网友的相关建议: 
      

其实这是一个多次折中妥协后的方案。据我所知,评测时故意不允许编译优化的编程比赛只剩NOI和NOIP了。五年前,反对STL比现在做得更彻底,NOIP里干脆禁止STL的所有容器类和泛型算法,主要动机来源于三个方面:

理由1. 数据结构本身也是考点,STL帮选手做了太多的事情

理由2. PASCAL没有这些东西,工具之间存在不平衡

理由3. 老师不懂,教不动。学生太笨,学不会。时间太少,没法教,这属于“超纲内容”

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

于是CCF干脆在编译上做文章了:你问我支持不支持STL,我当然支持,但是编译优化是不开的,如果将来程序超时,你们是要负责的!这个法子倒是巧,首先减少了自己的工作量,还堵住了众STL粉的嘴,事实上也让懂行的放弃了map(一部分小学生还是敢用,看他们的运气和机智程度了)。其实这么做也很荒唐,STL变成了一只随时可能超时的怪兽,连min和max函数都不知道该不该用了,C++标准委员会动了这么多心思让STL的效率不至于落后,现在被CCF这么一搞,作何感想呢?

其实另一个思路是,既然Pascal不够强大,干脆完全放弃Pascal吧,这样就不存在公平问题了。听说CCF还真的这么提议过,但一部分中学教师反对。很多教师常年用Pascal教学,已经成了习惯,他们坚持Pascal有教学上的优势。

在我看来,Pascal作为教学语言,有优势但微乎其微。不过它的IDE比dev c++好很多,能单步调试,能查看变量,对初学语言的人来说是方便多了。但归根结底的问题在于,市面上没有适合给初学者使用的,强大且稳定且免费且标准且轻量级且能原生运行在Windows下的C++ IDE。尽管这样,Pascal早晚会退出竞赛舞台,因为老师傅们总有退休的时候。于是理由2会在几年后就会自动消失。

(感谢

@林阿三

的回复,他说Codeblocks不错,我也觉得是不错的,可惜这还不是CCF认可的IDE)

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

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

最后我要为限制使用STL说点话:学术竞赛和工程实践是有区别的,实践中当然不推荐重复造轮子,但在学习的过程中,重复是一个很重要的过程。我教学的时候,尽可能让学生重复写快速排序,堆等等算法,平时练得熟一点绝对有好处,如果能做到这点,比赛的时候让不让用STL其实就没关系了。

综上所述,不许编译优化的出发点就是不让选手舒舒服服地用STL,不让选手舒舒服服地用的目的就是上面提到的三个理由,主要就是还有一部分人不会用STL,为了搞平衡。




  

相关话题

  请问给变量赋值前有必要先清空吗? 
  有哪些高品质的交友软件推荐? 
  大一被调剂到计算机,但对电脑根本不了解,就只会上上网聊聊天,连入门都算不上,现在应该怎样入门? 
  2019年看到很多互联公司都在裁人,互联网行业要开始走下坡路了吗? 
  雷军的微博评论里有大量的非理性言论和直接回复是什么现象? 
  果壳网是不是失去了活力,没以往那么热闹了?为什么? 
  如何修改shared_ptr智能指针,让他支持多线程? 
  如何看待美国以北溪 -2 项目等为由宣布对俄罗斯实施「新制裁」?此举将会产生哪些影响? 
  58同城做了哪些恶? 
  如何看待腾讯等多家视频平台联合500多位艺人发倡议书,抵制影视剪辑视频内容? 

前一个讨论
伏地魔不能将一粒沙子变成魂器然后丢到沙漠里吗?
下一个讨论
为什么像 RS3、M2 这种小型性能车,马力都不小,车还轻,却远远跑不过RS5/7、M45 呢?





© 2024-05-15 - tinynew.org. All Rights Reserved.
© 2024-05-15 - tinynew.org. 保留所有权利