[Diary/2005/September]

数学者とプログラマをOOP的に考える / 2005-09-06 (火)

IT用語

7割以上の人は理解していないIT用語を使っている (/.J)

「これってMP3できるの?」って訊かれて,最初全然意味がわからなかった経験あり.
世間一般に通用する言葉が通じない我々の方がダメダメなんだろうなぁ.

数学者とプログラマ

「数学者はコーヒーを燃料に定理を生み出す」
「プログラマはコーヒー(人によってはコーラとピザ)を燃料にコードを生み出す」
この定義で考えると,数学者はプログラマのスーパークラスなんじゃないだろうか.
少なくとも,同じ系統であることは確かなようだ.

実装を考えてみよう

C系(C++,Javaなど)であれば以下のようになる.

void setFuel((Coffee*) aCup)

で,runメッセージを送るか(runメソッドを呼び出すか),もしくはsetFuel自体が起動キーになってもいいんだけど,
内部に生成されたモノ(定理かコードか)が蓄積される.
この蓄積されたものが,

void* getResults()

で取得できる場合,基本的に数学者とプログラマのインタフェースは共通で扱うことができる.
(ただし,取得したオブジェクトは,数学者の場合WhiteBoardクラスに投げることで結果を見ることができるが,プログラマの場合Computerクラスに投げる必要がある)
また,同様に,

void smile(void)
void notSmile(void)

の両方のメソッドを備えていることも一般的によく知られているので,同一のインタフェースを持つと判断していいかと思う.

さてここで,「プログラマはコーヒーだけではなく,コーラとピザも燃料として摂取できる」特徴があることと忘れてはいけない. したがって,プログラマは,

void setFuel((Cola*) aGlass, (Pizza*) aPiece)

のメッセージ(メソッド)を受け付けることもできる. そう考えれば,プログラマは数学者クラスを継承し拡張したものであると考えることができる.

しかしながら

我々の世界でよく言われる「自己複製を行うコード」を出力するのは,一般的には数学者の方である.
プログラマクラスにおいては,この機能は基本的に実装されていない.

したがって,数学者クラスとプログラマクラスは,同様のインタフェースを持つ並列的な関係にあるとするのが,正しい所ではないだろうか.

よって,数学者もプログラマも,人間とチンパンジーのように,祖先を同じくするだけで別の系統の進化をたどった存在である.

そこで問題になるのは,両者のスーパークラスはなんなのか?ということである.

てなことを

だらだらと考えていた.
今日は,MIDIキーボード接続してのMaxのプログラミングでした.
OSCでSwarmとの接続テストと,キーボードの入力からセルの状態への変換ルールの作成とか.

[ ツッコミの受付は終了しています ]
この記事のリンク元