makotan _at_ gmail dot com

手続き型とオブジェクト指向と関数型

なんでオブジェクト指向だけ型じゃ無いのかと・・・まぁ言語の系統の違いなので細かいことは気にしない
所詮はメモだしねw

手続き型

その名の通り、手続きをいっぱい書いてその通りに動かしていく
作りやすくて考え方が自然なのが良い
なので、短時間で作り上げるのには一番向いてる
でも、ちょっと複雑なことをやろうとすると限界が来て再設計することになる

オブジェクト指向(純粋)

オブジェクト間のメッセージのやりとりで動かしていく
本来はこれだけで、シミュレーションから派生した系統
業務をシミュレーションすれば業務システムができあがると

オブジェクト指向(クラスベース)

本来のオブジェクト指向から一部の特徴を手続き型に取り込んだので、本来は手続き型の派生系
手続き型はプログラムが大きくなると上手く制御しないと構造が破綻しやすくなるので、本来のオブジェクト指向の一部の特徴を取り込んでハイブリッド型に仕上げたもの
手続き型でも書けるし、ある程度までならオブジェクト指向も出来るのが特徴
問題は自然と手続き型っぽくなるので、オブジェクト指向のメリットが出にくくなること

関数型(純粋)

結果を導く単純な関数を定義してそれを欲しい結果に向けて組み合わせることでプログラムを動かしていく
一度決めた値は2度と変わらないので、同じ入力に対しては常に同じ結果が出るのが特徴
表計算ソフトの特徴とほぼ一致
従来アカデミックな分野では使われていた模様だけどSIの世界には全く来なかった
問題は実装が出来上がるまでの生産性が低く感じること(テストまで含めるとトータルの生産性は高いはず)

関数型(クラスベースのオブジェクト指向とのハイブリッド)

クラスベースのオブジェクト指向と純粋関数型のハイブリッド。どっちの特性を強く持つかで特徴が大きく変わる
純粋関数型にある難しさをクラスベースのオブジェクト指向で緩和したもの
純粋関数型ではあり得ない"変数"を使えるのが特徴
クラスベースのオブジェクト指向の弱点の手続き部分を関数型で書くなどの方法がとれるのが特徴
オブジェクト指向が歩んだ道をもう一回たどることになるので流行まではだいぶ時間がかかるはず
今後の課題は”関数”とか"評価"などの特徴的な言葉の拡大解釈がどこまで広がるかと、どうやって正しく伝えていくのか

感想

数日前から書こうと思って忘れてたネタw
しっかりした関数型が流行って常識的に使われるようになるとオブジェクト指向しか知らない人は年寄りだからって老害扱いされたりして・・・怖い世の中だな〜w
新たな環境の出現と手法の変化と新たな老害の発生はゆっくりとだけど連動してる気がして仕方ない