概念を曖昧に受け止める能力(オブジェクト指向と仏教)
オブジェクト指向とは何なのか…
ヘッダーは一之江駅前で見つけた著作権スレスレなヤバいキャラで本編とは関係ありません!
プログラミングを勉強するひとが直面する壁のひとつにオブジェクト指向があります。わたしも未だにそういうものなのかもしれない…というめちゃくちゃ曖昧な考えしか持っていないので細かい話は分かりませんが、自分なりのオブジェクト指向とは何かについてまとめておきます。
オブジェクト指向的ラーメンの作成
わたしのオブジェクト指向の考えは関数そのもので大規模なコードになろうとも所詮は関数の中に関数を作っているに過ぎない、というものです。
関数は簡単に言うと「業務用ネギカッター」みたいなものです。「業務用ネギカッター」そのものはネギを入れなければなにも作り出すことが出来ませんが、そこにネギが入ると仮定してネギを切り刻むために様々な部品を組み込んでいます。
「業務用ネギカッター」にスーパーで買ってきた長ネギを入れればスーパーで買ってきた長ネギのみじん切りが出来ますし、成城石井で買ってきた長ネギを入れれば成城石井で買ってきた長ネギのみじん切りが出来ます。しかし、ネギを入れなければ「業務用ネギカッター」はただの物です。ネギを入れることで初めて「業務用ネギカッター」の役割を果たすことが出来ます。
「業務用ネギカッター」から規模を広めると、スープを作る処理、麺を茹でる処理、チャーシューやメンマを切る処理、盛り付ける処理を加えるとラーメンが出来上がります。各処理に具体的に必要な人、食材を値として入れてあげればラーメンが出来ますが、入れなければ何も出来ません。
さらに規模を広めると、「ラーメン屋さん」になります。「ラーメン屋さん」は「場所」「働く人」「ラーメンを作るのに必要な食材」という値を入れてあげることで私たちはラーメンを食べることが出来ます。
ラーメンを作るための様々な処理を含んだ関数の集まりが「ラーメン屋さん」なので、「ラーメン屋」に別の「場所」「ラーメン屋さん」「ラーメンを作るのに必要な食材」の値を入れてあげるとそれが「日高屋」のラーメンになったり「二郎系ラーメン」になったりします。
ラーメンを作るための様々な処理は言葉にしたりマニュアルにして視覚化することが出来ますが、具体的な値を入れなければ実体はありません。しかし、確実に存在はしているのです。
オブジェクト指向=空ありという仮説
なにかに似ています。あるけどない、ないけどある。これは仏教の「空あり」と同じだ、と閃きました。プログラミングで何かを作り出すにせよ、ラーメンを作るにせよ、プロ野球の審判をするにせよ、総理大臣をして政治をするにせよ、やっていることは目に見えない実体のない関数を作っているだけであるということなのです。
オブジェクト指向が仏教だという考えに至った人はたくさんいて、「おお、同志!」と思ったのですが、このオブジェクト指向の考えが合っているかどうかなんてまた分からない話なのです。
曖昧に概念を受け止める
プログラミングができる人、できない人で分かれる要因は「曖昧に概念を受け止めて、これはこういう意味だったのか…と知って、そこに楽しさを見い出せるか出せないかの違い」だと、上司が話していてなるほどな…と思いました。具体的な例を出せと言われても具体的なまま理解するのには限界があります。
オブジェクト指向という概念を理解するのに自分は仏教の空ありと同じなんじゃないかな?と、受け止めたわけなのですが、仏教の教えもそれこそ宗派や個人によって色々な解釈があるものなので答えはないもので、それは他の宗教であってもそうあるはずです。
これはプログラミングの話に限らずずっとこのnoteでも書いてきていることですが、あまりにも現代社会は白か黒か正しいか正しくないかを求めすぎなのではと思っています。また、あまりにも視覚優位になり過ぎて、考える余白がないように見えます。
こういう曖昧に概念を受け止める力は宗教や学問を学ぶ中で自然と得られるはずなのに、宗教は形骸化され、学問は受験勉強という箱庭でしか通用しないことしか教わらないことが多く、中々培うことが出来なくなっているのかなと思いました。