17. Gauche Schemeの基本デザインの選択理由、オブジェクトデータベース、浮動小数点数の落とし穴
ゲスト: 川合史朗 (@anohana)
プログラミング言語を作る時には、途中で変えることが極めて難しいデザイン選択を最初に行わないといけないことがあります。今回は川合史朗さんがGaucheを設計した時に行ったデザイン選択の判断について話を伺いました。また、浮動小数点数のトリッキーさについても話をしています。
速度 x1.0
(遅く /
速く)
-15秒 /
-5秒 /
+5秒 /
+15秒
この時点にリンク
この時点にリンク
TCFMはサポーターの投げ銭によって収益を上げています。 このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。
0:00 | イントロ |
0:41 | セキュキャン参加者募集中 |
2:43 | 俳優のオーディションとその心構え |
5:16 | 川合史朗さんが出演している映画がサンフランシスコで上映されます |
7:40 | 前回の訂正 |
8:57 | Gaucheを作った経緯 |
12:22 | STkのオブジェクトシステム |
14:35 | CLOS(Common Lispのオブジェクトシステム)ではインスタンスのクラスを動的に変更できる |
18:39 | CLOSを使ってオブジェクトデータベースを作った話 |
24:38 | 三つ組を使ったグラフデータベースを作った話 |
29:24 | 構文木インタープリタではなくVMを選んだ理由は、継続 |
30:39 | プログラミングにおける概念としての「継続」 |
36:46 | 文字列の内部表現はどうするか |
37:47 | マルチスレッドの対応 |
39:36 | GCのAPIはどうするか(GaucheはBoehm GCを使って保守的GC) |
43:13 | 保守的GCとは何か |
45:03 | 自分ではGCを書かなかった理由 |
46:45 | Precise GCにしなかった理由はC言語との親和性 |
47:50 | マルチスレッドとGCとUnixのシグナル |
51:17 | GoやErlangの並行処理モデルを導入していない理由 |
52:31 | Gauche版のjava.util.concurrent |
55:16 | R5RSの範囲を実装するのは1ヶ月以内でできた |
57:37 | 浮動小数点数を10進で書き出して読み出した時、同じ数に戻ることを保証するには |
1:04:09 | Schemeは分数を正確な分数のままで扱うことができる |
1:07:17 | 16進浮動小数点表現 |
1:08:17 | 浮動小数点数の1.15を丸めた時、1.1になるべきか、1.2になるべきか |
1:12:12 | 正確数のsqrtは正確数にしたい |
1:16:07 | 浮動小数点数を安易に10倍すると精度が失われる |
1:16:49 | 浮動小数点数はそれ自体で整合は取れているが、実数とは異なる数の体系 |
1:17:43 | x87の80ビット浮動小数点数フォーマットの落とし穴が原因で、PHPが特定の数を読み込むと無限ループに陥るバグ |
1:19:38 | JavaやGaucheが読み込むとハングする特定の浮動小数点数があった |
1:23:25 | 浮動小数点数の精度は大は小を兼ねるわけではない |
1:25:42 | 言語処理系はコーナーケースをすべて面倒を見なければいけないのが面白い |
- セキュキャン2018
- 第442連隊(ヨーロッパ戦線で激戦を戦った日系アメリカ部隊)
- 100回落ちることを目指す話
- Go For Broke; 川合史朗さんがでている映画
- Go For Broke公式トレイラー(冒頭で話しているのが川合史朗さん)
- Gaucheホームページ & 川合史朗さんのエッセイ
- Tcl/Tk
- Common Lisp Object System (CLOS)
- STk
- 川合史朗さんによるSTkのMOPの話
- The Art of Meta Object Protocol (MOPの解説本)
- なんでも継続(川合史朗さんによる継続の説明)
- なんでも再帰
- R5RS
- Gaucheの概要
- The Law of Leaky Abstractions (漏れのある抽象化)
- XORリスト
- Boehm GC
- Hans Boehm
- 詳解Unixプログラミング(書籍)
- Java並行処理プログラミング(書籍)
- Future
- Printing Floating-Point Numbers Quickly and Accurately
- ニュートン・ラフソン法
- Donald Knuth先生のThe Art of Computer Programming (2) 日本語版(多倍長の割り算のアルゴリズムの解説がある)
- Rui Ueyamaによる浮動小数点数の解説
- When the inexact square root of an integer is exact
- Rounding 1.15
- Curse of extended floating point arithmetic
- Bitten by floating point numbers again
- Exact sqrt