「プログラム」と一言で言っても、学芸会の「プログラム」もパソコンの「プログラム」もあります。これらを「プログラム」にしているのは一体なんでしょうか。

カレーライスのプログラム

とりあえず、カレーライスでも作りながら考えてみましょう。あなたは、どうやってカレーを作りますか?「カレーを作る」というと、だいたいこんな手順が思い浮かぶと思います。

  • カレールウを作る
    • 材料を揃える
    • 材料を下ごしらえする
      • タマネギは薄切りに
      • ニンジンとジャガイモは皮を剥いてぶつ切りに
      • 肉もぶつ切りに
    • 材料を炒める
      • 野菜を炒める
      • 肉を炒める
    • 材料を鍋で煮込む
    • カレー粉を鍋に入れる
    • よくかき混ぜる
  • ご飯を炊く
  • ご飯にカレールウをかけて、出来上がり。

ところが、ずぼらな現代人は、こんなやり方もします。

  • カレールウのレトルトパックを温める
  • コンビニで買ったご飯をレンジでチンする
  • ご飯にカレールウをかけて、出来上がり。

逆に、材料にこだわる人なら、こう考えているかも知れません。

  • カレールウを作る
    • 材料を揃える
      • 材料を作る
        • 種芋を畑に植える
        • 肉牛を肥育する
  • [以下略]

このいずれもが、ただしいレシピであり、そして正しい「プログラム」なのです。

プログラムとは、仕組み

上のレシピをよく見ると、二つの点に気がつきます。

一つは、どのレシピも、材料があり、それをレシピに従って調理し、その結果が料理となっています。図に書くと、こうです。

材料 → レシピ → 料理

これをプログラマーの言葉で書くと、こうなります。

入力 → プログラム → 出力

このことから、プログラムを以下のように定義することが出来ます。

プログラムとは、入力を加工して出力するための仕組みである。

プログラムを組み合わせてプログラムを作る

カレーライスのレシピを見て、もう一つの点に気がついたあなたは、プログラマーの素養ありです。

それはなにかというと、「ある手順の結果は、次の手順の材料として使える」ということです。

図に書くと、こんな感じです。

種芋 → 畑 →  ジャガイモ +
肉牛 → 肥育 → 牛肉    +→ カレールウ +
米  → 炊飯 → ご飯     →→→→→→→+→ カレーライス

レシピがレシピの連鎖で出来ているように、コンピューター・プログラムもプログラムの連鎖で出来ています。コンピューター・プログラマーの仕事というのは、つまるところレトルトパックをご飯にかける人のように、プログラムどおしを組み合わせて別のプログラムを作ったり、農家のように別のプログラムが使うデータを用意するプログラムを書いたりすることを変わらないのです。

断言します。カレーを作れるあなたは、プログラマーになれます。たとえレトルトをチンするだけの人でも。さらにこの考えをつきつめていけば、何かを何かに変えるための仕組みを作る人は、すべてプログラマーとも言えます。その意味において、全ての人、いや生きとし生けるものはすべてプログラマーであると言っても言い過ぎではありません。

コンピューター・プログラマー

ただし、本書で扱うプログラマーは、そこまで大げさなものではありません。コンピューター上での入力を、コンピューター上で動くプログラムが加工し、コンピューター上で出力する。そういうプログラムを書くコンピューター・プログラマーのことを、本書では略して「プログラマー」と呼ぶことにします。

それでは、プログラマー達は、どうやってコンピューター上に仕組みを作っているのか。次にそれを見て行くことにしましょう。

Dan the Programmer