『私にとってのモデル化とは、登場させる"モノ"を、自分の目で見えるままに、クラス(構造体)で記述するだけ。以上』が、私の手法です。
時々、『江端さんは、シミュレータを作る時に、どういうモデル化をして、I/F(インターフェース)を規定しているんですか』という質問をされることがあります。
Sometimes I am asked, "Mr. Ebata, when you create a simulator, what kind of modeling do you do to define the interface (I/F)?"
私の答はいつも同じです。
My answer is always the same.
『何も考えていないです』
"I don't think about it."
-----
私のプログラミングは、現実にある世界のモノを、構造体(クラス)に記述して、モノ同士で通信が必要になったら、後でI/Fを追加しているだけです。
In my programming, I just describe things in the real world in a structure (class) and I/F later when things need to communicate with each other.
私は、こういう設計思想を「オブジェクト設計」といい、この思想に基づくプログラミングを「オブジェクト指向プログラミング」というだけのこと ―― と思っています。
I believe that this kind of design concept is called "object design" and programming based on this concept is just called "object-oriented programming".
このプログラミングのメリットはただ一つです ――
There is only one advantage to this programming --
『ラク』。この一言に尽きます。
"Easy". This is the only word that comes to mind.
ただ、この『ラク』を実現する為には、「オブジェクト指向プログラミング」の特徴と言われているものを、何一つとして使わない、という腹の括り方が必要です。
However, in order to make this "easy", you need to be willing to not use any of the features of "object-oriented programming".
ちなみに、「継承」や、「汎化」なんぞ、使いません。デバッグする時に面倒くさいからです。
I don't use "inheritance" or "generalization" because they are too much trouble when debugging.
「多重継承」なんぞ、確実に混乱します。
"Multiple inheritance" is sure to be confusing.
「ポリモーフィズム」が必要なら、作り方が下手くそなのだ、と思っています。
I believe that if you need "polymorphism," you're not very good at making it.
"private"とか"public"など死ぬほどうっとうしいので、私は全部"public"にしてしまいます。
I find "private" and "public" annoying to death, so I just use "public" for everything.
こういうものを使うと、プログラムの可読性メチャクチャ悪化します。とても、読めたものではありません。
If you use this kind of thing, the readability of your program will get really bad. It's not very readable.
-----
まあ、ここまで割り切った考え方ができるのは、これは「研究員の個人レベル」のプログラミングだからできるのかもしれませんが、
Well, maybe it's because this is a "personal level" programming of a researcher that we can think this way, but
『私にとってのモデル化とは、登場させる"モノ"を、自分の目で見えるままに、クラス(構造体)で記述するだけ。以上』が、私の手法です。
For me, modeling is simply describing the "things" that I want to appear in a class (structure) as I can see them. That is my method.
それ以外のことは、「必要になった時に覚えればいいんじゃないかなー」と思うんですよ ―― 『必要になる時なんて、あるのかなあ?』とも思っていますが。
Other than that, I think it's fine to learn when you need it -- although I wonder if the time is coming.