在参加了今年的Google Code Jam 竞赛之后,我不禁注意到使用C / C ++和Java的[成功]参赛者数量之多。比赛中使用的语言分布可以在此处查看。
用C / C ++编程几年后,最近我因其可读性/简单性而爱上了Python。最近,我学习了OCaml,Scheme等功能语言,甚至还学习了Prolog等逻辑语言。这些语言当然有其优点,在我看来,在某些情况下,这些语言比C ++和Java更容易应用。例如,Scheme对call / cc的使用简化了回溯(回答几个问题所需的工具)和Prolog的逻辑规范,尽管由于其强力性质而效率低下,但可以大大简化(甚至自动解决)某些难以解决的问题缠住你的大脑。
显然,竞赛参赛者应使用最适合挑战的工具。甚至x86程序集都是Turing完整的-并不能证明解决它的问题。在这种情况下,为什么使用较少通用语言(例如Scheme / Lisp,Prolog甚至Python)的参赛者比使用C / C ++和Java的参赛者的成功率要低得多?用不同的措辞,为什么成功的参赛者不使用虽然可能不那么主流但可以说是更好的工作工具的语言?
我的问题有多种动机。最重要的是,无论是在实践方面还是在竞争方面,我都希望成为一名更好的程序员。在介绍了诸如函数和逻辑编程之类的精美范例之后,令人沮丧的是,看到这么多人抛弃它们而转而支持C / C ++和Java。甚至令我质疑我对上述范例的钦佩,担心我无法在编程竞赛中以Lisp / Scheme / Prolog程序员的身份成功。