July 12, 2004

オブジェクト指向と構造化プログラミング

via インデントさえあればって…[A.G.Labo blog]



jude-users ML での議論の続き[今日の役に立たない一言 − Today’s Trifle! −]
ストラクチャードプログラミング時代のCOBOLでは、パターンなど無くても、誰でもがどインデントなアプリを少しの勉強で、組めた。


あれ?COBOLって構造化プログラミングをサポートした言語なんでしたっけ?(僕は、COBOLを知らない)という話は置いといて。(インデントと構造化は話が違うでしょ!というのもこの際無視)
構造化プログラミングとパターンだとかオブジェクト指向ってのは粒度というかレイヤの違う話でそもそも比較するのがおかしいと思う。
構造化プログラミングはそもそも、逐次、分岐、繰り返し(ループ)を使ってプログラムを記述しましょう、ということだ。これも、レイヤは違うが、ロジックを記述するためのパターンと言えなくもない。確かに、COBOL全盛期のような頃は、そうだったんだろうが、それは、その程度の難易度の低いプログラムしか書いてなかった(書けなかった)だけであり、「パターンなんぞ知らんでもプログラム書けた」わけではない。つーか、その頃のそういった技術なり、知識なりだけではプログラムを記述することが困難になった(それだけ、アプリケーションに求められるものが複雑になった)という事実がまずあって、必要に迫られ、オブジェクト指向とか、パターンといった新しい考え方が生み出された(整理された)とするのが正しいと思う。プログラムの断片(サブルーチンと言ったり、最近では、メソッドかな)を記述するのに用いるのが「構造化」という考え方であり、そうやって組んだプログラム片をどのようにより大きなプログラムに統合するか、つなぎ合わせるかという観点で用いられる道具が、「オブジェクト指向」であり、「パターン」である、と考える。つまり、両者は相反するものではなく、視点が全く異なるものだと思う。

そういえば、僕が就職活動をしていた頃のことだ。とあるオブジェクト指向に強い会社に見学をさせていただき、実際にその部署の方とお話させていただく機会を頂いた。
当時、僕はOMTというオブジェクト指向ソフトウェア開発手法に関する研究に従事しており、日頃から感じていた、「OMTを始めとする開発方法論は難しすぎる。専門家はまぁいいとして全てのソフトウェア開発に従事する技術者がみな習得できるとは思えない。もっと簡単な方法論が必要なのではないか?」という疑問を失礼ながらもぶつけてみた。そのときに答えていただいた回答は、
「開発方法論は、全ての人が勉強する必要はないし。必要と思ってる人も限られるだろう。現状の技術なり、やり方なりで問題なくできる人はそのままでいいんだからどうでもいいし、相手にする必要はない。現状の技術ややり方では上手くいかない問題を持っている人がその問題を解決するために学べばいい。あくまで必要としている人にとって役に立つための道具であり、そういう人であれば、おのずと勉強するだろうから、難易度は問題とはならない。」というものだった。当時まだ開発現場を知らない学生の立場だった僕には目からウロコが落ちるほどの衝撃だった。それ以来、僕は「オブジェクト指向」を全てのソフトウェアエンジニアが学ぶ必要はない、と考えるようになった。


Posted by money at July 12, 2004 7:12 AM | TrackBack
Similarly Feeds
Comments

そうそう。禿同。
よく、「楽するための苦労は惜しむな」という言い方をしてるけど、要はおんなじことやと思う。
でも、その「感度」って結構、レアアイテムなんだよね。全ての年代含めて。それが最近のストレスの元になってたり。。。

Posted by: money at July 16, 2004 2:44 AM

初かきこ。
ちょっと開発から離れたからズレてしまうかもわからんけど。

確かに開発者みんながオブジェクト指向を学ぶ必要はないかもしれんけど、自分の手下として必要な人間を考えた場合はそれなりに
「感度」
を持っている人がやっぱり必要(重要)と思う。
そうでないと、かなりの部分の枠組みを決めてやらな行き当たりばったりの設計やコーディングになって、後のメンテの辛さがもろコストに跳ね返ってしまう。
「感度」のある人間は、要は後々楽したい人間ってことかもわからんけど、後で楽するために今ちょっとだけ工夫が必要と思っている人。そういう人はやっぱりオブジェクト指向とかに目がいって、結局はある程度は理解するんとちゃうかな?
いかに生産性を上げ、後でメンテが楽で、修正時に影響が少なく(オブジェクト指向では逆にネックになるときがある?)、障害時に追跡・復旧しやすくするか・・・うーん、らくしたーーーいっ、って人、やっぱ重要。

Posted by: かんとくっ at July 14, 2004 12:59 AM
Post a comment









Remember personal info?






Powerd by FC2.com
since 2/Feb/2004