見出し画像

(第11回)「プログラミングやりたくない!」〜下から目線のコーディング武者修行〜

「オブジェクト指向はあるのにサブジェクト指向はないの?」

プログラミングの学習を始めて以来、何度となく「オブジェクト指向」という言葉を耳にしましたが、「サブジェクト指向」がないことが気になってしょうがない。

プラス(+)があればマイナス(-)があり、実数Real Numberがあれば虚数Imaginary Numberがあるのが世の習い。

ところがプログラミングの世界では、オブジェクトObjectと対になるはずのサブジェクトSubjectがないのはなんでなの?と。

長らく疑問に思ってきた「オブジェクト指向はあるのにサブジェクト指向はない」理由についても、ジョージ・ブーレさんがヒントを残しててくれました。

[ブーレさん的に言う”Object”と”Subject”とは?]

(1) ブーレ代数の表し方 [前提]

ブーレ代数Boolean Algebraでは、論理学Logicsに使う自然言語を記号に置き換え、それを操作します

<Boolean Algebraの例1>

Boolean Algebraを使うと、「全人類」をこんな風に表記できます:

全人類Universe = 1,
男性Men = x,
女性Women = y

当然、全人類は男性と女性を合わせたものなので、

1 = x + y

と表すことができます。

これに「ヨーロッパ人の」という形容詞Adjectiveをつけると、より限定がハッキリする。

<Boolean Algebraの例2>

ヨーロッパのEuropean = z,
男性Men = x,
女性Women = y

ヨーロッパの男性European Men = zx,ヨーロッパの女性European Women = zy

zx + zy = z(x + y)

と、こんな感じ。これを命題Premiseに合わせて設定し、整理してくのがBoolean Algebra。

それはいいとして、Objectの話はどこに行ったの? それは次の(2)で!

(2) xとかyとかが”Object”

実を言うと、(1)の時点でObjectは出てきていたのでした。

どうもブーレさんの話を読み解いていくと、

1 = x + y

で表される数式の、

「x」とか「y」がObjectにあたる

らしいです。

*自分の数学の知識だと、「らしい」としか言えない悲しさ(^_^;)

今はまだ男性・女性くらいですが、ブーレさんの本も、後半はドンドン区分が細かくなっていくので、x, y, z...の3文字ではとてものこと追っつかない。

でもいくら沢山の文字を使っても、この「x, y, z…で表記される集団」のことを「Object」と考える様子。

Objectはまんま「対象」という意味なので、なるほど、数学的に処理するときの「処理対象」がObjectか、と考えるとわかりやすい。

(3) 法則が作用するとき、ObjectがSubjectになる

で、Subjectについては、ブーレさんの文章にこうしたくだりが見えます。

But inasmuch as the forms and methods of any system of reasoning depend immediately upon the laws to which the symbols are subject, (p.46)
The ground of that employment will not then be community of interpretation, but the community of formal laws, to which in their respective systems they are subject. (ibid.)

ややこしいので日本語訳はつけませんが(^_^;)、

x, y, z...で表される集団がObjectで、

Objectの関係性をコントロールする「法則自体がSubject」

と見えてきます。

ブーレ代数Boolean Algebraでは、「xがAのとき、yはBである」と言った命題Premiseで、各Objectに法則性を与えると。

で、そういう法則がまずあって、それがSubjectだよ、と。その法則に従うのがObjectだよ、ということなのかな〜と。

*この辺はあんま自信を持って言えないのがツライ!

カンタンに表記すれば、

Subject = 法則,
Object = (法則によって規定される)集団

になるんでしょう。

これをコンピュータのプログラミングに当てはめると、

Subject = コンピュータの処理方法,
Object = プログラマが設定可能な部分

になるんではないかと。

コンピュータは0 / 1 Binaryで動いていて、その「基本の処理方法」自体は操作できない。なのでこの部分がSubject。

で、コンピュータの処理方法Subjectに合わせて、処理する内容Objectはプログラムとして制御できると。

オブジェクト指向があるのにサブジェクト指向がない理由は

「サブジェクト指向」はコンピュータそのものだから、わざわざ言わなくていい

ということなんだろうと思いました。

コンピュータのやり方に合わせてニンゲンが色んなものを準備する。で、その準備できる部分がObject。

そうすると、ニンゲンにできるのは、Objectまでなので、プログラミングの世界に「オブジェクト指向」はあったとしても、「サブジェクト指向」がないのはこのせいだろうと。

今回は「たぶんこーいうことじゃないかな」と推測するばかりなので、なんとも歯切れが悪くなってしまいました。すみません。

次回はもっと肩から力を抜いて書ける内容にしようと思います。

なんでプログラミングで必須なのは、数学の「数的論理」と「数列」なの?という話題かなー。ニガテな数学でも、よりによって一番ニガテな部分がプログラミングで必須なんかい!という嘆き( ´ ▽ ` )ノ

#プログラミング
#学習法
#数学史
#オブジェクト指向

この記事が気に入ったらサポートをしてみませんか?