生物とオブジェクト指向:Polymorphismについて

オブジェクト指向プログラミングのインスピレーションは生物学でした。ここまで言い切れるかどうかわかりませんが、かのAlan Kayは学部学生のときに生物学を勉強し、生物のコンセプトを頭に描いていたと自分で語っています

昨日、ふといろいろなブログを読んでいるときに、Windows 95のインタフェースデザインに関わった日本人、Nakajima Satoshi氏のブログに行き当たりました。題名は「日本語とオブジェクト指向」。日本語は語順的に、名詞(オブジェクト)を先に指定し、そのあとに動詞(メソッド、メッセージ)を指定する構造になっていることから、頭を使わなくてもしゃべりやすいという主旨だと思います。酔っぱらってもタクシーの運転手に道順を指定できるのは、日本語のオブジェクト指向のおかげという感じです。オブジェクト指向の中でも、これはPolymorphismというコンセプトです。

僕自身はこのブログの見解には必ずしも賛同しません。しかしPolymorphismの大きな効果が、「動詞」(プログラミングで言えばメソッド)のボキャブラリーを大幅に減らしたとしても、表現力を落とさないで済むことだというのには全く同感です。

そして高等な多細胞生物は、限られた種類のシグナリング分子、サイトカイン、ホルモンしか持たないにも関わらず、多様な機能をコントロールする必要がありますが、これができるのはこのPolymorphismのおかげだと私は感じています

僕がシグナル伝達を勉強していた頃(90年代)は、rasだとかMAPKのような少数のタンパク質が、多様なシグナルの伝達に関わっていることが明らかになってきていた頃です。どうして互いに全く関係なさそうなレセプターの下流に、同じrasやMAPKが関係してくるのであろうか。そんなことを不思議だなぁと議論していました。もっともほとんどの人は生物をシステム的に考えるのではなく、新しい遺伝子や新しい相互作用を発見することばかりに興味を持っていましたが。

ぼくは最近はちゃんと勉強していないので、これに対する一般的な考え方がどう変化したのかはわかりません。恐らく細胞の環境や分化状態が重要だという考え方に向かったと思います。しかしオブジェクト指向プログラミングのpolymorphismの考え方からすると、これは全然不思議なことではなく、省力化を考えればむしろ当たり前な手法を生物を採用したことがわかります。

生物学とプログラミングの関係についての、僕の意見の一つでした。