Go to the first, previous, next, last section, table of contents.


歴史と謝辞

Calc は最初、作者の暇つぶしの2週間プロジェクトとして始められた。 まず、ある友人が私に 2^32 はいくらだったか聞いた。私は即答せず、「簡単だよ。xcalc を使えばいい。」と言った。Xcalc は正直に `4.294967e+09' であると答えた -- しかしメモリ中にあるはずの本当の10桁の答を見る術は無かった! 私は完全に頭にきて、私のための(かつてはみんなのための)電卓を書くと誓った。

私は Emacs Lisp を選んだ。なぜなら a)ずっとそれに関心があったし、 b)結局のところたかがエディタ拡張言語なんだし、 私の能力的限界が露呈するよりずっと前に、 Emacs Lisp はその限界に達してくれるはずだから。

この勝負、結論から先に言えば、 Emacs Lisp は泣けてくるほど頑丈な Lisp インプリメンテーションであり、 「計算すること」について予想以上に無制限であることを思い知らされたのだった。

Emacs Lisp は組込みの浮動小数点計算を持っていない、 だからそれはソフトウェアでシミュレートされなければならなかった。 実際、Emacs の整数は 10進 6桁かそこらに適しているだけであろう --- 適切な電卓のために充分ではない。 それで私は充分高い精度の整数計算プログラムを自分で書かなければならなかった。 そしてそれができてしまうと、任意のサイズの整数が大きい整数と同じぐらい容易 であると気がついた。任意精度の浮動小数点は論理的な次のステップであった。 大きい整数算数がとにかくそこにあったので、 それにユーザーが直接アクセスできるようにすることはただ公正なだけに思われた。 そしてそれは次に、浮動小数と同様、分数を支援することを現実的にした。 これらすべての特徴に私は奮い立ち、 実装する価値のありそうな他のデータタイプを捜し回った。

この頃、私の友人 Rick Koshi は私に気のきいた新しい HP-28 電卓を見せた。 それは数量と同様に数式を操ることをができ、そして同じく行列に作用すること ができた。私はこれらの機能が Calc にも同じようにあると良いと判断した。 そして私はこうなったらいっそのこと、それ以上のアイデアのために Mathematica, Macsyma, Maple のようなすごい代数学システムをひと目見るのが 良いと思った。これらのシステムは 私が今までに実装を望めたレベルよりはるかに高機能なので、 ユーザーが自身に必要なことを実行できるように、 私は書替規則やその他プログラミング機能に焦点を絞ることに決めた。

Rick が行列が読みづらいと苦情を言ったので、私はそれらをフォーマットする プログラムに 2D スタイルを入れた。これらのプログラムができると、Big-mode は義務であった。あぁ、他にどんな言語モード様式が有用だろうか?

強い数学的素質を持っている2人の友人 Scott Hemphill と Allen Knutson は、 modulo 形式、primality テストと浮動小数点から分数への変換を含めて多くの Calc の特徴のためにアイデアとアルゴリズムを提供した。

単位演算機能は Mass Sivilotti の熱心な主張で加えられた。後に、CERN の Ulrich Muller と NIST の Przemek Klosowski はユニットテーブルを貴重な専 門的援助として提供した。私が知る限り、単位を表すために代数式表現と変数を 使うことについてのアイデアは、muMath(マイクロ・コンピュータのための初期 の代数学システム)についての Byte 誌の古い論文にさかのぼる。

多くの人々がバグを報告したり、大小の機能を提案することで Calc に貢献した。 特に貴重ないくつかは、 Tim Peters(セレクションコマンド群、書替規則群、 その他多くの代数機能に至るアイデアの発想を手伝った), Francois Pinard(Calc Summary appendix の初期のプロトタイプに貢献し、 その他多くの方面で貴重な助言をいただいた), Carl Witty(そのタカの目で、 Calc マニュアルの多くの印刷ミスや記載ミスを発見した), Tim Kay(憑依モードの開発を推進した), Ove Ewerlid(代数コマンド群に関して多くの助言をし、 多項式処理のいくつかのプログラムに貢献した), Randal Schwartz(calc-eval 関数を提言した), Robert J. Chassell(Calc チュートリアルと練習問題を提言した)、そして Juha Sarlin(素早くロードできるように Calc をどう分割すべきか最初に考えた)。 Bob Weiner には Lucid Emacs ポートで非常に助けられた。

Calc 開発中に利用した書籍は、

Art of Computer Programming
Knuth 著(特に第2巻, Seminumerical Algorithms)
Numerical Recipes
Press, Flannery, Teukolsky, Vetterling 著
Data Reduction and Error Analysis for the Physical Sciences
Graham, Knuth, Patashnik 著
Concrete Mathematics
Graham, Knuth, Patashnik 著
Common Lisp, the Language
Steele 著
CRC Standard Math Tables(William H. Beyer, ed.)
Steele 著
Handbook of Mathematical Functions
Abramowitz and Stegun's venerable 著

Mathematica, SMP, Macsyma, Maple, MathCAD, Gnuplot, その他のプログラムの ユーザーズマニュアルや、HP-28, HP-48 の取扱説明書を参考にした。そしてもち ろん、素晴らしい GNU Emacs Lisp Reference Manual(Bil Lewis, Dan LaLiberte著)無しにはCalcは書けなかっただろう。

最後に Richard Stallman に感謝する。Emacs エディタ, 言語, 環境の、彼によ る素晴らしいインプリメンテーションが無かったら、Calc は2週間でカタがつい ていただろう。


Go to the first, previous, next, last section, table of contents.     利用度数