競技プログラミングとは何か?

This entry was posted by on Thursday, 9 September, 2010

目指せ!プログラミング世界一―大学対抗プログラミングコンテストICPCへの挑戦

実は以前から、こういう本があるといいんじゃ、と思ってたのが本書でした。この本の想定読者は高校生から情報系の学部生、といったところですが、私の知り合いでエンジニアとかではない人にも一読を強くおすすめします。

以前ネタでこんなツイートをしたんですが(http://twitter.com/jmuk/status/16057590356)、

そろそろプログラミングコンテストを題材にしたまんがか小説が書かれてもいいのかもしれない、などとふと思った。日本で優勝したところで世界各国の代表の強豪と戦うあたりは少年漫画向きだぞ。
3:43 PM Jun 13th via web

私の知り合いの大部分は「プログラミングコンテスト」というのがどういうものかを全く知らないか、まったく誤解していたみたいで、大変もどかしい気分を味わいました。確かに私も説明を省いたんだけど、なるほど世間的には「プログラミングコンテスト」というと、たとえば大昔の、ゲームをつくって応募するといったようなコンテストを想像するものなのか、などと逆にびっくりした次第。

そういうものではない、イマドキの若い学生や技術者がはまっているプログラミングコンテストっていうのは、もっと競技性の高いもので、たとえていえばロボコンとかのノリに近い。つーかロボコンは映画や小説になってるわけだから、それなら競技プログラミングなんてもっと向いてるんじゃないかなあ、ってのが↑のツイートの意図でした。いや実際、ICPCなんてチーム戦だしエンタメ向きだと思うんだけど、どうですかねー。

で、もしそうしたプログラミングコンテストのことをご存じないのなら、どうして私がそんなことを思ったのか気になるなら、この本を読んでみていただきたい。この本、後半はコンテストの実際の課題をあつかってるから読んでもわからない人も多いと思うけど、前半部分だけで「感じ」はつかめるんじゃないだろか。

こういうプログラミングコンテストのプログラミングっていうのは、仕事で書くようなプログラムとは違う。広範な知識と、それを応用する技量が求められる。もちろん、複雑な問題の説明をきちんと理解して、プログラムという形で表現するための才能も必要になる。本職のプログラマや有能なエンジニアだからできる、というものではなく、ある種の才能や訓練が必要になるものだ。ロボコンの技術と本物のロボット工学との関係に近いかも。要素要素は重複していたりするけど、基本的には違うものなわけで、だから「競技プログラミング」って言ったりする。

こういう競技プログラミングがいつごろ始まっていつごろから今の盛り上がりになったのか、というのはよくわからないけど、個人的な実感としてはちょうど2000年ぐらいから00年代を通じて盛り上がってきたという印象を持っている。実際、この種のプログラミングコンテストで最大規模のものかつ最古のものが大学生を対象としたICPCで、これは70年からあるらしいけど、97年代から参加学校数が拡大しているらしい。ほかに、ICFPのプログラミングコンテストが98年から、TopCoderが01年から、Google code jamが03年から、Microsoft Imagine cupが04年から。やっぱり00年代前半ぐらいから盛り上がってきていたものなので、それより上の年代にはあまりピンと来ないのかもね。

なお、高校生を対象にしたものだとSuperConが95年から、情報オリンピック(89-)も、日本は94年から96年の参加となっていて、前出のものより少し早いのは何か象徴的な気がする(なお、情報オリンピックには06年から参加を再開したようだ)。わたしもSuperConは(先輩にくっついて)出場したことがあるけど、それより年下の人たちがこういう文化に親しんでいったのかも? SuperConについてはスーパーコン甲子園―プログラミング大好き高校生たちの挑戦!っていう本もあるみたい。これこないだふと見てたら高校生時代の弊社社員の写真があって吹いた。

Comments are closed.