在参加今年的Google Code Jam 比赛后,我不禁注意到使用C / C ++和Java的参赛者人数惊人。在整个比赛中使用的语言的分布可以在这里看到。
在C / C ++编程几年后,我最近爱上了Python,因为它的可读性/直接性。最近,我学习了OCaml,Scheme等函数式语言,甚至像Prolog这样的逻辑语言。这些语言肯定有它们的优点,并且在我看来,在某些情况下,比C ++和Java更容易应用。例如,Scheme使用call / cc简化了回溯(一种回答几个问题所需的工具)和Prolog的逻辑规范,尽管由于其强大的性质而效率低下,可以极大地简化(甚至自动解决)某些难以解决的问题包裹着大脑。
很明显,竞赛参赛者应该使用最适合挑战的工具。即使是x86组装也是图灵完整的 - 这不合理解决它的问题。在这种情况下,为什么使用Scheme / Lisp,Prolog甚至Python等较不常用的语言的参赛者比使用C / C ++和Java的参赛者要少得多?换句话说,为什么不成功的参赛选手使用的语言尽管可能不太主流,却可以说是更好的工具?
我的问题有几个动机。最重要的是,我想成为一个更好的程序员 - 无论是在实践方面还是在竞争方面。在被引入功能和逻辑编程之类的美丽范例之后,看到许多人抛弃它们而转向C / C ++和Java是令人沮丧的。它甚至让我质疑我对所述范例的钦佩,担心我不能在程序设计竞赛中成为Lisp / Scheme / Prolog程序员。