- ベストアンサー
メモリの中身は大切?
初歩の質問で申し訳ないです。 プログラミングするときには、 「メモリ内部に変数等がどのように格納されているかイメージできることが大切。(たとえばC言語において配列と、ポインタ配列のメモリの割り当て方が違うなど)」 とかいうのをたまに聞きますが、これってなんで大切なんですかね???
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
変数のメモリ上の配置に重要な意味があるか否かは言語によります。C/C++では大切(知らないとコードが書けないこともある)ですが、Javaなどではそれほどでもありません。
その他の回答 (1)
- mitoneko
- ベストアンサー率58% (469/798)
プログラミングするときに、一番、たくさんの行を費やすのは、変数の操作と変数の内容のチェックです。 というか、プログラミングって言うのは、ようするに、変数をいかに操作するかを定義する作業・・・と言い換えても、あながちはずれではありません。 というわけで、各変数に、今、何が入っていて、それをどうしようとしているのかが判らなければ、そもそもプログラミング作業できません。 ところで、変数の操作というのは、ようするに、メモリー内部の数値の操作です。つまり、メモリー内部の様子が頭に浮かばないと言うことは、何を、どのように操作しようとしているかが全く頭に浮かんでいないと言うことで・・・こんな状態では、まぁ、まともにプログラミングできるとは思えません。 というわけで、大概のプログラミングの書籍で、文法の学習にはいると、変数の定義、変数の内容の表現から話が始まるのが普通です。 つまり、基礎の基礎なわけですね。大切どころの話ではないのでした。 たとえば、C言語の学習をしてるときにの最大の難関といわれるポインターの取り扱いにおいて、何が判ってないかというと、具体的なメモリー内部のイメージです。これが判らないから、ポインターが理解できない。(もう少し、先になると、関数のポインターと言うのが登場します。メモリーイメージがきっちり頭に浮かばないと、概念すら理解できない分野です。これが理解できないのは、まず、プログラムの本体も、メモリーに展開された単なるデータと同じだということが判っていないことが多いです。) 大概の言語に備わっている配列が理解できないのも、根は同じです。 判らない人を見ていると、メモリーに対してどういう操作をしようとしているかが浮かんでないことが多いです。だから、添え字の操作を見ると訳がわからなくなる。 最初のうちは、紙に、メモリーイメージを書いて、具体的な数字をそこに入れて、計算する・・・・そういう学習は、プログラムを理解するのに有効なことも多いです。(私も、ちょっと複雑な操作になると、重要な部分のメモリーイメージを模式的に紙に起こします。微妙な操作を検証するのには一番手っ取り早いことが多いです。)