競技プログラミングという言葉を聞いたことあるでしょうか?
競技プログラミングとは
競技プログラミングとは、プログラマ同士で、プログラミング技術を競い合うための「競技」です。
例えば、これこれのパズルを解くプログラムを書きなさい、といった課題を与えられます。
問題の内容は、迷路の最短経路を調べたり、何かの確率を計算したりと、色々なものがあります。
競技に参加するプログラマは、そのような問題を自分で考えるのでは無く、プログラミングをして自動的に答えを出せるようにするのです。
ただプログラミングするのではなく、以下のような事が競技の「得点」として計測されます。
- 提出したプログラムが正しく動いたかどうか
様々なケースで提出されたプログラムが正しく動作するのかがチェックされて、採点されます。 - プログラミングするのにかかった時間
早く提出できたほうが得点が高くなります。
制限時間が設定されていることもあります。 - プログラムがパズルを解くのにかかった時間
提出されたプログラムがパズルを解くのにかかる時間が計測されます。
これも短ければ短いほど得点が高くなります。
(例えば、単純に「総当たり」で答えを探すようなプログラムだと非常に遅くなってしまい得点が低くなります)
TopCoder
競技プログラミングの世界で有名なのは「TopCoder」というWEBサイトで、世界中から数千人のプログラマーが常時、腕を競うために参加しています。
このサイトの中でも上位数パーセントのプログラマーには「レッドコーダー」という称号が与えられ、競技プログラミングの世界では一目置かれる存在です。
レッドコーダーは、日本人にも十数人しかおらず、アスリートのように毎日(プログラミングの)練習をしないと到達できない境地だそうです。
実際に役に立つか?
こういった競技で競われるプログラミングスキルは、一般的なプログラマーの仕事ではあまり使われません。
あくまでも「競技」としてのものです。
しかし、その他のスポーツと同様に、賞金付きの大会なども開かれています。
また、大きな大会の上位入賞者には一流企業から転職のオファーが来たりするそうです。
日々進歩していく新しい技術は、こういった競技で活躍できる人達が生み出しているのかも知れませんね。