Main | February 2004 »

January 2004

January 05, 2004

オブジェクト指向プログラミング

******************************************************************
_/_/_/_/_/_/_/_/_/ ソフトウェア業界 新航海術 _/_/_/_/_/_/_/_/_/_/
******************************************************************
第5号 2004/1/5
▼ まえがき
▼ オブジェクト指向プログラミングとは
▼ オブジェクト指向言語とは
▼ オブジェクト指向プログラミングの普及速度は遅かった
▼ オブジェクト指向プログラミングの普及速度が遅かった原因
▼ オブジェクト指向プログラミングのまとめ
▼ 次回以降の予告

*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
まえがき
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
蒲生嘉達です。
明けましておめでとうございます。
本年も宜しくお願い致します。

前号では、全ての創作活動と同様にシステム開発にも
下記の二種類の困難が伴うことを述べました。
・媒体に表現することの困難さ
・構想を生み育てる困難さ

そして、OS、高級言語、UNIXは、媒体に表現することの
困難さを除去するための技術であることを説明しました。

今週号では、オブジェクト指向プログラミングについて
本メルマガ流に多少の独断も交えて解説します。


*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
[5年後、システム開発の仕事はどのようになっているか?]
 オブジェクト指向プログラミングとは
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

第1号で、高級言語の発明がプログラマの構想を表現する
ことを飛躍的に容易にしたということを記しました。
「変数」「配列」「サブルーチン」「関数」等の扱いやすい
概念や、「選択」「反復」などの制御構造は高級言語により
提供されたものです。

しかし、単純な数値計算ならまだしも、複雑な業務
アプリケーションを作成しようとすると、従来の高級言語が
提供する仕組みだけでは力不足です。

現実世界は多様な事象からなり、且つ、その事象は互いに
複雑な関連性をもっています。
そして、プログラマが実現したい構想は現実世界を抽象化した
概念を部品として生まれます。

オブジェクト指向プログラミングとは、高級言語の文
よりももっと大きな単位の抽象化レベル、すなわち
プログラマの構想に近いレベルでプログラミング
することです。
構造化プログラミングに比べて、より人間の構想を
模倣しようとする表現技術です。

したがって、オブジェクト指向プログラミングも
表現の困難さを除去する技術です。


*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
[5年後、システム開発の仕事はどのようになっているか?]
 オブジェクト指向言語とは
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

上記の説明で明らかなとおり、オブジェクト指向の要求は
ごく自然なものであり、オブジェクト指向プログラミングに
オブジェクト指向言語は必須ではありません。

RDBMSのテーブル設計とは、現実世界から類似した事象(object)、
その属性(attribute)、単独の事象(instance)を抽出する作業です。
また、構造化プログラミング言語でも、ライブラリ化によって
(モジュール化ときれいなインタフェースという意味で)
カプセル化に近いことは行なわれてきました。

オブジェクト指向言語は、カプセル化、抽象データ型、継承
というオブジェクト指向プログラミングの手法が、あらかじめ
言語仕様に組み込まれている言語であり、その言語を
使用することによりオブジェクト指向プログラミングを徹底
させることができます。


*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
[5年後、システム開発の仕事はどのようになっているか?]
 オブジェクト指向プログラミングの普及速度は遅かった
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

オブジェクト指向プログラミングの普及は急速なものでは
ありませんでした。
1970年代後半には既にオブジェクト指向言語であるSmalltalk
が開発されていますが、オブジェクト指向言語の本格的普及は
2000年以降のJavaの急速な普及を待たなければなりませんでした。
データベースの世界では、オブジェクト指向データベースは
今でもマイナーです。

構造化プログラミングと比較するとその普及速度の遅さは
際立ちます。

構造化プログラミングがダイクストラによって提唱されたのは
1970年頃で、1980年代前半には広く普及していました。
COBOLにも構造化という考え方が取り入れられ、構造化COBOLは
大規模な業務アプリケーションでは最も標準的なプログラミング
言語となり、現在にいたっています。
オブジェクト指向COBOLも作られましたが、ほとんど使われていません。


*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
[5年後、システム開発の仕事はどのようになっているか?]
 オブジェクト指向プログラミングの普及速度が遅かった原因
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

何故オブジェクト指向プログラミングは構造化プログラミング
ほどには熱狂的に受け入れられなかったのでしょうか?

(1)プログラマの再教育のコスト
オブジェクト指向言語によって構文上の記述を節約
できることは明らかです。保守性、拡張性の向上も明らかです。
しかし、上述のとおり、オブジェクト指向プログラミングは
構想に近い部分の表現技術なので、発想の転換が求められ、
そのためプログラマの再教育が必要となります。
そのコストも採用を遅らせる原因となりました。

(2)効果が劇的でない
もしもRDBMSの理論どおりデータベースが適切に設計されており、
構造化プログラミングによりモジュール化ときれいな
インタフェースが実現されていたなら、言語を従来の構造化
言語からオブジェクト指向言語に切り替えることによる
メリットは劇的なものとは言えません。

オブジェクト指向の効果が薄いというよりも、データベース
設計とモジュール化の過程で既にオブジェクト指向的
考え方(高レベルな表現)が入り込んでいるが故に
オブジェクト指向言語に切り替えても効果は劇的とならないと
いうほうが正確です。

オブジェクト指向COBOLが普及しない理由は、構造化COBOLを
オブジェクト指向COBOLに変える必要性を誰も感じないからです。


(3)再利用は現実には難しい
また、オブジェクト指向言語が重視している部品の再利用と
いうことが、下記の理由によってなかなかうまくいかないと
いう点もあげられます。
・再利用可能な部品を作成することは一回切りの部品の
 作成よりもはるかに労力がかかります。
・ツールは機能が豊富になるほど学習に時間がかかります。
 それと同様に再利用可能と思われる部品が増えれば、学習
 時間が増えてしまいます。


*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
[5年後、システム開発の仕事はどのようになっているか?]
 オブジェクト指向プログラミングのまとめ
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

たとえ普及に時間がかかったとしても、オブジェクト指向
プログラミングは表現技術の必然的な進歩であり、
最近話題となる新しい技術の多くはオブジェクト指向
プログラミングを前提としています。

オブジェクト指向プログラミングの基本的な手法は
カプセル化と再利用です。
カプセル化による情報隠蔽は表現のレベルを上げる
最良の方法であり、再利用も注意深く行なわれるなら、
すばらしい成果を期待できます。


*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
次回以降の予告
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
1/12 
 1/19 ?
次号は、1月12日発行予定です。乞うご期待!!


--------------------------------------------------
発行:
株式会社 慶
 代表取締役 蒲生 嘉達
y_gamou@kei-ha.co.jp http://www.kei-ha.co.jp


|

Main | February 2004 »