プログラムは塊で理解する ~ プログラムが魔法でないとわかればプログラマになれる 6

プログラムは1文字ずつ読まずに塊ごとに理解する

では、そろそろ最初に紹介したプログラムに登場する記号の意味を説明しましょう。

alert("こんにちは");

プログラムを知らない人が見ると次のような区切りで見えてしまうのではないかと思います。

alert    (    "    こんにちは    "    )    ;

前から順番に読んでしまうとこのように区切りたくなってしまいますが、プログラムを知っている人は次のような塊(かたまり)で見えています。

alert()    "こんにちは"    ;

漢文の返り点のような印がなくてもプログラマはこのような読み替えを頭の中で自然と行っています。正確には読み替えているというよりも、上記のような意味の捉え方をしている、という方が良いでしょう。なぜこのようなことが可能なのでしょうか。

小説では「」を使って人物が話した言葉を表現できます(これを台詞ということにしましょう)。このルールを知っている読者は  を見つけると、この後に続くのは台詞で次に  が登場するまで台詞が続くと予測します。

太郎は名乗ることにした。「私の名前は太郎だ」

このような文を読むとき を見つけた段階で、

太郎は名乗ることにした。「xxxxxxxx」

という文章構造になっていることを既に理解しているのです。

先ほどのプログラムでもこのテクニックが利用されています。最初の alert は実は alert() という命令で、

alert(xxxxxxxx)

このように () の中に表示したい文字を入れる命令になっています。つまり ) が現れるまでが一つの塊なのです。次に「こんにちは」の部分ですが、

"xxxxxxxx"

" を使うと次に " が登場するまでが一つの塊になります。 " で囲まれた部分はプログラムの命令ではなく単なる文字として扱われます。この「単なる文字」というのは少しわかりにくいと思いますが、画面に表示したりするために使う文字と考えてください。プログラムの動きには関わらないものです

これらを念頭に構造をよりわかりやすく書くと次のようになります。

alert(    "こんにちは"    )    ;

alert() という命令の中に "こんにちは" が入っているイメージができるでしょうか。なお、最後の ; は命令の終わりを示す記号です。日本語の句点と同じ意味です。 

それでは、プログラマの思考を改めて辿ってみましょう。 alert( まで読んだところで alert() という形になっていると予測し、 () のなかに何か入るかもしれないと考えます。次に、 alert(" まで読んだところで  "" で括られた(単なる)文字が来ると予測します。 alert("こんにちは") まで読んで「こんにちは」を画面に表示するプログラムだと理解し、 alert("こんにちは"); まで読んでこの命令が終了したことを認識します。

読む順番を変えてはいませんが、 alert() と "こんにちは" という塊で理解しているため、すぐにプログラムの意味を理解できるのです。

>>続きを読む
>>全記事を見る

<最新話にご興味があればフォローお願いします>

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