Turing Complete Fm

28. プログラミング言語のブートストラッピング問題、コードとの互換性を保ちつつ言語を変更していく話 (川合史朗)

Informações:

Sinopsis

Gauche Schemeの作者の川合史朗さんと言語処理系についての話をしました。GaucheのCコードとの互換性を保ちつつ無限リストを導入するために採用したトリックや、Gauche自身で書かれているGaucheを過去のバージョンでビルドするために気をつけていることなどの話をしました。出演者: 川合史朗 (@anohana)、Rui Ueyama (@rui314) https://turingcomplete.fm/28 ハッシュタグは#tcfmです。 TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。 イントロ (0:00) 電卓そろばん対決の動画存在しました (2:28) Gaucheとそのほかのプログラムのリリースプロセス (3:33) コンパイラのブートストラッピング問題とバージョン間の互換性 (4:51) GCCやClangにおけるブートストラッピング問題 (18:08) Goでは言語仕様がフリーズされていてGo 1の間は変更されない (19:41) Webブラウザの6週間のリリースサイクルは短いのか長いのか (20:35) FirefoxもClangとlldにスイッチ (21:32) Gaucheがstdioを使わずに独自bufferred IOを実装している理由 (22:58) FILE構造体の内部にアクセスする(移植性のない)実装 (26:41) プログラム終了時にバッファをフラッシュしないといけない (27:13) stdioではstdinを読もうとしたらstdoutがフラッシュされる (28:24) 遅延シーケンス(無限リスト) (31:05) Cレベルでの互換性を保ったままconsセルを遅延シーケンスにするトリック (34:52) 遅延シーケンスをどこで使っているのか (37:29) 遅延シーケンスのパフォーマンス最適化 (38:45) Clojure言語のTransducerという仕組み (42:07) カリー化とは何か (46:06) キーワードとシンボル (48:09) キーワードをシンボルのサブクラスにして発生した問題 (54:27) Scheme言語仕様にはキーワードはない(シンボルで十分?) (56:08) 現在仕様策定中のScheme言語仕様R7RS (58: