プログラミングを全くしたことのない人がプログラミングの学習を始めた場合、どこでつまずくかを考えることがよくある。小学校でプログラミング教育が始まったこともあり、プログラマー以外の人も少しはプログラミングを知っておいたほうがいいと思うからだ。
初心者がつまずく場所としてよく聞くのが「繰り返し」だ。プログラミングには、処理の流れを制御する構文として、主に「条件分岐」と繰り返しの2つがある。初心者にとって、条件分岐は理解しやすいが、繰り返しは理解が難しいのだという。
たしかに日常生活の中でも「条件によってやることを変える」という場面は多い。プログラミングを知らない人でも普段から慣れている考え方だろう。
これに対し、プログラミングにおける繰り返しは、同じことを繰り返す場合もあるが、たいていは「ルールに従って値を連続的に変えながら処理を繰り返す」というものになる。日常生活では、同じ作業を繰り返すことは多いが、「内容を少しずつ変えながら同様の作業を繰り返す」という場面はあまりない。このため、こうした考え方についてこられない人が出てくるのかもしれない。
もっとも、制御構文にたどりつく前に「変数と値の区別がついているかどうか」という問題がある。ここがあいまいだと、プログラミングを正しく理解することはできない。
変数と値について説明するときに、まず触れなければならないのがプログラミングにおける「=」の意味だ。
プログラミングをしたことのない人は、「=」は等号を表すと考えるだろう。それが普通の感覚だ。しかし、JavaやPython、JavaScriptといった現在主流のプログラミング言語では、「=」は等号ではない。
それを端的に表すのが「a=a+1」というコードだ。「=」が等号だとすると、この式はとてもおかしなことを表している。aがどんな値でも、a+1はaとは異なる値になる。aが0の場合はa+1は1、aが1の場合はa+1は2だ。つまり「=」が等号だとすると、「a=a+1」は常に間違っていることになる。
プログラミングを少しでもしたことがある人は知っているように、この場合の「=」は代入を表す。正確には、右辺の式を計算して左辺の変数に代入することになる。