百科问答小站 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,为了搞平衡。




  

相关话题

  为什么大家特别讨厌王老吉,反而喜欢加多宝? 
  如何看待50万人靠拍视频赚钱,在半年内实现了人均收入涨3倍? 
  如何看待网上各种激进的民族主义和所谓的“激进的民族主义”? 
  为什么拼多多上商品的价格那么便宜,他们是从哪来的货源呢? 
  凭兴趣自学编程能成为大牛吗? 
  楼继伟批互联网企业把「996」当优惠会减少就业,996 会影响就业选择吗?对社会有哪些不利影响? 
  知乎上三位大牛“温赵轮”有什么离奇的身世? 
  你是如何抵制百度系列产品的? 
  如何理解马云所说的月入两三万,三四万的人最幸福? 
  除了跨平台和平台成本以外,Java 还有什么特性是 C# 不具备的? 

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





© 2024-11-08 - tinynew.org. All Rights Reserved.
© 2024-11-08 - tinynew.org. 保留所有权利