emacs, perl and async

28
Emacs, Perl and Async Id:kiwanami さくらいまさし

Upload: masashi-sakurai

Post on 22-Jun-2015

2.191 views

Category:

Documents


2 download

DESCRIPTION

2011/10/08 関西Emacs #x04

TRANSCRIPT

Page 1: Emacs, Perl and Async

Emacs, Perl and Async

Id:kiwanamiさくらいまさし

Page 2: Emacs, Perl and Async

もくじ

● Kiwanami Emacs 紹介● Fukuoka-emacs 報告● 非同期色々● EPC and EDBC

Page 3: Emacs, Perl and Async

Id:kiwanami

● 福岡でパッケージシステム開発、SIの会社● 正晃テック(株) 技術責任者

● 九大院理、凝縮系物理出身● 2001年度未踏SC、数値計算・可視化など● 言語:Java, JavaScript, Ruby, elisp● 興味:UI, UX, プログラミングモデル

Page 4: Emacs, Perl and Async

Kiwanami Emacs 紹介

Page 5: Emacs, Perl and Async

Base Packages

● ATOK X3 (IIIMCEF) → mozc● Light Color Scheme● Anything, AutoComplete, Yasnippets● Cmigemo, Dmacro● Elscreen● Ispell, flyspell● Keybindings : C-w,

Page 6: Emacs, Perl and Async

日常生活 Emacs

● Wanderlust● Howm

● Memo, 技術日記, bookmark, schedule● Org, Markdown, hatena● Calfw, Cacoo

● Id-manager● Skype

Page 7: Emacs, Perl and Async

開発 Emacs

● E2wm● 全画面● Org memo

Page 8: Emacs, Perl and Async

Fukuoka Emacs 報告

Page 9: Emacs, Perl and Async

目指したところ

● Emacs ユーザー同士のつながり● メタ勉強会

● セミナー、ネタ → 大人数、すごい、準備大変● ハンズオン → 少人数、実践、準備大変● OST、WC → 少人数から大人数まで、横のつながり

Page 10: Emacs, Perl and Async

Fukuoka-emacs 結果

● 人数多かった● ベテランから初心者まで● ワールドカフェ良かった● 個人的には満足● →はてな記事参照● 来年春ぐらいに大きくやってみたい

Page 11: Emacs, Perl and Async

Emacs and Asynchronous

Page 12: Emacs, Perl and Async

なぜ非同期か

● 「Emacsの良さって結局何?」● もはや Vim は敵ではない

● 軽量開発環境 vs Eclipse, NetBeans

● 勝負する相手は Web Service 達

Page 13: Emacs, Perl and Async

雲の向こう側

Page 14: Emacs, Perl and Async

なぜ非同期か

● クラウドにデータがある● ブラウザの代わりのより良いエディタ

→ クラウド対応、通信、非同期

Page 15: Emacs, Perl and Async

非同期色々

● SLIME, ibus.el, iiimecf, w3m● Anything-books.el cacoo.el

● Deferred.el, concurrent.el● Ibus, dbus, X protocol

外部との連携、UI と直結、使いやすさ命→つまりスピード

Page 16: Emacs, Perl and Async

プログラミングモデル

● 非同期、コールバック、イベントドリブン● 処理効率良い● CPS、スパゲッティ、辛い

● 状態共有スレッド● コードが直感的● 競合、タイミングバグ、辛い● 同期、ロック → 処理効率悪い● OOPデザインパターン、ロックフリー

Page 17: Emacs, Perl and Async

プログラミングモデル

● 関数界隈アプローチ● 単一化、論理変数(データフロー)● Map Reduce● Message Passing, Actor● STM● 効率良い、コードは素直● 仕様から設計・実装への変換がキモ

→ GUIはどうやるの?

Page 18: Emacs, Perl and Async

プログラミングモデル

● Deferredの目指すところ● スレッドモデル的な見やすさ、作りやすさ

– GUI、副作用● 関数的な強力な並行処理

– 単一化、MapReduce, Message Passing

→いいとこ取り!

Page 19: Emacs, Perl and Async

Deferred.el と Concurrent.el

● Deferred.el● 非同期処理のイディオム(コードレベル)● 他の deferred 実装との類似性

– 非同期連結、エラー処理、待ち合わせ、タイマーなど● Concurrent.el

● 高レベルな並行処理部品– Thread, Co-routine, Semaphore

● 関数言語的なアプローチ– Dataflow, Signal-Slot

Page 20: Emacs, Perl and Async

Deferred.el の現状

● Emacs-devel ML にて標準入り見送り● ちょwww、おまwww、elispで並行処理とかオーバー杉だろJKwww

● Future型というもっとプリミティブなしくみが入った– Url package

● それ GNU ELPA で ← イマココ

Page 21: Emacs, Perl and Async

Emacs, Perl and Async

Page 22: Emacs, Perl and Async

EPC?

● Emacs Procedure Call● RPC, IPC

● Emacsと外部プロセスの通信スタック● SLIMEのSwankの一般化

● 「データ長+S式」の非同期やりとり● Emacs側に寄ってもらう

● いろんな言語でEmacsを拡張● とりあえず Perl で

Page 23: Emacs, Perl and Async

EDBC?

● Emacs から SQLite 使いたい!

● EmacsのDB接続API● Emacs DataBase Connectivity● JDBC, DBI みたいなの

● とりあえず Perl で

Page 24: Emacs, Perl and Async

EPC Code : elisp

Page 25: Emacs, Perl and Async

EPC Code : Perl

Page 26: Emacs, Perl and Async

EDBC...

Page 27: Emacs, Perl and Async

EDBCの目標

● SQLite でオレオレファイル保存をやめる● クラッシュ、並行動作● データ永続化の抽象化● インデックスによる高速検索

● 各DBへ接続してもっと賢い補完● テーブル一覧、カラム一覧、JOIN句、WHERE句

● MySQLAdmin、PGAdminみたいなツール● e2wmのパースペクティブ

Page 28: Emacs, Perl and Async

終わり