割と身近にあるパラダイムを調べてみた(細かく分ければもっとあるだろうし、知っているパラダイムもあるだろうけど、ひとまず大雑把な区切りで分けてみた)。
- 構造化プログラミング(C言語とか)
- 関数型言語(Haskell, Lispとか)
- オブジェクト指向言語(Java, C#とか)
- アスペクト指向言語(AspectJ(Javaのフレームワークとして実装されてるのが多いのかな?))
おれの知識レベルを書いてみるとこんな感じか
- 構造化プログラミング……わからないでもないけど、経験が浅いのでイメージでしかわからない。きちんと学習したら、実はもう出来ていることなのかもしれないけど、深さがわからないな。
- 関数型言語……半年くらい前にHaskellが流行ったし、このパラダイムは抑えておきたい。C#3.0にも取り込まれる部分はあるし。
- オブジェクト指向言語……唯一できると思っているけど、レベル的にはまだまだだろう。とりあえずポリモーフィズムは実現できるので、できてないレベルではないかな。
- アスペクト指向言語……わからない。概要としては知っているけど、実際にコーディングレベルで試したことがないので微妙。
というわけで、自分の持っている概念を変える(広げる)ために、普段慣れ親しんでいないパラダイムについて「きちんと」知っておく必要があると思う。
で、まず知るべきターゲットとしてはやはり関数型言語だろう。他のは実装される言語レベルで近いので後で勉強するにしてもそこまで敷居が高くはないと思うから*1。
で、突然なんでこんなことを思い立ったかというと、ここに触発されたから。
id:higepon:20061027:1161960363
それと、以前買った「My JOB WENT TO INDIA オフショア時代のソフトウェア開発者サバイバルガイド」を読んで、新しいパラダイムを習得すべしっていうのがあったっていうのもある。
というわけで、関数型言語について勉強しよう! という気持ちはあるのだけど、どうやって勉強したら良いだろう。ひげぽん氏のよーにあの本を買ってみるか? いやしかし、それは敷居が高い気がする。ということは、ひとまずHaskell本でも買って関数型ってどんな感じ?っていうのを実際に触ってみたほうが良いか。そして、後に考え方をきちんと学ぼうと思ったと時にあの本を買うとしようか。うん。とりあえず関数型言語についてはそれで行こう。