ILC2012個人的まとめ#1 一日目

ちょっと寝過ごし&道に迷い、ギリギリに会場到着。
そろそろ開始時間だったけどレジストレーションのところは順番待ちで10人ぐらい並んでた。

On Lisp extensibility, and its impact on DSL implementation

DSLならLispでしょう」という話。
既に良く知っている話だったので個人的には目新しい部分はなかった。

  • DSL(ドメイン固有言語) vs GPL(General Porpose Language、汎用言語)
  • DSLの分類
    • 既存の様々なDSL(lexやyacc等から各種埋め込みDSL等)を分類分け
  • Lisp以外の各言語での拡張性についての極簡単な紹介
  • 具体例
    • cuiのコマンドを書いた時に「--help」で出すヘルプ。一部の文字を太文字にしたり色を変更したりしている。この構造をベタなエスケープシーケンス直書きせずに、CLOSでいい感じの記述(というか色等のプロパティ化)にしてから最後に変換する方針にする。
    • 上記の過程(素のCLOS定義だと冗長なのをどんどん簡潔にしていくというDSL化の過程)を実演。確か以下のような順序で行う、みたいなのが書いてあったと思う
      1. まず(CLOSで)普通に設計、抽象化
      2. コードが冗長な部分の内、関数化でどうにかできる部分を関数化
      3. 残ったコードが冗長な部分の内、リードマクロで構造部分を読み書きしやすくする
        • ここではC系の、 { } で構造を表現するリードマクロを選択
      4. 最後にマクロを使って、余分なquoteや括弧を減らす

What is the best language for compiler writers

阿部さんがこれまで色々なコンパイラを書いてきた各言語を星でレーティングして、そのレーティングが時系列でどう変化していったか、という話。
どの年にどの言語はじめたというのはメモしてたけど星いくつだったかはメモしてないです。
メモ見てるだけだと分かりにくいけど色々と濃い話があってすごい面白かったです。当時のゲーマーはより楽しめた。

  1. 1984年、FortranPascal
    • SOLAR language compiler(1984-1985)
      • 実工場のミシンのための言語およびVMだそう
  2. 1985年、C
  3. 1986年、ファミコン/NES(6502)、KCL(Kyoto CommonLisp)
  4. 1987年、Lisp
  5. 1990年、Lisp
  6. 1994年、Lisp(レーティングからエクスクラメーションマークが取れてしまう)
  7. すいません、以降はレーティングのメモ取れてないです
    • バーチャルボーイ(V810)用Cコンパイラ
      • CおよびLispライブラリによって書かれた
    • COINSプロジェクト(2002-2005)
      • 多ターゲットのバイナリを生成する多言語コンパイラを作るプロジェクト
      • Javaで実装する→「Javaはshit」大量のJavaの欠点のリストが
    • SCKプロジェクト
      • S式ベースのコンパイラキット
      • EmacsLispで書かれている
      • IPAの未踏に採択された
      • 実際にコンパイルしたり中間形式を出したりするデモあり
    • Portable Slice Analyzer(2012)
      • Haskellで実装
      • プログラムスライスとは、例えばCのコードの特定部分にて「スライスポイント」を指定すると、そのスライスポイントに関する部分だけを抜き出して(逆に言うとスライスポイントに関係しない関数呼び出しと変数を削除する)、その結果のコードを取り出すもの、らしい
        • これは文章で説明すると難しいけど、実際に適用前のコードと適用後のコードを見て比べてみれば(その比較がスクリーンに出てた)、どういう事をするものなのかすぐに理解できた
    • Data Flow Analyzer for Java
      • 最初はLispで書いてたが、顧客の要望でJavaにしないといけなくならず、またもや「手で」移植する作業を行う羽目になった(しかも先に「shit」と言っていたJavaに)との事…

おひる

会場でお弁当とお茶をもらい、日本人若手組(?)で外の公園へ。

Kyoto.lisp @ ILC2012

とりあえずネタのある人はLTする事に。
こはちゃんとメモとれてないです。

(1)画像フィルタ(すいませんタイトル失念)
  • 映画を撮ってる際に画像フィルタが必要で、既存のはあるけど速度が遅いので、CLで書いて高速化した、という話とデモ
(2)Shelly
  • @nitro_idiot さんが Kyoto.lisp#1 でやった内容
(3)SawzallでLisp
  • zickさんの話。Sawzallはgoogle内で使われてるログ集計用言語で、それでLisp処理系を実装したという話
(4)Hasp
  • 俺だよ!内容自体は Kyoto.lisp#1 でやった内容と同じだけど、あの濃いメンバーの前でやるべき内容ではなかったとすごい思った。
(5)lequeさん(タイトル失念)
  • R5RSのdenotational semanticsの定義がすごいのたくって分かりにくいので、ocamlで書いてみた、動いた、という話だったと思う。実演あり
  • ocamlで書いてみたら型エラーが出て、元のR5RSでおかしい部分があってerrataにもまだなってない?みたいな話もされてた記憶があります(うろおぼえ)
(6)全文検索システムの速度を100倍に
  • なんかこのLTだけみっちりメモとってあるけど、オフレコで、という事だったので…
  • とりあえず、「cl-fad:delete-directory-and-files」とシンボリックリンクディレクトリには気をつけたいです。
(7)BiwaSchemeの6年
  • BiwaSchemeの歴史紹介的な話
    • JavaScriptの主流がprototype.jsからjQueryに変化してそれに合わせたり、とか、そういう話をされていた記憶がある
  • BiwaSchemeを使って BiwaSlide というのを作って、このプレゼンも BiwaSlide との事。
    • プレゼン内容はS式で書く。任意のタイミングでコンソール開いてS式を評価できる。
    • 自分もS5でhtml書くの嫌になってたので試したいんだけど、BiwaSlideの公式サイト的なものはない?ぐぐってもみあたらなかった。yharaさんがBiwaSlideで書かれたプレゼンから勝手に取るしかない?

解散

  • 自分は用事があってそのまま急いで帰ったけど、残ったメンバーで飲み会されてたとの事。残念。