2017.12/26 プログラミング(8)
構造化プログラミングのパラダイムまでは、いくら教科書にプログラム設計が重要と説明されていたとしても、日曜プログラマーとして作成するA4で50枚程度の数値計算やシミュレーションのプログラムならば、わざわざ設計しているよりもプログラムを書いてしまった方が早い。
Cでコーディングされたパーコレーション転移のシミュレーションプログラムは、ヘッダーも含めてすべてをプリントアウトするとA4で40ページほどになるが、それを作るために、わざわざプログラミング設計などしていない。
頭の中で描かれたコンピューターへ送る命令を構造化して考えることは、それほど難しい作業ではなく、小説家が小説を書くよりも易しい作業である。不特定多数の読者に感動を与えるような表現にする必要はなく、自分で後から読みやすくする工夫だけでよい。
しかし、オブジェクト指向のパラダイムになってくると、コンピューターへの命令という視点ではなく、自分が解きたい問題(これが一つのオブジェクト)に着目し、その問題を解くための道具=部品のようなもの(これは他のオブジェクト)を考えて行く、というステップをとる。
オブジェクト指向とは、コンピューターへの命令など忘れて問題解決するのに容易な手順を考えてプログラミングするためのパラダイムなのだ。
換言すれば、問題解決に必要な各要素的課題をオブジェクトとして設計してゆき、その課題がどうふるまったら問題解決できるのか試行錯誤しながら、プログラムを組んで行くような手順となる。ゆえに問題解決を思索する部分、すなわちプログラム設計が重要になってくる。
残念ながら現在販売されているプログラミング関係の書籍で、オブジェクト指向というものをここまで明解に説明している教科書を見たことがない。
その教科書は、オブジェクト指向のパラダイムで必要とされる用語説明のオンパレードでプログラム設計が語られて行く。その結果、専門外にはちんぷんかんぷんとなる。
そのうえ、情報工学の立場からオブジェクト指向の考え出された背景が描かれる。すなわち、プログラム開発が多数の人間でプロジェクトを組んだ時に開発しやすくするために考え出された、と説明されている。
このパラダイムを考え出した人はそうだったかもしれないが、オブジェクト指向の言語の仕様を考察する過程で、その後に先に書いたような擬人化の思想や問題解決手法なども関係することに気がついたであろうと思われる。
このメリットに着眼した方がイノベーションの視点でわかりやすい。すなわち、オブジェクト指向とは、コンピューターの本来の使い方である問題解決の視点で考え出されたプログラミングパラダイムである。
前向きに行う科学的推論とは逆にオブジェクト(問題のゴールでもある)を追求するというパラダイムは効率的な問題解決の手法を提供している。そして、このパラダイムの発明により逆向きの推論を行うエージェント指向が考え出され、人工知能の飛躍的発展を生み出した、と当方はプログラミングパラダイムの変革を捉えている。
蛇足だが、難解な情報工学の教科書のおかげでオブジェクト指向と格闘しなければならなかった30数年前に新しい問題解決法を生み出した。この問題解決法のおかげで、有機合成化学が専門だった当方が高純度SiCの発明をおこなったり、その後セラミックスの専門家になってから転職先で高分子技術開発を担当しても多くの発明を行うことが可能となった。
会社の業務として研究開発を行うときには専門能力など不要であり、オブジェクト指向的な思考力こそ重要(注)である。何故なら、企業で行うべき研究開発とは市場でイノベーションという振る舞いをするオブジェクトの最適設計だからである。
(注)だからといって、USITが優れた問題解決法とは思わない。USITの手法説明は、まさに難解な情報工学の教科書そのものだ。おそらくUSITを考案した人もオブジェクト指向に感化された可能性がある。
カテゴリー : 一般
pagetop