いきなりですがポインタについて

2chに「ポインタの説明をして初めて分かる難しさ」とあったので
ポインタの説明文章を書いてみる事にした。
ーーーー以下、2ch書き込み同文ーーーー

ポインタを理解するのにC言語の記法を持ち出すと混乱する。
だから記号は使わない。
ポインタの理解はマシン語レベルで説明した方がすっきり来るはず。
(変数の概念は別に説明する必要があるだろうが)

じゃこんな流れかな?

まず、計算機は、計算をするCPUとその計算結果を
書き留めているメモリとで構成されている事を説明せねばならない。
メモリが2次元的に番号を振られているなんて初心者は知らないから
それを教えてあげる。
ここで実はメモリにはプログラムも入っている事を教える。
プログラムとはCPUに対する命令の集まりで、命令には番号が振られている
ということを説明する。その番号がメモリに順番に入ったものがプログラム。
ここで、適当な例を引いて説明する。(工場内で製品が出来上がる様子など)
どんな命令があるかはさておき。
次は動作について、
メモリは、計算機は動いている時、メモリを1つ読み、それを命令だと解釈して
その番号通りの処理を行う。そして次のメモリを読み…と続けていく。
ここで計算機は処理(足し算とか引き算とか)の結果をメモリのどこかに
格納しなくちゃいけない。
その結果を格納するメモリの場所を指定するのはどうするか?
それはメモリに割り振られた番号で指定する。

ここでメモリを扱う時に2種類の値が登場していることを説明しなくてはいけない。
「計算結果の数値」と「計算結果を格納しておく場所の番号」だ。
この後者、場所を指し示している数値の事を指してポインタという。

計算機にはこの命令を出す言葉の種類がたくさんあって
(日本語、英語、中国語のように)それぞれいろんな決まりがあるけれど
この「値を格納している場所を示すもの」をポインタと名付けている。
と教えてあげればヨシ。

その働き、使い方についてはここまでの定義を理解すれば自ずと分かって来るだろう。
表記については、単なる言語毎の決まりでしかないから、
このポインタの定義をたたき込んでいれば理解はできるでしょう。

ーーーー
マシン語やってる人は早いだろうが(ポインタは意識せずに使ってるわけだから)、
少なくともメモリの構造(アドレスを持ってるということ)を知っていれば
そんなに敷居は高くないはず。
難しいと思うのはおそらくEssentialな部分の説明が抜けているからでしょう。
どうかねぇ?


投稿日

カテゴリー:

投稿者:

タグ:

コメント

“いきなりですがポインタについて” への2件のフィードバック

  1. のなかのアバター
    のなか

    プログラムという概念が分かっているかどうか…「プログラムとデータ」が分かってる人は意外と少ない。「.docファイルがワード」と思っていたりする。ターゲットによるか。それとプログラムの説明は要らないんじゃね?変数ってものがあることだけ言っとけば。ポインタ自体の理解にはプログラムがメモリ上にあることを知る必要はないし。

  2. きとらまさなお ★のアバター
    きとらまさなお ★

    確かに変数さえ教えたらいいって初め考えたんですけど結局変数がどうやって格納されているか説明しなくちゃダメでそうしたらまず頭に浮かんだのが変数じゃなくてなぜかプログラムカウンタだったんですよねその話を出しておけば変数も出しやすいのかなと結論としては「やっぱり難しかった」とorz

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください