思考の道具としての記法:アイバーソン
1962 年、ハーバードで教えたのち IBM で働いていたカナダのケネス・アイバーソンは、『あるプログラミング言語』(A Programming Language)という本を出版した。題名に反して、それは数学の記法の本だった。数のリストや表をまるごと扱う演算のための新しい記号を使って、アルゴリズムを簡潔かつ正確に書く方法である。数年後、IBM 自身がこの記法をコンピュータで実行できる言語に変え、本の名をとって APL と名づけた。
床、天井、そしてかっこ
アイバーソンの記号のいくつかは、APL を出てふつうの数学に入った。もっともよく知られているのは、床関数と天井関数の組である。
$$\lfloor x \rfloor = x \text{ 以下の最大の整数}, \qquad \lceil x \rceil = x \text{ 以上の最小の整数}.$$彼以前は $[x]$ や「$x$ の整数部分」と書かれ、天井関数の記号はなかった。二つがあれば、いくつもの場合分けが必要だった計算が一行に収まる。$1$ から $100$ までの $7$ の倍数の個数は $\lfloor 100/7 \rfloor = 14$ である。
もうひとつの記号、アイバーソンの括弧は、命題を数に変える。
$$[P] = \begin{cases} 1, & P \text{ が真のとき}, \\ 0, & P \text{ が偽のとき}. \end{cases}$$これを使えば、「$1$ から $n$ までの偶数を数える」はふつうの和 $\sum_{k=1}^{n} [k \text{ は偶数}]$ になり、その和はいつもの規則で扱える。ドナルド・クヌースは 1992 年に『記法についての二つの覚え書き』(Two notes on notation)という論文でこの括弧を擁護し、ロナルド・グレアム、オーレン・パタシュニクとの共著『コンピュータの数学』(Concrete Mathematics)の全体で使った。前の文章のクロネッカーのデルタは特別な場合にすぎない。$\delta_{ij} = [i = j]$ である。
五つの性質
1979 年、アイバーソンはコンピュータ科学の最高の賞であるチューリング賞を受け、その題名が決まり文句になった講演を行った。思考の道具としての記法(Notation as a tool of thought)である。その中で彼は、よい記法の五つの性質をあげた。
- 問題に現れる考えを表しやすいこと。
- 示唆に富むこと。書き方の形が手順や一般化を示唆する。
- 細部を従属させること。重要でないものは隠れている。
- 経済性。少ない記号を、いろいろに組み合わせる。
- 証明への適性。書いたものが形式的な証明に向いている。
これは、この本が生きた記法と呼んできたものと同じ考えを、生涯をかけて記法を設計した人が言ったものである。APL はそれを極端まで推し進めた。プログラム全体が一行に収まり、ギリシア文字や数学記号でいっぱいの専用キーボードで書かれた。使いこなす人にとってはすばらしい思考の道具だったが、ほかの人には暗号のように見えた。より密な記法がいつもよりよいことを証明できた人はいない。
命名法、記法、言語が思考の道具として重要であることは、ずっと前から認められてきた。
— ケネス・アイバーソン「思考の道具としての記法」(1980)
練習:括弧で数える
$\sum_{k=1}^{30} [3 \mid k]$ を計算し、床関数で確かめよ。ただし $3 \mid k$ は「3 は $k$ を割り切る」を意味する。
和は $k = 3, 6, 9, \ldots, 30$ のとき $1$、それ以外は $0$ である。$1$ に等しい項が $10$ 個ある。床関数では $\lfloor 30/3 \rfloor = 10$。一般に $\sum_{k=1}^{n} [d \mid k] = \lfloor n/d \rfloor$ であり、この等式ではアイバーソンの二つの記号が語り合っている。
練習:床と天井
$\lfloor 2.7 \rfloor$、$\lceil 2.7 \rceil$、$\lfloor -2.7 \rfloor$、$\lceil -2.7 \rceil$ を計算せよ。
$\lfloor 2.7 \rfloor = 2$、$\lceil 2.7 \rceil = 3$、$\lfloor -2.7 \rfloor = -3$、$\lceil -2.7 \rceil = -2$。最後の二つは、「整数部分」があいまいな名前だった理由を示している。負の数では、「小数部分を切り捨てる」と $-2$ になり、これは床ではなく天井である。アイバーソンの記法は、どちらを意味するのかを言うことを求める。
章の目次 · ← 部族の約束:アインシュタイン、ブルバキ、通の読み手 · 命令する等号:x = x + 1 とプログラミング言語 →