面白い記事を見かけた。「オブジェクト指向はこうあるべき」で消耗してるの?この記事にあるオブジェクト指向の価値を利便性に置くという考え方には激しく同意する。その上で,私の黒歴史を交えて,戯れ言をいくつか書いてみよう。「プログラミング」で最初に何を学びましたか?最近の子らは「プログラミング」で何を学ぶのだろう。授業で真っ先にやらされたのがフローチャートを書くことだった1。ちなみに授業の最初のお題は素数を求めるプログラムだった(ありがちw)。そもそも「コンピュータ」っていうのは,名前の通り,「計算をする機械」なわけですよ。フローチャートというのは「計算する」ことをモデル化したものなわけ。「計算する」ことに関してはフローチャートで全て表現できる。思ってた時代がありました。それから,まぁ,紆余曲折あって(バブル最盛期に)某システムハウスに潜り込んだのだが,初仕事の設計書で書かせられたのはフローチャートではなく状態遷移表だった。「フローチャートなんか要らん(コードを見れば分かる)」と言われましたよ。これが「社会の現実」ってやつですね,分かります。処理する機械」なんだということを。少年は「オブジェクト指向」と出会う(笑)「情報」ってなに?少なくともノイマン型コンピュータにおいては,基本的に以下の3つの機能しかない。指定したアドレスから命令をフェッチして計算する指定したアドレスからデータを読む指定したアドレスへデータを書く指定したアドレス(メモリとは限らない)に何があるのか決めるのはコードを書く人間側の責務であり,それを可能とするプログラミング言語であれば「情報を処理する」ことに関しては何でもできる。「情報」ってなに?「オブジェクト指向」以前の「構造化プログラミング」の時代において,情報とは「データ」と「機能」だった。「データ」と「機能」だけではコードは簡単に破綻する。ソースコードが凄まじかった思い出」という記事を書いたが,これは情報を「データ」と「機能」と考えた場合の極端例と言える。「構造化プログラミング」時代のソフトウェア・エンジニアのコードは何故破綻しなかったのか2。ソフトウェア・エンジニアが暗黙的に考えていたこととはなにか。その答えのひとつが情報を「オブジェクト」と考える「オブジェクト指向」設計ないしはプログラミングである。「オブジェクト指向」設計ではオブジェクトを以下の3つの組み合わせと考えた。状態(属性)機能(操作,手段)特に重要なのが「名前」である。「名前」とは自と他を区別する識別子で,区別することでそこに「関係」が生まれる。「犬は動物の一種である」というのは,「犬」と「動物」の関係が「一種である3(is-a)」ことを示す。「一種である」という関係を「クラス・オブジェクトの継承」という形で記述するが,継承は「オブジェクト指向」に必須の記述ではない。subtyping)のような記述だってあるのだ4。「オブジェクト指向」においてはオブジェクトとその関係をモデル化することが重要で,それを記述することができるのであればどんな言語でも構わないのである。言語でも記述できるし実際にそういうプロジェクトに関わったこともある(大昔の話だよ)。プログラミング言語はプログラミングの手段に過ぎないということだ。言語で「オブジェクト指向」なコードを書こうという人は少ない(いや,ほぼいない?)だろう。なり意図や文脈を記述するようになってきたことだと思う。した発展はプログラミング言語のトレンドがオブジェクト指向言語だけではなく関数型言語など複数のパラダイムをブレンドした「マルチパラダイム・プログラミング言語」へシフトしていることからも言えるんじゃないだろうか。主流となりプログラムコードがエンジニア同士の対話手段として使われるようになったことも影響しているかもしれない6。いう意味で「オブジェクト指向はこうあるべき」という議論は不毛で非生産的な行為と言える。私達はもはやその先に足を踏み入れているのだから。(ISBN)評価2002年に技術評論社から出た同名タイトルのリニューアルらしい。PA-APIv5)今どきの子は知らないかも知れないので念のために解説すると,「フローチャート」というのはコンピュータの処理の流れ(工程)を図式した一種のモデリング言語と思っていただいて構わない。↩︎いや「動かないコンピュータ」なんてザラにあったけど。一種である」という関係を「汎化(または特化)」と言う。当て嵌めて考えれば分かりやすいだろう。↩︎むしろ継承にこだわって菱形継承のような弱点や例外処理のような歪な構造を生み出したことは初期のオブジェクト指向プログラミング言語の黒歴史と言えるだろう。↩︎これはいわゆる「文芸的プログラミング」とは意味が異なる。紛らわしくてゴメンペコン。↩︎まさしく著作権による知的独占からの解放がもたらした好例のひとつですな。コードを「追跡コード」としてブロックする場合があります。電子メールも利用できます。電子メールを利用する際の公開鍵はプロフィールから取得できます。Baldanders.info.。