Your SlideShare is downloading. ×
0
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
JavascriptでRubyの作り方
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

JavascriptでRubyの作り方

5,128

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,128
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
6
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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

×