丹尼斯的回答触及了这一点,但我想写一个单独的答案,使其更加明确:
客观评分为本质的推动竞争,竞争激发创造力。
下面是一个没有客观评分的挑战的工作原理:你提出了一个有效的解决方案,可能做得好,也可能做得不好。你想想如何提高它的质量(无论“质量”在这种情况下意味着什么),如果可以的话,你就会这么做。在某种程度上,你会认为“是的,看起来相当不错,我会同意”。这就是结局。
下面是一个有客观评分的挑战的工作原理:你提出了一个有效的解决方案,可能做得好,也可能做得不好。然而,你有一个很好的主意,你可以或者不可以提高分数,如果可以的话,你可以。在某个时候,你会想“是的,看起来相当不错,我会同意”。然后你会看到其他参与者的分数,并注意到你只落后了几个“分”(无论在具体的挑战中是什么)。突然之间,你有了一个非常明确的目标:想出一些办法来击败另一个得分。这是一个切实可行的目标,也是尝试新事物的动力,它消除了在真正实现之前思考“是的,我认为这是最好的”的问题。
有趣的是,单凭分数就足以创造这种动力——甚至不需要是竞争。一旦你得到分数,你就得到了你的拥有得分击败对手。这适用于a)当您的解决方案是解决该挑战的唯一解决方案时(到目前为止),b)您的解决方法得分太低,几乎没有竞争力(例如,因为您正在使用C#参加代码高尔夫),或C)您的解决方案到目前为止已经是最好的解决方案,其他提交的解决方案目前都没有提供任何真正的竞争力。
最近的一个例子是jimmy23013的疯狂高尔夫训练缩短他的自匹配正则表达式。目前在这一挑战上没有竞争对手,但寻找更短的解决方案的愿望已经足够想出新的方法(5或6个,并进行计数),探索不同的解决方案,这也最终导致了一个更优雅的解决方案。如果挑战不是代码高尔夫球,我敢肯定答案仍然是第一个可行的解决方案。
虽然代码高尔夫球方面(例如,因为它是我们最常见的挑战类型)通常与手头的实际问题正交,但它驱使我们跳出框框思考,寻找解决给定问题的新方法,因为“任何解决方案”都不够好。
如果我将其与Project Euler进行比较,Project Euler本质上是一个承载类似(尽管更难)编程挑战的网站,没有评分/获胜标准,一旦我找到了其中一个问题的解决方案,我总是会转到下一个问题。特别是,对于那些用天真的方法恰好可行的问题,我没有从中学习到任何东西,因为没有动机从任何可能的角度来看问题。
当然,没有任何得分是极端相反的。正如丹尼斯所提到的,还有一种选择,即采用主观的获胜标准。但这一点也不好:如果我不能直接衡量我的解决方案的质量,并将其与其他固定规模的解决方案进行比较,我怎么知道另一种方法实际上会改进我的解决方法?最后,我仍然认为“是的,这看起来不错,我希望OP比其他解决方案更喜欢它”。
总之,我认为那些看不起代码高尔夫的人高估了手头特定获胜标准的重要性。只是代码高尔夫球工作得特别好,因为它很容易测量,很容易比较,提供了各种各样的潜在分数,并且不能被玩(除了利用漏洞)。但最终,令人惊叹的代码高尔夫解决方案并不令人惊叹,因为它们很短,但因为作者确实从各个角度研究了这个问题,并提出了一种新颖的方法,让每个人都大吃一惊。(这也意味着,这里的“最佳”(主观)答案并不总是最短的,但往往是因为追求简短才激发了这个答案。)
也就是说,我能理解人们是否愿意看到其他人客观的获胜标准更加突出,或者最快的代码更容易在此网站上运行。我完全愿意不做一个纯代码的高尔夫网站,探索新的(客观的)评分系统,做更多通用的代码标记但客观是所有这些挑战中最重要的特征,因为如果没有客观,我相信我们中的许多人都会失去动力,无法像有时那样在单个问题上花费尽可能多的时间。