emacs, perl and async
DESCRIPTION
2011/10/08 関西Emacs #x04TRANSCRIPT
Emacs, Perl and Async
Id:kiwanamiさくらいまさし
もくじ
● Kiwanami Emacs 紹介● Fukuoka-emacs 報告● 非同期色々● EPC and EDBC
Id:kiwanami
● 福岡でパッケージシステム開発、SIの会社● 正晃テック(株) 技術責任者
● 九大院理、凝縮系物理出身● 2001年度未踏SC、数値計算・可視化など● 言語:Java, JavaScript, Ruby, elisp● 興味:UI, UX, プログラミングモデル
Kiwanami Emacs 紹介
Base Packages
● ATOK X3 (IIIMCEF) → mozc● Light Color Scheme● Anything, AutoComplete, Yasnippets● Cmigemo, Dmacro● Elscreen● Ispell, flyspell● Keybindings : C-w,
日常生活 Emacs
● Wanderlust● Howm
● Memo, 技術日記, bookmark, schedule● Org, Markdown, hatena● Calfw, Cacoo
● Id-manager● Skype
開発 Emacs
● E2wm● 全画面● Org memo
Fukuoka Emacs 報告
目指したところ
● Emacs ユーザー同士のつながり● メタ勉強会
● セミナー、ネタ → 大人数、すごい、準備大変● ハンズオン → 少人数、実践、準備大変● OST、WC → 少人数から大人数まで、横のつながり
Fukuoka-emacs 結果
● 人数多かった● ベテランから初心者まで● ワールドカフェ良かった● 個人的には満足● →はてな記事参照● 来年春ぐらいに大きくやってみたい
Emacs and Asynchronous
なぜ非同期か
● 「Emacsの良さって結局何?」● もはや Vim は敵ではない
● 軽量開発環境 vs Eclipse, NetBeans
● 勝負する相手は Web Service 達
雲の向こう側
なぜ非同期か
● クラウドにデータがある● ブラウザの代わりのより良いエディタ
→ クラウド対応、通信、非同期
非同期色々
● SLIME, ibus.el, iiimecf, w3m● Anything-books.el cacoo.el
● Deferred.el, concurrent.el● Ibus, dbus, X protocol
外部との連携、UI と直結、使いやすさ命→つまりスピード
プログラミングモデル
● 非同期、コールバック、イベントドリブン● 処理効率良い● CPS、スパゲッティ、辛い
● 状態共有スレッド● コードが直感的● 競合、タイミングバグ、辛い● 同期、ロック → 処理効率悪い● OOPデザインパターン、ロックフリー
プログラミングモデル
● 関数界隈アプローチ● 単一化、論理変数(データフロー)● Map Reduce● Message Passing, Actor● STM● 効率良い、コードは素直● 仕様から設計・実装への変換がキモ
→ GUIはどうやるの?
プログラミングモデル
● Deferredの目指すところ● スレッドモデル的な見やすさ、作りやすさ
– GUI、副作用● 関数的な強力な並行処理
– 単一化、MapReduce, Message Passing
→いいとこ取り!
Deferred.el と Concurrent.el
● Deferred.el● 非同期処理のイディオム(コードレベル)● 他の deferred 実装との類似性
– 非同期連結、エラー処理、待ち合わせ、タイマーなど● Concurrent.el
● 高レベルな並行処理部品– Thread, Co-routine, Semaphore
● 関数言語的なアプローチ– Dataflow, Signal-Slot
Deferred.el の現状
● Emacs-devel ML にて標準入り見送り● ちょwww、おまwww、elispで並行処理とかオーバー杉だろJKwww
● Future型というもっとプリミティブなしくみが入った– Url package
● それ GNU ELPA で ← イマココ
Emacs, Perl and Async
EPC?
● Emacs Procedure Call● RPC, IPC
● Emacsと外部プロセスの通信スタック● SLIMEのSwankの一般化
● 「データ長+S式」の非同期やりとり● Emacs側に寄ってもらう
● いろんな言語でEmacsを拡張● とりあえず Perl で
EDBC?
● Emacs から SQLite 使いたい!
● EmacsのDB接続API● Emacs DataBase Connectivity● JDBC, DBI みたいなの
● とりあえず Perl で
EPC Code : elisp
EPC Code : Perl
EDBC...
EDBCの目標
● SQLite でオレオレファイル保存をやめる● クラッシュ、並行動作● データ永続化の抽象化● インデックスによる高速検索
● 各DBへ接続してもっと賢い補完● テーブル一覧、カラム一覧、JOIN句、WHERE句
● MySQLAdmin、PGAdminみたいなツール● e2wmのパースペクティブ
終わり