プログラミング初学者がつまづく部分の攻略方法
プログラミング初学者がつまづくポイントとして、
・代入とシーケンス実行
が理解出来ない、という。
もっと端的にいうと、以下のものが理解出来ない。
a = a + 1
プログラミングを生業とするものからすると、まさに"理解出来ない事"が理解出来ない、訳だが、実は思い起こせば僕もこの概念にしっくりくるのに時間がかかった。
そこで、この概念をどのように落とし込めばよいか記述しておこうと思う。
この概念を確実に理解するには、コンピューターの処理の流れを理解しなければならない。
最も分かりやすく端的に言うと
"計算" と ”評価”
である。
たとえば、
1
というプログラミングを書いたとする。
ここでは、何も実行していないように見える。
が、コンピューターはここで、"評価"という処理をしている。
すなわち
"1という数値がそこに存在する、という評価"をコンピューターは下している。
これに何の意味があるのか分からないかもしれない。
しかし、これはとても重要な意味がある。
そこに山があると認識しなければ上ることが出来ないのと同じで、
そこに何かがあると認識(=評価)しなければ、これを計算することは出来ない。
そして、コンピューターは何かをやる時、必ずこの「評価」を繰り返し何度も、計算の合間に行う。
また、この"評価"がいくつも重なった場合、プログラミングでは明確に「評価順序」が決定されている。
前から順番に実行するわけではないのである。
これが、先のプログラムを理解するために必須な概念だ。
1:a = 2 2:a = a + 1
このプログラムを見てみよう。
まず、 1行目の 「 = 」 の左と右にそれぞれ 「 a 」と「2」がある。
「 = 」は代入である。処理の流れは以下になる。
「 = 」は右側から処理するため、
・まず、「 2 」という数値があることが、評価される。
・次に、「 a 」という数値が左側にあることが評価される。
・a に 2 を代入する
・a が 2 であることを評価する
このように、あくまで処理の流れは一本である。
このように考えると、次の2行目の式も以下のように容易に理解出来るはずだ。
2行目の処理の流れ
「 = 」は右側から処理するため、
[右側]
・まず、「 a 」という数値があることが、評価される。
・さらに、前の式の結果から、この「 a 」は2であることが評価される。
・次に、「 1 」という数値があることが、評価される。
・「a + 1」が計算される。
[左側]
・次に、「 a 」という数値があることが評価される。
・さらに、この「 a 」は前の式の結果から、「 2 」であることが評価される
[ = を計算]
・a に 右側の計算の結果である「 3 」を代入する
・a は上書きされ、 「 3 」であることが評価される。