*の方向性はどうでもいい

プログラミングなどの学習履歴として最初は書いてたけどもう何でもいいやと思って今に至る

インスタンスについて

プログラミングを習いたてのころインスタンスって何なのって混乱したことを覚えています。

今ならば理解してきましたが、これを初心者の人にどうすれば分かりやすく教えることが出来ると思いますか?

始めたての頃、インスタンスについてググりまくりましたが本当に理解しているのか? と疑いたくなるような内容の情報ばかりでした。

私にとってインスタンスとはファイルを新しく作ったり、開発環境でプロジェクトを新規作成するのと同じことだと思いました。

なぜならJavaなど大抵の言語でnewという単語が使われているからです。プログラミング言語がそもそも機械語と呼ばれるコンピュータが理解できる言語を人間が、特にコンピュータ分野を英語圏で発展させた人達が中心であるなら彼らを基準にして英語で何とか理解できるようにしたならばインスタンスというものがnewという単語を起点にしてるならインスタンスとは何かというものを理解できると思います。

もう少し詳しく言うならば、インスタンスとは本当のところ新規作成ではなくコピーをしているといったほうが正しいです。

これはコンピュータのメモリに関する話になりますが、まずクラスを作りますとコンピュータのメモリにそのクラスが格納されます。

そして別のクラスでさっきメモリに格納したクラスの機能を使いたいけどそのクラスをそのまま別クラスに移動させるわけにはいきませんよね?

それをしてしまうとほかのクラスでも上記のクラスの機能を使いたいのに使えなかったらまた同じものを作るのは無駄ですね。

だからコピーするんです。newを使ってインスタンスをつくるというのは使いたいクラスが格納されているアドレスにアクセスしてコピーしてくるという流れになっています。

まずはインスタンスでnewという単語がなぜ使われているのかから始めて、次にインスタンスの仕組みを知るという手順ならば初心者にとってとっつきやすいのではないかと思います。