クヌースの矢印表記法:プログラミングでべき乗を^で表す理由
定義
クヌースの上向き矢印記法Knuth’s up-arrow notationとは、大きな整数を表すために考案された記法である。
加算、乗算、べき乗
加算additionは次のように定義される。
乗算multiplicationは次のように定義される。
べき乗exponentiationは次のように定義される。
テトレーションとペンテーション
テトレーションtetrationは次のように定義される。
ペンテーションpentationは次のように定義される。
▶eq5◁
一般的な定義
は次のように定義される1。
説明
その名前も有名なドナルド・クヌースDonald E. Knuthは、数学者であり、コンピューター科学者でもあり、特に人類の数式表現において絶対的で唯一の業績として残る、を開発したこともあった。彼はまた1976年の論文で上向き矢印記法を提案した。定義自体を見ただけでは非常に大きな数を扱うため、理解するのが難しい点があるかもしれない。しかし、その中での時、つまりは十分に普通の人間の認識に追随できる可能性があり、特に上向き矢印を直接入力するのが困難なキーボード組版と関連して、がキャレットcaret記号^
を使ったx^n
とぴったり一致し、このようなスタイルが広く普及することになった。
いくつかのプログラミング言語とそのタイムテーブルを見ると非常に興味深い:
1957年、フォートランFortranが発表される。フォートランではべき乗は
**
を使用した。1972年、C言語が発表される。C言語ではべき乗の演算子がなく、
math.h
ライブラリのpow
関数で別途定義されていた。1976年、クヌースが論文で上向き矢印記法を発表する。
**1978年、クヌースがを開発する。**もちろんでのべき乗は
^
を使用した。1984年、MATLABがリリースされる。べき乗演算子は
^
を使用した。1991年、Pythonが発表される。べき乗演算子は
**
を使用した。1992年、R言語が発表される。べき乗演算子は
^
を使用した。1995年、Ruby が発表される。べき乗演算子は
**
を使用した。1995年、Javaが発表される。
Math
ライブラリのpow
メソッドを使用する。2009年、Go言語が発表される。
math
ライブラリのpow
関数を使用する。2012年、Juliaが発表される。べき乗演算子は
^
を使用した。
プログラミングでのべき乗演算子の歴史はクヌースの前後に分かれ、一般的な開発に関連する言語はフォートランのように**
を使ったり、C言語のように別途の標準ライブラリから関数を提供し、科学技術計算や統計分析に関連する言語は^
を選択した。例外的にPythonの場合は科学分野でも地位が大きいが、根本的には一般的な開発目的の言語である。
Donald E. Knuth ,Mathematics and Computer Science: Coping with Finiteness.Science194,1235-1242(1976).DOI: https://doi.org/10.1126/science.194.4271.1235 ↩︎