Emacs, Perl and Async

2,553 views

Published on

2011/10/08 関西Emacs #x04

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,553
On SlideShare
0
From Embeds
0
Number of Embeds
1,153
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Emacs, Perl and Async

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

×