いつもの実況メモです。
50万行オーダーのプロジェクトを俺Lispで書く / mitamex4uさん
L4uはLispを元にした独自の構文を持つスクリプト言語です。
- 10年でプロジェクトが巨大になって来た → 楽をするのにLispを使う
- なんでLisp?
- 小さい
- REPL(Read Eval Print Loop)できる
- L4u (Lisp for you!)*1
- L4uは、DojaからServlet環境、.NETでも動く
- エディタもツクッタ (Eclipseのプラグイン誰か作って → Eclispとか言う名前がいいw)
- サーバ側
- REPLが可能→Doja - サーバ - PC 間で可能
- サーバサイドのL4u → サーバで動いてた物をケータイに移せる
- ホスト言語との連携前提。グルー的に使う。
- call/ccの代わりのdelegate/cc
- スタックをコピーせず、そのまま停止してホスト言語に処理を渡す
- ホスト言語から継続を呼べば、動作再開
- プリプロセッサ搭載 → ケータイ端末ごとにいろいろ変えなきゃならないから
- すべて糖衣構文で、S式になる
- 超並列的指向
- 人に優しい構文
HyperSpecひとめぐり〜こんなことまで決まっていますよ、Common Lispでは〜 / NANRIさん
Common Lispの仕様から、独特な物を紹介していただけました。
- HyperSpec → ANSI Common Lispの仕様で、1300ページ以上
- CLtL2 → 途中経過。日本語訳がある
- 数
- 自然な型変換とは逆の変換がされるもの
- コンパイラ compile関数
- 逆アセンブル disassemble関数
- デバッガ invoke-debugger
- エラーがあると普通デバッガに移行するので、普段は使わない
- エディタ ed → どんなエディタが上がるかは処理系依存
- 引数が関数名の時は、その関数定義を開くと言う"仕様"
- デモ
- edの使用 → SLIMEの機能で十分
- disassemble → アセンブリが表示される
- Q. SLIMEの自慢は??
- A. HyperSpecを引ける
- A. 下部に引数リストが出るのが便利。ユーザ定義関数も
- Q. 正準化は数学よりもパフォーマンス要件では?
- A. それもあると思われる
- A. 虚数のルーチンを呼ばなくて済む
scheme on PINBALL / fujita-yさん
Ypsilonの実装に関する話です。VMの実装者ってすごいですね*2。でも、楽しそう。
- ピンボール: FPSは200程度。経験的に140以下ではギザギザ。*3
- フレーム間が5msec
- SchemeはConcurrent GCを実装しやすい
- Ypsilon
- 基本的な最適化
- Scheme専用の最適化
- Coucurrent GCとは??
- 簡単に実装できた → 超遅い
- Q. Ypsilonでピンボールは動いているの??
- A. 動いていません。GCの致命的な不具合があり、延期
- Q. Ypsilonで 5msec って出るの??
- A. 今は、1msec以下の速度。50usec×3程度。
- Q. スタベーションが起こるとどうなる??
- A. スレッド優先順位を変更してコレクタ優先(ポータブルじゃない)。YpsilonではMutatorを止める。10msec止まるが、Overflowで死ぬよりいい
- Q. 全てYpsilonにする?
- A. ルール記述、カスタマイズ、プロトタイプ等に使いたい
- Q. GCと局所性などは矛盾する。どうする?
- A. Sweep GCと局所化は相性が悪い。スラバーロケーター??を使っている。コピーGCやコンパクションなどで、局所性が崩れて遅くなることがある。