2014-07-11

日記

 午前は病院。昼間は少し寝てた。午後から大学でICPCの予選。5完だけど(私は1問しか解いてないけど)同じ大学の人が強すぎて突破できるわけもなく。でもF問題がいけそうないけない感じがとても悔しかった。そんなこんなで一段落したので、競技プログラミング全体に関する所感をまとめておくことにする。軽く検索してみるとやっぱりいろいろ議論があるみたいで。まず私はそもそも経験量が少ないから何を言っても仕方ない感じはあるのだけど、備忘録としても。今日は終わった後は帰ってきて普通に生活していた。
 ええとまず長所は教育的な効果に尽きる、と思う。まず基礎的なプログラミングの導入として。あるいは純粋なデータ構造やアルゴリズムの習得として。好んでパズルや数学の問題を解くのが好きなような中学生高校生がプログラムを書くことを会得したいのなら最適な方法だろう。また、アルゴリズムや計算量の感覚も、実際に何かしら開発するにおいては欠かせない要素ではある(しかしその感覚はこうした競技性のあるものでしか身につかないかといえばそうではないように思う)。
 で、短所は生産性がない、発展性がないこと。いや、確かに数学的な素養がある人が活躍できる、というか、応用数学の分野で顕著なことができるような人にとっては有用なのだろうけど、そうした有用さには汎用性がない。あくまで趣味であって、趣味を仕事にするのは難しい、というありがちな構図だと思う。扱う内容が理想的なケースで綺麗だから、という問題のような気もする。つまるところ実務的に必要になるようなシステム設計というのはもっと多種多様なデータを扱って処理するために複雑な実装をしなければならないし、言語やフレームワークにも従わないといけない。
 こうした経験でアルバイトの作業が円滑に進むようになるのかどうか、というスタートで私はここまでの印象を書いている。実際の開発は問題がもっと煩雑で、細かい仕様を定義しなくちゃいけなくて、プロジェクトは多く、コードは膨大な量で、多くの開発者とバランスを取りながら進めなければならない(企業レベルで何かをやろうとすると、独力で解決できるレベルを大きく超え、協調が必要になる)。非常に面倒くさい。さくさくコードが書けるわけでもない。たかがアルバイトなのだけど、最近まともに動いてる大きめのソフトウェアの中枢を直に見ることになって、げんなりしてコード読みたくなくなったりしたのだ。慣れろって話だけど。仕組みがわかればたやすいのだろうし。
 趣味や競技としてコードを書くのはとても楽しい。自分がやりたいことを実現して、見つけて、導き出す、という行為は達成感や満足感が大きく伴う。んでもって私にとっては院試に向けたアルゴリズムやら細かい感覚の勉強にも役立っていると思う。ただし、競技そのものに思いっきり時間を注ぎ込むようなことはちょっと怖い(誘惑はかなりある)。最終的には実装力があっても問題の解き方がわからなきゃ仕方ないという事態を身をもって知って(頭の悪い私は)そう遠くないレベルで頭打ちが来るだろうとも思う。その頭打ちまで行けるようにそのうち時間をかけたいとは思っている。それくらいの意気。
 プログラミングコンテスト、と言いつつも、プログラムを書くことが能力として前提になっていく人たち(そうした人たちはこれからどんどん増えていくのだ)にとっては、単なるパズル大会になっちゃうんじゃないかな、とまで考える。言い過ぎか。何だかんだ言っても問題解決能力の陶冶にはなる。で、やっぱり万人ができることではないとも感じる節はある。義務教育にプログラミング入れるべきかどうかって話になったら私は間違いなく反対するだろう。それよりはもっと道徳教育やリテラシーの向上に務めるべきだ(話を逸らした)。
 かつて高校の選択の授業でPascalという言語を習って、そのときフラクタル図形の出力などをしていた記憶がある。懐かしいなぁ。教育においては触りたい人がだいたいあれくらいの自由度で触ればそれでいいのだと思う。適当に書きすぎた。眠いのでここまで。

広告を非表示にする