2012-10-24
■ [lisp][event] International Lisp Conference 2012 Kyoto に行ってきた
International Lisp Conferenceが京都に来るというので、せっかくなので参加してみました。
普通の「学会」よりも若干カジュアルな感じですが、RubyKaigiみたいなコミュニティベースのカンファレンスともやはり違います。両者の間(の学会側寄り)といった感じでしょうか。
感想ですが、みんな好き好きに好きなことをしてるので、僕も好きなことをしなければという気持ちになりました。 BiwaSchemeをなんのために作っているのか?みたいなことを考えたんですが、「規格に書いてある機能を1つずつ実装していくのが楽しい」ので、 誰にも褒められなくても多分やるのかなぁと思いました。ペンシルパズル類をやるのと同じようなものでしょうか?
以下はメモを貼りつけただけ。これだけでは内容はわからないと思いますが、とにかくLispに関係する多岐にわたる分野の発表があった雰囲気でも伝われば。
あとはTwitter検索 (#ILC2012)が参考になると思います。
On Lisp extensibility, and its impact on DSL implementation|http://international-lisp-conference.org/2012/tutorials.html#sec-1
DSL vs GPL。General Programming Languageかな?
What is the best language for compiler writers
某ゲームのために、LispによるCコンパイラを…(省略されていますが、表示する方法はありません)
Programming AllegroGraph in Lisp
- RDFトリプルを保存する
- dataとsemantics(意味)の両方をもつDB
- NOKIA: 携帯会社、スリッパのメーカー (違うものに同じ名前)
- 中銀=中国銀行=Bank of Chine (同じものに複数の名前)
- Louvre(subject) located_in(predicate) Paris(object)
- 新しいpredicateを追加するときにスキーマの変更が不要
- one-to-manyが中間テーブルなしで直接表現できる
- ...
- billions of triplesに対してms単位でクエリーが返る
- 推論ができる
- tripleは数値のベクタとして保存している #(2 4 5 6)
Fifty Years of a Lisp User
- Automata Studies (C. E. Shannon, J. McCarthy)
- パラメトロン計算機 PC-1
- A basis for a mathematical theory of computation, preliminary report
- HITAC 5020
- 京都賞(John McCarthy)
- Utilisp
- Topdown or bottomup? Hardest first
% cal 9 1752 9月 1752 日 月 火 水 木 金 土 1 2 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
- What do I write in Lisp? Almost anything.
- 多面体描画道楽
- M式で書かれたKSLIPプログラム
- LISPマシン
- GCのアニメーション化
- 紙テープをハードウェアなしで復元するには?
- スキャンして画像処理
- GCの可視化のデモ
A Class-based Object-oriented Programming Framework Based on CLOS
- CLOS/Class-Based (CLOS/CB)
- CLOS上に実装
- Javaのように、メソッドがクラスに属しているモデル
- 単一継承のみ
Scheme to C++ Simple Translator:Scm2Cpp
- 数値計算のため
- readableなC++コードを生成
- http://www.suri.cs.okayama-u.ac.jp/servlets/APPLICATION.rkt
Generating Probability Random Numbers using Common Lisp
- simple API && best speed optimization
Lisp: a language of freedom
- Lisp liberates us from ... Rigid way of thinking
- TAO on Lisp
- 3rd TAOは論理プログラミングの要素も備えていた
- 回文
- Never odd or even.
- Was it a car or a cat I saw?
- 真ん中に「(or 0」を持ってくることで回文Lispプログラムができる
- tarai
- lispのためのベンチマーク関数
t(x,y,z) = if x<=y then y else t(t(x-1,y,z),t(y-1,z,x),t(z-1,x,y))
O(n^n)
- ビジービーバー
- tak(x,y,z): ジョン・マッカーシーのtypoが広まった版 (then yがthen zになっている。計算量はずっと低い)
- 竹内関数は実数に対しても同様に振る舞う
- 竹内関数音楽 by Keisuke Ai
- フルバージョンは4日間かかる
- カレンダー
- 任意の天体に対して、「日」「月」「季節」とはどのように定義できるか?
- 「週」は、「最初の年」は?
- Lisp motivates and inspires a liberal way of thinking even on worn-out problems
Ralph - A Dylan dialect that compiles to JavaScript
motivation
- アプリ開発
- Web技術
- JSのみサポート
- なぜJSか
- desktop/mobile/server dynamic/functional/oop
- 言語機能に不満(collecitons/conditions/modules/macros)
- coffee dart typescript
- parenscript/clojurescript/scheme2js/gambit-js
goal
- performance/features/expressiveness
- inspired by dylan
dylan
- Apple / Based on scheme/CL / lisp-1, CLOPS / ALGOL-like syntax / Hygienic rule-based macro
features
- s-exp / dylan special forms, functions / hygenic procedual macro / module system
- simplefied collections/condition system/numerical tower
- interop
- <object> => Object
- <array> => Array
- procedual hygienic macro (inspired by Clojure)
- 例えば、マクロの中で+をtuka
future work
- more optimizations / type cheking/inference / multiple dispatch
メモ
Plumber - A Higher-Order Data Flow Visual Programming Language in Lisp
- DFVPL
- GUI上で作ったデータフローの図がLispプログラムにコンパイルされるっぽい
- 「+」は2入力だが、片方を空けておくことで「カリー化された+」を表現する
Xcrypt in Lisp: A Scripting System for Job Level Parallel Programming in Lisp
- いろんなスパコン用のジョブスクリプトを生成するシステム
- Lispインターフェイス
- コールバック(:before, :after, :before_in_job, :after_in_job等)
- jmapcar: job level map
Revisiting CLOS MOP
- CLOS: generic func/多重継承/declarative method combination/MOP
- CLの型が統合されている
- No data encapsulation
LIL: CLOS reaches higher-order, sheds identity, and has a transformative experience
- Lisp Interace Library
- CLのための?データ構造ライブラリ
- Interface Passing Style?
(assoc map key) (gethash key map)
- Polymorphism
(lookup obj key) ; objはmap, hash等
- IPS
(lookup <interface> obj key) 例 (lookup <alist> '((2009 . "BOS") (200 . "RNO")) 2010)
- <alist>はinterface object
- pure:insertとstateful:insertは違うインターフェイス(mutability)
- pure:lookupとstateful:lookupは同じ
Parametric interface
- <alist>は、厳密には(<alist> <eql>)のように比較関数が必要
(lookup (<alist> <case-insensitive-string>) '((...
このスタイルを使って、いろんなコンテナに対しpolymorphicなメソッドが書ける。
(demethod sum-values ((<i> pure:<map>) map) ... (nth-value 1 (first-key-value <i> map)) ... (lambda (m) (sum-values <i> m))
複数のinterfaceをとるメソッドも書ける(頻度は多くないが)
(convert <dest> <orig> object)
定義
(define-interface <foo> ...) (defmethod bar ((<i> <foo>)) ...)
Managing Complex Structured Data In a Fast Evolving Environment
- http://www.secureoutcomes.net/
- 指紋読み取り機?
- 犯罪のデータ
- 氏名の正規化とか
- 州によって扱いが違う
- LispでDSLを書いた
Along Hop
- http://hop.inria.fr/ multi-tier programming language for the Web 2.0 and the so-called diffuse Web
- Lisp in Small Piecesの著者でもある
歴史
- Static HTML
- CGI
- XHTML (html + css)
- サーバ側の複雑化(web MVC)
- JavaScript (DOM、クライアントサイドプログラミング)
- XMLHttpRequest
- クライアントサイドMVC
- 一部の計算はクライアントで、一部の計算はサーバで行われる
- 一つのプログラミング言語に融合したい
- 言語というか、それ自身がWeb app frameworkみたいな感じですね
- 3-tiers (1DB、1Server、N Client)
Hop
- Schemeをベースにした言語
- symmetric (HTMLが1st class、サーバ側でもDOMを触れる)
- 構文「$」と「~」で、明示的にserver-side/client-sideを指定できる
(<TD> :onclick ~(alert "1"))
- Esterel
- HipHop - embedded Esterel within Hop
Enabling Practical Reconfigurable Computing Through Domain Specific Compilers
BABAR: Wikipedia Knowledge Extraction
講演者が飛行機を逃したため、LT枠に。
- 自分のスライド
- 初日のやつもくっつけてます
- ルービックキューブ
- 全部のマスに数字を振る (8x6)
- ある2つのマスを入れ替えることはできるか、とか
- cl-permutation
Author Name Disambiguation System for Academic and Research Papers
- 名寄せ(ある2つの名前が同じ人を指すのかどうか)
- 400万レコード
- 機械学習
- CiNii (サイニィと読むらしい)
- (質疑) メールアドレスを使うと精度高いのでは
- 昔の論文にはメアドがないので
- 日本人の名前は、複数の書き方があり得るか?
- 漢字なら同じ
- いや、codepointの制限が…
- 「普段は簡単な方の渡辺を使ってる」みたいなことありそう
Automatic and Tunable Multi-Level Locality Improvement with a Lisp Garbage Collector
-- 手記はここで途切れている --
GPLはGeneral Purpose Languageと言っていたと思います。
でしたか。ありがとうございます。