「オブジェクト指向は「正しい」のか?」を読んで
gihyo.jpの中尾氏の連載記事(こちら)を読んだ。おもしろかったので紹介しつつ私の意見を書いてみようと思う。記事ではオブジェクト指向プログラミング言語がだんだんと主流となりそれを開発するための統合開発環境(IDE)がプログラマの裾野を広げたという前段があり、それがもたらしたものは何だろうと考察しながらその正しさについて述べられている。
「正しい」の客観的定義はなかなか難しいところだが、そのような議論をもとに今後を見つめなおすことは有意義だと思う。このエントリでは、元の記事の一部をエンドユーザコンピューティングの側面から切り出し考えることにする。オブジェクト指向が正しいかどうかについては本エントリには書いていないのでそこに興味のある方は元記事を参照いただきたい。
エンドユーザコンピューティングはエンドユーザが簡単にプログラミングできるようにすることを目指したものだ。システム開発に詳しくかつ業務に詳しい人材はなかなかおらず、育成も難しい。業務に詳しい人からシステム開発に詳しい人への伝達も思うようにいかないことが多い。
エンドユーザコンピューティングでは、業務に精通した人材にシステムの一部を直接開発してもらうことを支援すればよいとしている。GUIで直感的にシステムの一部を作成できるような開発環境、計算機内部のことをあまり意識しなくても済むようなプログラミング言語(たとえばメモリ周りの管理はランタイムが実行してくれる等、必ずしもオブジェクト指向言語であるとは限らないが)が用意された。
記事で指摘されているスキルのないプログラマを生み出すという危惧について、私はスキル向上に意欲のないプログラマを生み出すという意味であれば同感である。中尾氏もそれを意図してらっしゃるのではないだろうか。また、その状況は計算機リソースの制約が比較的ゆるめのオープン系開発の一部分に限定されているのではないだろうか。オープン系開発の残りの部分、組込み系システム、制御、通信等の分野では求められているスキルは依然として高いと思う。また、アルゴリズムやプログラム自体にもここで書いたような別次元のものが求められている分野もあるように思う。