首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么编程比赛的参赛者要使用C++和Java?

为什么编程比赛的参赛者要使用C++和Java?
EN

Stack Overflow用户
提问于 2010-08-01 14:25:04
回答 10查看 24.9K关注 0票数 94

在参加和关注今年的Google Code Jam竞赛之后,我不禁注意到使用C/C++和Java的成功参赛者数量之多。在整个比赛中使用的语言的分布可以在here上看到。

在用C/C++编程几年之后,我最近爱上了Python,因为它的可读性/直接性。最近,我学习了函数式语言,如OCaml,Scheme,甚至逻辑语言,如Prolog。这些语言当然有它们的优点,在我看来,在某些情况下可以比C++和Java更容易地应用它们。例如,Scheme使用call/cc简化了回溯(回答几个问题所需的工具)和Prolog的逻辑规范,尽管由于其蛮力性质而效率低下,但可以极大地简化(甚至自动解决)某些难以理解的问题。

很明显,参赛者应该使用最适合挑战的工具。即使是x86程序集也是图灵完成的--这并不能证明用它来解决问题是合理的。在这种情况下,为什么使用不太常见的语言的参赛者比使用C/C++和Java的参赛者成功得多?不同地说,为什么成功的参赛者不使用那些虽然可能不那么主流,但可以证明是更好的工作工具的语言?

我的问题有几个动机。最重要的是,我想成为一名更好的程序员-无论是在实践方面还是在竞争方面。在被介绍了像函数式和逻辑式编程这样的漂亮范例之后,看到这么多人抛弃它们,转而使用C/C++和Java,这是令人沮丧的。这甚至让我质疑我对上述范例的赞赏,担心我不能在编程比赛中成为一名成功的Lisp/Scheme/Prolog程序员。

EN

回答 10

Stack Overflow用户

发布于 2011-06-24 12:47:37

我喜欢Jerry Coffin绘制Google AI竞赛参赛者图的想法,所以我将所有结果都绘制出来(计算平均值、标准差,然后在Excel中绘制正态分布曲线)。

对于Lua和JS,得到了这样的结果:

没有(参赛者很少,所以可能结果是不公平的):

看起来Java参与者明显比其他参与者做得更差,而Go、Common Lisp和C则表现更好。

票数 14
EN

Stack Overflow用户

发布于 2010-08-01 14:58:28

为什么我们都说英语而不是Esperanto?嗯,事情就是这样发生的。尽管英语不一致、臃肿,而且世界语被故意设计成“更好的工具”。

因此,一个原因是传统。在大多数学校,编程仍然是用C/C++、Java、Pascal甚至Basic来教授的。参加这些竞赛的主要是学生,他们选择自己更熟悉的语言。

此外,您可以注意到,大多数算法书籍以Pascal或Ada风格的伪代码为特色,而Lisp风格的很少。我不知道为什么,也许这也是一种传统。或者,这对算法来说并不是很好。

另一个原因是速度。虽然这对Google Code Jam来说不是问题,但在几乎所有的比赛中,2倍的速度差距是“接受”和“时间限制”裁决之间的区别。

换句话说,如果C++中的最优算法比Ruby语言快10倍,这可能意味着C++中的次优算法仍然会比Ruby语言中的好算法快。如果可以达到O(n*logn),竞赛作者通常不希望允许O(n^2)个提交。

票数 12
EN

Stack Overflow用户

发布于 2010-08-02 10:18:30

首先,我要质疑您的前提编辑:或者我认为的前提--使用C++和Java的参赛者表现得一样好。例如,在谷歌最近的AI竞赛中,first 100 places和last 100 places中的参赛作品使用了哪些语言:

使用C++和Java的参赛者似乎在那次比赛中并没有取得同样的成功。使用Python的参赛者似乎也不是特别好,尽管他们的人数要少得多,这削弱了这方面的任何结论。

第二,当然,大量的解释(正如其他人所指出的)无疑仅仅是熟悉每种语言的人数。现在学习Java课程的人数可能比曾经编写过Lisp、Scheme或Prolog的总人数还要多。

编辑:我认为第三种可能性就是多功能性。举一个极端的例子,Prolog非常适合于少数问题,但同样不适合许多其他问题。很少有人能够(或者至少做到了)学习一到两种以上的语言,足以在比赛中使用它们,所以大多数对这类事情感兴趣的人可能会选择对几乎任何事情都能很好地工作的语言,而不是试图为可能选择的每个问题学习一种专门的语言。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3380993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档