Turing Complete FMはRui Ueyamaによるプログラミングについてのポッドキャストです。
17. Gauche Schemeの基本デザインの選択理由、オブジェクトデータベース、浮動小数点数の落とし穴
ゲスト: 川合史朗 (@anohana)
プログラミング言語を作る時には、途中で変えることが極めて難しいデザイン選択を最初に行わないといけないことがあります。今回は川合史朗さんがGaucheを設計した時に行ったデザイン選択の判断について話を伺いました。また、浮動小数点数のトリッキーさについても話をしています。

速度 x1.0 (遅く / 速く) -15秒 / -5秒 / +5秒 / +15秒
この時点にリンク
0:00イントロ
0:41セキュキャン参加者募集中
2:43俳優のオーディションとその心構え
5:16川合史朗さんが出演している映画がサンフランシスコで上映されます
7:40前回の訂正
8:57Gaucheを作った経緯
12:22STkのオブジェクトシステム
14:35CLOS(Common Lispのオブジェクトシステム)ではインスタンスのクラスを動的に変更できる
18:39CLOSを使ってオブジェクトデータベースを作った話
24:38三つ組を使ったグラフデータベースを作った話
29:24構文木インタープリタではなくVMを選んだ理由は、継続
30:39プログラミングにおける概念としての「継続」
36:46文字列の内部表現はどうするか
37:47マルチスレッドの対応
39:36GCのAPIはどうするか(GaucheはBoehm GCを使って保守的GC)
43:13保守的GCとは何か
45:03自分ではGCを書かなかった理由
46:45Precise GCにしなかった理由はC言語との親和性
47:50マルチスレッドとGCとUnixのシグナル
51:17GoやErlangの並行処理モデルを導入していない理由
52:31Gauche版のjava.util.concurrent
55:16R5RSの範囲を実装するのは1ヶ月以内でできた
57:37浮動小数点数を10進で書き出して読み出した時、同じ数に戻ることを保証するには
1:04:09Schemeは分数を正確な分数のままで扱うことができる
1:07:1716進浮動小数点表現
1:08:17浮動小数点数の1.15を丸めた時、1.1になるべきか、1.2になるべきか
1:12:12正確数のsqrtは正確数にしたい
1:16:07浮動小数点数を安易に10倍すると精度が失われる
1:16:49浮動小数点数はそれ自体で整合は取れているが、実数とは異なる数の体系
1:17:43x87の80ビット浮動小数点数フォーマットの落とし穴が原因で、PHPが特定の数を読み込むと無限ループに陥るバグ
1:19:38JavaやGaucheが読み込むとハングする特定の浮動小数点数があった
1:23:25浮動小数点数の精度は大は小を兼ねるわけではない
1:25:42言語処理系はコーナーケースをすべて面倒を見なければいけないのが面白い