mathjax

2015年4月24日金曜日

アルゴリズムとオブジェクト指向の間

classを中心としたオブジェクト指向な考えはプログラム全体を一つのシステムとして構築する上で有用であり、効率的なプログラミングのために有用だと言えます。

一方、個別具体的で詳細な問題をどう処理するかを考えるアルゴリズムの問題の重要性は言うまでもないでしょう。

前者を全体、後者を部分と呼んでも良いかも知れません。抽象と具体と言った方が適切かも知れません。

私自身、プログラミングを生業としているわけでもありませんが、年数だけは重ねているので、だんだんとシステム構築に重要性を感じるようになってきました。しかし、プログラミングを始めたばかりの人にとっては個別の詳細な問題の方が気になるものだと思います。

プログラミングを始めた若い人にとっては、既存のアルゴリズムであっても自分の手で再構築したり、目でよくソースコードを眺めたりしながら身につけていく過程が必要なはず。そしてある程度見通しができた段階で全体のシステムに目が向いていくのでしょう。年数を重ねていっても、そのアルゴリズムを考える過程が不要になるとは思いませんが、掛けられる時間は減っていってしまいます。その分、全体の構成を抽象的に捉える事にこだわらざるを得ないのかも知れません。

恐らく、これは学問についても言えることで、個別具体的な事象を理解しようとする営みをすっ飛ばして、抽象的な学問体系を身に着けさせようとする試みは失敗するでしょう。

幸い、pythonなら言語学習に要する時間が少なくて済むので、python not heavy 5で示したように、オブジェクト指向の紹介もスタートから短期間で、しかも簡潔に見せる事ができます。若い人は個別具体的なアルゴリズムの問題に取り組みながらも、オブジェクト指向の有用性を少しずつでも感じてもらえればと思います。

などと語ってみながら、私自身、自分のデータをipython notebook上で解析する際に、滅多に`class`なんてタイプしないのです。 pythonはソースが短いから、小規模なデータ解析だと過去の自作関数やセルをコピペしてその場で修正するだけで済んでしまう事が多いのです。classは寧ろ、C#でタイプしてる。

0 件のコメント:

コメントを投稿