Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

JavascriptでRubyの作り方

8,078 views

Published on

Published in: Technology
  • Dating direct: ❶❶❶ http://bit.ly/369VOVb ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Sex in your area is here: ♥♥♥ http://bit.ly/369VOVb ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • 中谷様 コメントから失礼いたします。 初めましてBranding Engineer (https://b-engineer.co.jp/)イベント事業部土井と申します。 弊社は月に10-12回ほどエンジニアさん向けにイベントを開催しています。 11/30(水)には『JavaScript Bash』というJavascriptをお酒を飲みながら楽しく勉強したい方へ向けたイベントを開催させていただきます。 そこで上記のイベントの登壇者を探していたところ、中谷様のスライドシェアに掲載されていたJavaScriptのスライドを拝見しまして是非イベントにて登壇していただきたくご連絡させていただきました。 ご検討の程何卒宜しくお願いします。 doi_kouki@b-engineer.com http://tech-eight.connpass.com/event/44268/
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

JavascriptでRubyの作り方

  1. 1. Javascript で Ruby の作り方 2009/7/23 中谷秀洋@サイボウズ・ラボ
  2. 2. JSRuby • JavaScript で実装した Ruby – http://coderepos.org/share/wiki/JSRuby – http://labs.cybozu.co.jp/blog/nakatani/2008/01/j avascript_ruby_jsruby_01.html – http://labs.cybozu.co.jp/blog/nakatani/2008/01/_ jsruby.html • Hash未サポートだったり、実装率低め • 非同期実行やJavascriptオブジェクト(DOMな ど)の操作サポート
  3. 3. これを聞けば
  4. 4. 初心者でも (文芸部でも)
  5. 5. JavaScript で Ruby が 書けるように!!
  6. 6. 第1部 「パーサ」
  7. 7. プログラムを 機械が扱える形式に 変換
  8. 8. LRとかLLとか LTとかDQとか
  9. 9. いろんな方法が あるけど
  10. 10. 初心者は 「再帰降下法」で 十分
  11. 11. 文芸部にもわかる「再帰降下」 • 演算子かな? • 代入式かな? • メソッドかな? • 変数かな? • という関数がいっぱい • パースの現在位置ポインタを渡す • お互いを呼び合う
  12. 12. 遅い
  13. 13. 複雑な構文に 対応できない
  14. 14. でも かんたん
  15. 15. 一般に
  16. 16. パーサができたら 7割終わり
  17. 17. ちなみに
  18. 18. Lispの 何が嬉しい?
  19. 19. パーサが 一瞬で書ける
  20. 20. 第2部 「コンパイラ」
  21. 21. パーサの結果を 実行により適した形式に 変換
  22. 22. 構文木 ↓ バイトコード
  23. 23. 構文木のまま 実行しちゃえば コンパイラいらないよ!
  24. 24. 第3部 「インタプリタ」
  25. 25. プログラム(変換後)を 解釈&実行する
  26. 26. 仕様通りに 実装していくだけ
  27. 27. ということで Rubyの仕様は……
  28. 28. ……
  29. 29. ん?
  30. 30. Rubyに「仕様」は ありません(でした)
  31. 31. orz
  32. 32. 今は
  33. 33. RubySpec
  34. 34. 膨大(><
  35. 35. JRubyのテストセットは もう少しコンパクト
  36. 36. ってことは Rspecが動くことが 目標?
  37. 37. 第4部 「Rubyスペシャル」
  38. 38. Ruby の シンタックスは
  39. 39. 人に優しく
  40. 40. 機械に厳しい
  41. 41. つまり
  42. 42. パーサーを書くのが 超大変(><
  43. 43. 頭が痛い例 > def a(x); 3 - x; end > a -1 # a(1の符号反転) => 4 > a = 3 > a -1 # a 引く 1 => 2 • a がどういうオブジェクトであるかによって、後 の演算子の評価が変化する(一項 or 二項)
  44. 44. 引数も パース時には 決まらない
  45. 45. 悩ましい例 > def a(x); x; end > [a -1, 2, 3] # [a(-1), 2, 3] => [-1, 2, 3] > def a(x, y); x+y; end > [a -1, 2, 3] # [a(-1, 2), 3] => [1, 3] • Ruby1.9からは超改善されて、だいぶ普通に なった(1.8.5? あたりにもバックポート)
  46. 46. 対策
  47. 47. 柔軟な構文木
  48. 48. 柔軟なインタプリタ
  49. 49. あとは気合い!
  50. 50. これで
  51. 51. 明日から JavaScriptで Rubyが書けるように なりましたね!!!
  52. 52. iVoca よろしくね! http://ivoca.31tools.com/

×