夢追い人

"It takes a dreamer to make a dream come true."―Vincent Willem van Gogh

競技プログラマーの『精進』についての考察

0.はじめに

競技プログラミング歴若干一年ながらも今回このCompetitive Programming Advent Calendarに参加させていただきました@touyoubuntuです。こういう記事だから一応言っておきますが、TopCoderにはtouyou、Codechefにはtouyoubuntuとして参加しています。レートは灰色と緑でまだまだ初心者の域を抜け出せておりません(-_-;)
さて、今回僕がこのイベントに参加させていただくにあたって書こうと思っているのは題名の通り”競技プログラマーの『精進』”についてです。そもそもこの言葉(特にそれをアイコン化した精進アイコン)が広まったのはJOI(2010-2011)の合宿後だそうで、僕は完全に流れに乗っただけでこの言葉が広まった経緯については全く知らないのですが、まぁそういう立場から考えてみるのもいいかなと思いこのテーマを選びました。是非最後まで読んでいってください。

1.そもそも『精進』って?

ある状況下で固有名詞化された言葉を考察するにはやはり一般的な意味から入るのがセオリーだと思うのでまずは広辞苑の精進の定義を掲載したいと思います。

しょう-じん【精進】シヤウ・・・
(古くはソウジ・ショウジ・ソウジンとも)
1.〔仏〕ひたすら仏道修行に励むこと。
2.心身を浄め行いを慎むこと。
3.肉食せず、菜食すること。
4.一所懸命に努力すること。

このぐらいなら誰でも知っていることかと思いますが、とりあえず意味的には競技プログラマーの『精進』も正しいことがわかります。
ちなみにこれは余談ですが、プログレッシブ和英中辞典で調べると次のように英訳されます。

一
1.〔宗教的な修行をすること〕→修行religious
ascenticism
2.〔肉食をしないこと〕abstinence from fish and meat; a vegetarian diet
二〔熱心に努力すること〕earnest application; 〔専心〕devotion《to》

僕はascenticismが競技プログラマーの『精進』のもっとも正しい英訳とか思ってたりします。

2.競技プログラマーにとっての『精進』

それでは本題です。競技プログラマーにとっての『精進』は普通の『精進』とどう違うのでしょうか?見ていきましょう。
まず、競技プログラマーの間で『精進』という言葉は一般的な意味よりちょっと狭い意味で使われているように思われます。つまり、普通の『精進』は「一所懸命に努力すること」とされていますが、競技プログラマーのそれは問題を解くという行動に限られているということです。しかも、往々にして何かを復習するときは『精進』とは使わず、主にPKUやAOJなどオンラインジャッジの問題をこなす事に限定されます。また、副産物的な意味として、n問問題を解いたときに『n精進した』と言ったりします(n∈N)
では、なぜ『問題を解く』といったような直接的表現を使わずに『精進』という言葉で代用するのでしょうか?これは広辞苑の定義に立ち返ってみると、ここに宗教的な意味合いがあり、単に努力するというニュアンスだけではなく、「極めるために」努力するといったニュアンスが入っているからだと考えることができます。
『精進』する・・・それは自分の能力を高めて常にベストな状況で競技に参加する・・・競技プログラマーのこういった姿勢はある意味賞賛に値するものだと思います。

3.精進アイコン

さて、はじめにでも書いたように去年のJOI合宿でJOIerを中心とした競技プログラマーに広まった精進アイコン、これは競技プログラマーにとってどのような意味を持っているのでしょうか?
ひとまず精進という行為のモチベーションを上げると言った意味では、そういうこともあるでしょう。熟練の競技プログラマーにとってみれば「精進アイコンにしなければ精進できないほど貧弱なのか」とか思っている人もいるようです。
でも、僕はこれにはそんな安直な理由ではなく、ある意味の集団心理が大きく働いているのではないかなと思っています。いや、たぶんそうでしょうけど(笑)一度、最初に精進アイコンにした人を探してみたいですw

4.具体的な『精進』の方法

具体的な精進の方法というわけで・・・
はい。PKUやらAOJやら解くだけですね(笑)
いい精進方法とかあるらしいんですが、僕はまだ知りません。最初の法はPKUでBronzeと検索してそこで出てきた問題がちょうどいい感じの難易度になってます。
もちろん各種コンテストの過去問を解くのもひとつの手です。TopCoderやCodeforcesには過去問が公開されて、ジャッジもしてくれるので勉強になります。
このくらいでしょうかね・・・蟻本片手の精進はいいところもあるし悪いところもあるしという感じですが・・・

5.最後に

グダグダな記事になってしまった気がしなくもありませんが・・・よしとします(笑)
少しでも皆さんがこれをきっかけに精進をしていただけたら幸いです。僕もがんばります\(*⌒0⌒)♪
最後まで読んでくれた方、ありがとうございましたm(__)m