その中で、一番大切なのは、プログラムに登場してくる『モノ(オブジェクト)』を、プログラミングを開始する前に、きちんと理解できていることなのですが ―― でも、ぶっちゃけ、1人で作るシミュレーションであれば、きちんと設計する必要なんかないのです。
作っているさなかに、「あ、忘れていた」といいながら、プログラムに、後から『モノ(オブジェクト)』をどんどん追加していけばいいだけですから。
私がよく使っているオブジェクト指向プログラミングでは「たい焼き」パラダイムを使っているのですが ―― ソースコードのサンプルを使わずに、オブジェクト指向プログラミングを説明することは、やっぱり難しいです。
ぶっちゃけ、オブジェクト指向プログラミングの「オブジェクト」とは、インスタンス(×クラス)のことであって、インスタンスとは、つまるところ、メインメモリ上にブロック単位で確保される複数の情報の塊にすぎません。
「それって、普通のプログラムの変数宣言と何が違うの?」と尋ねられたら、「何も違いません。全く同じです」と答えます。
ただ、1つ違うところがあるとすれば、インスタンスの情報がメモリ上に確保されるので、オブジェクトが必要なくなったら、そのメモリを「塊」として(先頭アドレスだけを指定して)、一発かつ一瞬で開放できる点にあります。
これはシミュレータにとって、本当にありがたい機能でして、特に私の人口計算用のシミュレータでは、毎年毎(ループ毎)に、人間(のインスタンス)が生まれては、死んでいくので、「死んだら即、使っていたメモリを開放→再利用可能」とできる点は、大きなメリットです。
1億2000万分のシミュレーションを、西暦3000年まで続けても、パソコン(のメモリ)がパンクすることなく、計算を続けることができるのは、このようなオブジェクト指向プログラミング言語のメモリ管理に因る部分が大きいのです。
それぞれのインスタンスは、誕生するときに与えられた、自分の「設定」通りに一生を生きて、人生を終えます。ここで言う「設定」というのは、(冗談ではなく、本当に)中二病のような「非現実的な特別な世界観や設定」という意味での「設定」の内容で、正解です*)。
*)もっとも、そのような中二病の設定を、どのような情報フォーマットとして、クラスで定義し、インスタンス間での影響度に反映するメソッドを設計することは、かなり難しいと思いますが。
各インスタンスに、そのインスタンス独自の生き様を与えて、世間というプログラムの中に放置して、パソコンの外側から観測を続ける ――。 これは、もはや、「神の視点」といっても過言ではないでしょう。
もうね、それは何というか ――、
「あえてもう一度言おう! 俺は狂気のマッドエンジニア・江端智一! 世界はこの俺の手の中にある!!」
*著者注:(分かる人には分かる!)あの神回、シュタインズゲート第23話 「境界面上のシュタインズゲート」より、セリフの一部を改変。
―― という感じが、本当に「そのまんま」なんですよ。
そして、「神の視点」を実現する環境(パソコン)は、既に、あなたのおうちまでやって来ています。私たちは、もはや、「(週末だけの)神」を体験できる時代に生きているのです。
Copyright © ITmedia, Inc. All Rights Reserved.