在参加了今年的 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 程序员不能在编程竞赛中取得成功。