寓話
呼び出し可能な一段の指示
古い厨房には二種類の仕事があった。野菜を切る、塩を量る、火をつけるには決まった手法があった;宴会のメニューを書くのは大厨が言葉で学徒に語って聞かせることに頼っていた。二種類の仕事を分けて行い、どうにか料理も出せた。
その後、宴席はますます複雑になった。経理係はメニュー生成を注文表に接続したがり、前厅は客の好みをレシピに接続したがり、厨房はただ「大厨にもう一度話してもらおう」と言うだけだった。
ある者が大厨の言葉を一枚の紙に写して壁に貼った。味、人数、予算を変えるたびに、学徒は手作業で数句を直した。貼り紙は直すほど乱れ、どの句が変数でどの句が規則か誰にもわからなくなった。
また、すべてのメニューをハードコードする者もいた。これは安定するが、言語の柔軟性を失う。客が油少なめ、辛さ避け、老人向けと言うと、コード表はすぐに膨れ上がる。
新しく来た管事は、料理長がよく言うあの指示を小さな木箱に収めた。箱には名前があり、入力欄がある:人数、予算、忌避食材、料理系統。これらを与えると、あの指示に従ってメニューを生成する。
そばには普通の道具箱もあり、在庫を調べ、コストを計算し、発注書を印刷できる。管事は二種類の箱を一列に並べた。まず言語の箱で案を出し、次に普通の道具箱で検証し実行する。
学徒は気づいた。言語はもはや壁に貼られたヒントでも、コードに隠された特例でもない。それは呼び出し、組み合わせ、再利用できる厨房の能力になった。
管事は依然として箱の用途を制限していた。メニュー箱は直接発注できず、購買箱も客の好みを勝手に変えられない。各箱には明確な入力、出力、境界がある。大厨は言った。自然言語の指示が関数のように命名され、引数を渡され、組み合わせられるようになれば、それは口頭の経験からシステム部品へと変わる。後に厨房は宴会書き換え箱も作った。フロントはそれに客の好みを渡し、それはメニュー提案だけを出力する。会計は購買箱に予算を渡し、それはコストだけを計算する。管事は二つの箱が境界を越えることを許さなかった。なぜなら、メニュー箱が直接買い物できれば、一言の誤りが一車の誤った商品になるからだ。こうして厨房は言語の柔軟性を保ちながら、各指示に固定された入口、出口、責任範囲を持たせた。後に徒弟は各箱にサンプル入力とエラー出力を書いた。新しい料理人が引き継ぐとき、大厨の口調を推測しなくても、その指示をどう使うべきか分かる。呼び出せることは、制約もできることだ。