今年の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プログラマーとして成功することができないのではないかと心配して、上記のパラダイムに対する私の賞賛に疑問を投げかけることさえあります。