プログラムで絶対に利用する変数、これをコンピュータサイエンスの視点から理解しましょう。
汎用的な知識を得ることで、どのプログラミング言語を学ぶ時でも役に立ちますよ。
変数 (variable) の概念
その名前の通りで変化する数です。プログラムを作る時、全ての値が最初から決まってる訳ではないですよね?
例えばユーザーが何かしらの入力をしたとして、それを保存する場所がなければ利用できません。そういった願いを叶えてくれるのが変数です。
変数とメモリの関係
最初にメモリの仕組みを理解しましょう。
メモリにはアドレス空間と呼ばれる1byteごとに区切られた領域があります。
ここにデータを保存して管理するのですが、その時の場所をアドレス値または番地と呼ばれる方法で示します。
このアドレス値は64bit環境であれば0x0000000000000000 ~ 0xFFFFFFFFFFFFFFFFのいずれかになります。
正確にはOS制約でアクセス不可能な領域があるのですが、考え方に変わりは無いので無視します。
次は変数ですね。この変数はメモリ上にどこかに確保され、場所は先程のアドレス値で示されます。
また、仮に4byteの変数として確保した場合、先頭の1byte側がアドレス値として採用されます。
アドレス値って凄い桁数じゃないですか。これをプログラマが管理するんですか?
そんなことはないよ。と言うか嫌だよ...
メモリ配置の管理
現代においてメモリ配置をプログラマが管理する必要はありません。
若干語弊を生みそうですが、変数を作った場合はOSが適切なメモリ位置に配置するので、そこにプログラマが関与する必要性はないです。
また、実際には仮想アドレス空間と呼ばれる仕組みが採用されてるので、実際の物理メモリに直接アクセスはできません。
では、プログラマは何をするのか。それは変数の宣言、代入、参照、つまりは利用です。
これらはプログラミング言語の機能を通してOSに依頼されます。
変数の宣言
変数を使うには事前に準備する必要があります。この宣言とは変数を保存する場所を要求するようなイメージです。
よく箱のような画像を利用して変数を表現するので、ここでも同じように表現しましょう。
そして、この変数を宣言する時に名前を付けることができます。
名前でアクセスできれば使うときも楽ですね。
アドレス値を利用してアクセスする言語もあるよ。と言っても名前も使えるから両刀みたいなイメージだけどね。
変数の代入
代入は簡単です。宣言時に付けた名前を経由してアドレス値にアクセスできます。
この時にアドレス値を意識することもなく、名前に対して値を代入するイメージで利用できます。
変数の参照
代入と変わりないです。こちらも名前を経由して値を参照することができます。
プログラミング言語の実例
実際のプログラムだと利用する言語ごとに記述方法が異なります。
共通機能なので同じような書き方をしますが、一部の言語は微妙に違ったりします。
という事で、僕が使ってるC#の例です。
int age;
age = 15;
あとがき
変数を利用できないプログラミング言語は存在しません。
そういった共通機能は言語特有の学習に留めず、汎用的に理解するのがいいでしょう。
◆ コンピュータサイエンスに関する学習コンテンツ
この記事は参考になりましたか?
コメント