娘のためにその1:メモリ[10分]

娘に読ませる以外の意図はなく、よって質問や指摘には対応していません。すなわちネットの浄化作用が働いていない不正確な内容になりますので、正しい情報を求める方は閲覧をご遠慮ください。公開しているのは、通信手段としての利便性のためです。

プログラミングにはとても多くの要素がある。その中で、あえてひとつ。最重要なものを挙げるとするならば。

それはメモリだ。

英語で言えば memory 、記憶装置のことである。野球で例えるならボールと言える。バットもグラブも重要だろうが、ボールを中心に野球というゲームは動くだろう。それと同様に、プログラミングはメモリを相手にする。メモリの中身、常にこれを意識することが肝要である。

ではメモリはどういうものなのか?なんとなくはわかるだろう。数値を記憶してくれるものだ。ではファイルを保存する対象であるストレージ(ここでHDD、ハードディスクという言い方はしない、SSDという機械もあるから)とは何が異なるのか。簡単に言えば、シャットダウンすると内容が消えてしまうのがメモリだ。よってストレージよりも利便性が低いが、圧倒的に高速という特徴がある。

近年のPCは数ギガのメモリが搭載されている。その広大なメモリの一部を、プログラムによって読み出し、書き込む。どうやって?

メモリにはアドレスがある。書き込む、あるいは読み出す場所を指定するのに、アドレスを用いる。アドレスというのは単なる数値だ。ではここで、100というアドレスが指し示すメモリに200という値を書き込みたいと思ったとする。

*(int*)100=200;

C言語でこのように書き実行すると、広大なメモリの 100 というアドレスが指し示すメモリに 200 という値を書き込もうとする。ここは読み流さず、注意深くこのプログラムを見て欲しい。この記述で、左辺にある100という数値をメモリアドレスと解釈させ、右辺の数値200を書き込んでいる。もちろんC言語を見るのは初めてだろうから、その記号や記法に困惑するだろう。が、ここでは

プログラムでアドレスを指定して値を書き込む方法がある

というのを理解して欲しい。

メモリは野球におけるボールのようなものだと言った。プログラムというのは、手を変え品を変え、結局はメモリへの書き込みを実行するものなのだ。現代では様々な文脈が積み重なって、プログラムは決して簡単とは言えなくなった。が、のぞみの値をのぞみの位置に書き込む、ただそれだけのために複雑になっていることを、時々は思い出そう。

その複雑さは、例えば法律というものが、ただ社会秩序のためなのに恐ろしく複雑になっているのに似ている。プログラムもまた、人間が扱うが故に難しくなっている。数学の難しさではなく、法律の難しさなのだ。よって、時には暗記することも重要になる。「たまたま今の世の中ではこうなっている」ことを覚える必要があるのだ。一般的に、プログラムは理系に分類されやすいが、実は極めて人間的な(文系的な)側面が強いことを覚悟していこう。

前置きはここまで。次回からいよいよ具体的な学習にとりかかっていく。

つづく


この記事が気に入ったらサポートをしてみませんか?