命令の組み合わせで動作になる ~ プログラムが魔法でないとわかればプログラマになれる 10

プログラムは小さな命令を積み上げて動く

let price = 100;

先ほどから例に出しているプログラムの1行目です。 100 を price と呼んで使えるようになる命令だとわかっても、いまひとつピンとこないのではないでしょうか。100は100のままで良いのではないか、100をわざわざpriceと言い換えて何か良いのか、といった疑問が湧いてきます。このように命令の意味がわかっても釈然としないのは命令の目的がわからないからです。

プログラムにおける1つの命令はボードゲームの1手に似ています。将棋でもチェスでも序盤の1手で勝負の行方は見えません。決まりきったことをやっているようにも見えます。ですが、実際には後半戦の展開を考え、1手ずつ積み上げています。プログラムも1つ目の命令だけを見てもプログラム全体は見えてきません。1つ1つの命令を積み重ねていくことで目的の動きを組み立てています。また、ゲームプレイヤーは先を見越して1手を決めるわけですが、側から見るとなぜそうするのかわからないことがあります。同様に、プログラマが書いた1つの命令も、側からみるとなぜその命令を書いたのかわからないことがよくあります。

日常生活においても同じです。例えば、本棚から本を取りたいとしましょう。本を取りに行くために身体を動かしますが、これを命令として大雑把に列挙してみましょう。本棚に視線を移す。目当ての本を探す。立ち上がる。本棚に向かって歩く。手を伸ばす。このように1つ1つの命令は単純で、その1つだけを抜き出しても意味がわかりません。一連の命令を繋げることで 動作 となり意味のある動きになります。

ですから、私が今説明に使っているこのプログラムの1行目だけをみても意味がわからないのは当然です。

let price = 100;
let tax = price * 0.08;
let total = price + tax;
alert(total);

このプログラムは税込価格を計算するものです。 priceは税抜き価格、taxは税額、totalは税込価格です。このプログラムは税抜き価格を100としているので108と表示されますが、1行目の100の部分を500に変えれば540と表示されます。

このようにプログラム全体の目的がわかるとやっと1行目の目的も見えてきます。消費税の元になる税抜き価格をいくらにするか、というのを決めるための命令であることがわかります。

プログラムがわからないとき、原因は大きく2つあります。一つはプログラムの命令自体の意味がわからないときです。例えば = という記号が何を意味するのかわからないといった具合です。これはそれぞれの命令の意味を調べれば解決します。初心者のうちは大変かもしれませんが、プログラミング言語は英語などの自然言語よりずっと単純ですから、命令の意味は徐々にわかるようになってくるでしょう。

もう一つの原因は命令の目的がわからないことによるものです。命令自体の意味はわかっても何のために書いてあるのかわからないのです。先ほどの本棚の例でいえば「立ち上がる」の意味はわかってもなぜ「立ち上がる」のかわからないのです。プログラムを理解するというのはミクロでは一つ一つの命令を理解することですが、マクロでは一連の命令の組み合わせてどういう 動作 になるのかを理解することです。動作がわかれば一つ一つの命令の目的も自ずと見えてきます。

どうやってプログラム全体の動作を理解すれば良いのでしょうか。身も蓋もありませんが、何に使うプログラムなのか先に確認することです。プログラムを1行目から読み進めて全体像を理解するのは実は至難の技です。バラバラになったジグソーパズルのピースをみて完成を想像するようなものです。先にどのような絵柄が出来上がるのか確認する方が先決です。プログラムの場合も先に何をするためのものなのか、どのような動きをするものなのか、周辺の説明を読んで理解しましょう。どうしても説明が見当たらずプログラムだけをみて理解しなければならない場合は解析するつもりで取り掛かると良いでしょう。組み合わせると何か意味を持った動きになるはずだがそれは何だろうと頭を働かせながら読むのです。

プログラムは1つ1つの命令にほとんど意味はありません。組み合わせることでやっと意味のある動きになります。

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

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

この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

スキありがとうございます!続きを書く元気がでます。
2
現役プログラマ。 https://cloned.jp
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。