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.
[email_address] 「 Ruby で作る奇妙なプログラミング言語の」紹介
本書について <ul><li>2008/12/20 発売 </li></ul><ul><li>著者 原 悠( yhara) 氏 </li></ul><ul><li>編集 usu-ya 氏 </li></ul><ul><li>usu-ya 氏のほ...
内容 <ul><ul><li>奇妙な言語 (Esoteric Language) を題材にプログラミング言語の作り方を解説 </li></ul></ul><ul><ul><li>紹介されている奇妙な言語の数  => 18 </li></ul><...
忘れてはいけない本書の目的 <ul><ul><li>プログラミング言語を作ること </li></ul></ul>
<ul><ul><li>HQ9+ </li></ul></ul>最初の言語
最初につくるのは HQ9+ <ul><ul><li>命令は 'H' 、 'Q' 、 '9' 、 '+' の 4 つだけ </li></ul></ul><ul><ul><ul><li>H… 文字列 &quot;Hello, world!&quot...
<ul><ul><li>H </li></ul></ul>HQ9+ での Hello world
HQ9+ のここがすごい <ul><ul><li>実装が簡単 </li></ul></ul><ul><ul><li>誰も「 Hello world! 」でつまずかない </li></ul></ul><ul><ul><li>+でインクリメントして...
<ul><ul><li>Brainf*ck </li></ul></ul>次の言語
次につくるのは Brainf*ck <ul><ul><li>命令は 8 個もある。 HQ9+ の 2 倍! </li></ul></ul><ul><ul><ul><li>+ … 現在のポインタの値を 1 増やす </li></ul></ul><...
<ul><ul><li>+++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-. </li></ul></ul><ul><ul><li>------------.<++++...
Brainf*ck のここがすごい <ul><ul><li>チューリング完全 </li></ul></ul><ul><ul><li>コードを書くより言語自体を実装するほうが簡単 </li></ul></ul><ul><ul><li>この言語から...
<ul><ul><li>Whitespace </li></ul></ul>次の言語
次につくるのは Whitespace <ul><ul><li>スタックとヒープを扱う </li></ul></ul><ul><ul><li>ジャンプ命令、サブルーチンがある </li></ul></ul><ul><ul><li>命令はスペース、...
<ul><ul><li>    </li></ul></ul><ul><ul><li>    </li></ul></ul><ul><ul><li>    </li></ul></ul><ul><ul><li>    </li></ul></u...
Whitespace のここがすごい <ul><ul><li>印刷できない </li></ul></ul><ul><ul><li>この言語から学んだこと </li></ul></ul><ul><ul><li>すべてプログラミング言語が </li...
その他に紹介される奇妙な言語 <ul><ul><li>コードが 2 次元に広がる言語「 Wired 」 </li></ul></ul><ul><ul><li>シェイクスピアを暗記していないとかけない言語「 Shakespeare 」 </li>...
忘れてはいけない本書の目的 <ul><ul><li>プログラミング言語を作ること </li></ul></ul>
この本のすばらしいところ <ul><ul><li>HQ9+ =>  言語ってこんなに簡単だ YO! </li></ul></ul><ul><ul><li>Brainf*ck =>  インタプリタ </li></ul></ul><ul><ul><...
まとめ <ul><ul><li>奇妙な言語は、暇をもてあました神々の遊び </li></ul></ul><ul><ul><li>奇妙なだけで終らない奥の深さがある </li></ul></ul><ul><ul><li>プログラミング言語に対する...
<ul><ul><li>作ってみた </li></ul></ul>
<ul><ul><li>その名も </li></ul></ul>
<ul><ul><li>ジョジョ言語 </li></ul></ul>
<ul><ul><li>ジョジョ言語 </li></ul></ul>
<ul><ul><li>みなさん、ご一緒に! </li></ul></ul>
<ul><ul><li>やれやれだぜ! </li></ul></ul>
<ul><ul><li>バトル風言語 </li></ul></ul><ul><ul><li>日本語でプログラミング可能 </li></ul></ul><ul><ul><li>バージョン3 </li></ul></ul>特徴
ジョジョ言語 <ul><ul><li>命令は 8 個 </li></ul></ul><ul><ul><ul><li>オラ  … 現在のポインタの値を 1 増やす </li></ul></ul></ul><ul><ul><ul><li>無駄  …...
ジョジョ言語で Hello world <ul><ul><li>オラオラオラオラオラオラオラオラオラッ!! </li></ul></ul><ul><ul><li>「あ・・・ありのまま今起こったことを話すぜ </li></ul></ul><ul>...
<ul><ul><li>ご清聴有難う御座いました。 </li></ul></ul>
Upcoming SlideShare
Loading in …5
×

Rubyで作る奇妙なプログラミング言語

1,145 views

Published on

Rubyで作る奇妙なプログラミング言語

Published in: Technology, Education
  • Be the first to comment

  • Be the first to like this

Rubyで作る奇妙なプログラミング言語

  1. 1. [email_address] 「 Ruby で作る奇妙なプログラミング言語の」紹介
  2. 2. 本書について <ul><li>2008/12/20 発売 </li></ul><ul><li>著者 原 悠( yhara) 氏 </li></ul><ul><li>編集 usu-ya 氏 </li></ul><ul><li>usu-ya 氏のほかの編集本 </li></ul>
  3. 3. 内容 <ul><ul><li>奇妙な言語 (Esoteric Language) を題材にプログラミング言語の作り方を解説 </li></ul></ul><ul><ul><li>紹介されている奇妙な言語の数 => 18 </li></ul></ul><ul><ul><ul><li>HQ9+ </li></ul></ul></ul><ul><ul><ul><li>Brainf*ck </li></ul></ul></ul><ul><ul><ul><li>Whitespace </li></ul></ul></ul><ul><ul><ul><li>Grass </li></ul></ul></ul><ul><ul><ul><li>Taxi4 </li></ul></ul></ul><ul><ul><ul><li>などなど </li></ul></ul></ul>
  4. 4. 忘れてはいけない本書の目的 <ul><ul><li>プログラミング言語を作ること </li></ul></ul>
  5. 5. <ul><ul><li>HQ9+ </li></ul></ul>最初の言語
  6. 6. 最初につくるのは HQ9+ <ul><ul><li>命令は 'H' 、 'Q' 、 '9' 、 '+' の 4 つだけ </li></ul></ul><ul><ul><ul><li>H… 文字列 &quot;Hello, world!&quot; を出力する。 </li></ul></ul></ul><ul><ul><ul><li>Q… プログラムのソースコードを出力する </li></ul></ul></ul><ul><ul><ul><li>9… 「 99 Bottles of Beer 」の全文を出力する </li></ul></ul></ul><ul><ul><ul><li>+…カウンタを 1 増やす </li></ul></ul></ul>
  7. 7. <ul><ul><li>H </li></ul></ul>HQ9+ での Hello world
  8. 8. HQ9+ のここがすごい <ul><ul><li>実装が簡単 </li></ul></ul><ul><ul><li>誰も「 Hello world! 」でつまずかない </li></ul></ul><ul><ul><li>+でインクリメントしても想像して楽しむしかない </li></ul></ul><ul><ul><li>この言語から学んだこと </li></ul></ul><ul><ul><li>こんなのでもプログラミング言語には違いない </li></ul></ul>
  9. 9. <ul><ul><li>Brainf*ck </li></ul></ul>次の言語
  10. 10. 次につくるのは Brainf*ck <ul><ul><li>命令は 8 個もある。 HQ9+ の 2 倍! </li></ul></ul><ul><ul><ul><li>+ … 現在のポインタの値を 1 増やす </li></ul></ul></ul><ul><ul><ul><li>- … 現在のポインタの値を 1 減らす </li></ul></ul></ul><ul><ul><ul><li>>… ポインタを 1 つ右に動かす </li></ul></ul></ul><ul><ul><ul><li><… ポインタを 1 つ左に動かす </li></ul></ul></ul><ul><ul><ul><li>.… 現在のポインタの値をアスキーコードとして出力する </li></ul></ul></ul><ul><ul><ul><li>,… 標準入力から 1 文字読み込み、現在のポインタに書き込む </li></ul></ul></ul><ul><ul><ul><li>[… ポインタの値が 0 なら、対応する ] までジャンプ </li></ul></ul></ul><ul><ul><ul><li>]… ポインタの値が 0 以外なら、対応する [ までジャンプ </li></ul></ul></ul><ul><ul><li>テープと呼ばれる配列を操作するだけの言語 </li></ul></ul>0 1 0 12 0 0
  11. 11. <ul><ul><li>+++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-. </li></ul></ul><ul><ul><li>------------.<++++++++.--------.+++.------.--------.>+. </li></ul></ul>Brainf*ck での Hello world
  12. 12. Brainf*ck のここがすごい <ul><ul><li>チューリング完全 </li></ul></ul><ul><ul><li>コードを書くより言語自体を実装するほうが簡単 </li></ul></ul><ul><ul><li>この言語から学んだこと </li></ul></ul><ul><ul><li>これでも &quot; 本物の &quot; プログラミング言語 </li></ul></ul>
  13. 13. <ul><ul><li>Whitespace </li></ul></ul>次の言語
  14. 14. 次につくるのは Whitespace <ul><ul><li>スタックとヒープを扱う </li></ul></ul><ul><ul><li>ジャンプ命令、サブルーチンがある </li></ul></ul><ul><ul><li>命令はスペース、タブ、改行で構成される </li></ul></ul><ul><ul><ul><li>[Space][Space](n) 数値 n をスタックに積む </li></ul></ul></ul><ul><ul><ul><li>[Space][LF][LF] スタックの一番上の値を取り除く </li></ul></ul></ul><ul><ul><ul><li>[Tab][Space][Space][Space] 足し算 </li></ul></ul></ul><ul><ul><ul><li>[Tab][Space][Space][Tab] 引き算 </li></ul></ul></ul><ul><ul><ul><li>[Tab][Tab][Space] ヒープへの書き込み </li></ul></ul></ul><ul><ul><ul><li>[Tab][LF][Space][Space] 文字列出力 </li></ul></ul></ul><ul><ul><ul><li>などなど 20 種類ぐらい </li></ul></ul></ul><ul><ul><li>無視されてきた空白との公平性のための言語 </li></ul></ul>
  15. 15. <ul><ul><li> </li></ul></ul><ul><ul><li> </li></ul></ul><ul><ul><li> </li></ul></ul><ul><ul><li> </li></ul></ul><ul><ul><li> </li></ul></ul><ul><ul><li> </li></ul></ul><ul><ul><li> </li></ul></ul><ul><ul><li> </li></ul></ul><ul><ul><li> </li></ul></ul><ul><ul><li> </li></ul></ul><ul><ul><li> </li></ul></ul><ul><ul><li> </li></ul></ul><ul><ul><li> </li></ul></ul><ul><ul><li> </li></ul></ul>Whitespace での Hello world
  16. 16. Whitespace のここがすごい <ul><ul><li>印刷できない </li></ul></ul><ul><ul><li>この言語から学んだこと </li></ul></ul><ul><ul><li>すべてプログラミング言語が </li></ul></ul><ul><ul><li>プログラマのために設計されているとは限らない </li></ul></ul>
  17. 17. その他に紹介される奇妙な言語 <ul><ul><li>コードが 2 次元に広がる言語「 Wired 」 </li></ul></ul><ul><ul><li>シェイクスピアを暗記していないとかけない言語「 Shakespeare 」 </li></ul></ul><ul><ul><li>wvW だけの関数型言語「 Grass 」 </li></ul></ul><ul><ul><li>処理系が作れない言語「 NULL 」 </li></ul></ul><ul><ul><li>などなど </li></ul></ul>
  18. 18. 忘れてはいけない本書の目的 <ul><ul><li>プログラミング言語を作ること </li></ul></ul>
  19. 19. この本のすばらしいところ <ul><ul><li>HQ9+ => 言語ってこんなに簡単だ YO! </li></ul></ul><ul><ul><li>Brainf*ck => インタプリタ </li></ul></ul><ul><ul><li>Whitespace => 中間言語+ VM 方式 </li></ul></ul><ul><ul><li>Starry => スタック型 </li></ul></ul><ul><ul><li>Bolic => パーサの実装 </li></ul></ul><ul><ul><li>Unlamda => λ の偉大さ( < これは紹介のみ </li></ul></ul><ul><ul><li>本書を読み進めていくと… </li></ul></ul><ul><ul><li>知らず知らずのうちに、一通り学んでしまっている! </li></ul></ul>
  20. 20. まとめ <ul><ul><li>奇妙な言語は、暇をもてあました神々の遊び </li></ul></ul><ul><ul><li>奇妙なだけで終らない奥の深さがある </li></ul></ul><ul><ul><li>プログラミング言語に対する先入観が壊れた </li></ul></ul><ul><ul><li>変な言語を作っているうちに、 Ruby と言語の実装の基礎を学べる本書はお得 </li></ul></ul><ul><ul><li>僕も言語を作ってみたい・・・・ </li></ul></ul>
  21. 21. <ul><ul><li>作ってみた </li></ul></ul>
  22. 22. <ul><ul><li>その名も </li></ul></ul>
  23. 23. <ul><ul><li>ジョジョ言語 </li></ul></ul>
  24. 24. <ul><ul><li>ジョジョ言語 </li></ul></ul>
  25. 25. <ul><ul><li>みなさん、ご一緒に! </li></ul></ul>
  26. 26. <ul><ul><li>やれやれだぜ! </li></ul></ul>
  27. 27. <ul><ul><li>バトル風言語 </li></ul></ul><ul><ul><li>日本語でプログラミング可能 </li></ul></ul><ul><ul><li>バージョン3 </li></ul></ul>特徴
  28. 28. ジョジョ言語 <ul><ul><li>命令は 8 個 </li></ul></ul><ul><ul><ul><li>オラ … 現在のポインタの値を 1 増やす </li></ul></ul></ul><ul><ul><ul><li>無駄 …現在のポインタの値を 1 減らす </li></ul></ul></ul><ul><ul><ul><li>スターフィンガー ! 、やれやれだぜ …ポインタを 1 つ右に動かす </li></ul></ul></ul><ul><ul><ul><li>ロードローラーだ!、貧弱ゥ …ポインタを 1 つ左に動かす </li></ul></ul></ul><ul><ul><ul><li>ハーミットパープル …現在のポインタの値をアスキーコードとして出力する </li></ul></ul></ul><ul><ul><ul><li>新手のスタンド使いか! …標準入力から 1 文字読み込み、現在のポインタに書き込む </li></ul></ul></ul><ul><ul><ul><li>あ…ありのまま 今 起こった事を話すぜ! …ポインタの値が 0 なら、対応する ザ・ワールド ! までジャンプ </li></ul></ul></ul><ul><ul><ul><li>ザ・ワールド ! … ポインタの値が 0 以外なら、対応する あ…ありのまま 今 起こった事を話すぜ! までジャンプ </li></ul></ul></ul>
  29. 29. ジョジョ言語で Hello world <ul><ul><li>オラオラオラオラオラオラオラオラオラッ!! </li></ul></ul><ul><ul><li>「あ・・・ありのまま今起こったことを話すぜ </li></ul></ul><ul><ul><li>俺は奴の前で階段を登っていたと思ったら、いつの間にか降りていた </li></ul></ul><ul><ul><li>な…何を言っているのかわからねーと思うが、 </li></ul></ul><ul><ul><li>俺も何をされたのかわからなかった… </li></ul></ul><ul><ul><li>頭がどうにかなりそうだった…催眠術だとか超スピードだとか、 </li></ul></ul><ul><ul><li>そんなチャチなもんじゃあ断じてねえ。 </li></ul></ul><ul><ul><li>もっと恐ろしいものの片鱗を味わったぜ…」 </li></ul></ul><ul><ul><li>スターフィンガー! </li></ul></ul><ul><ul><li>オラオララララ! </li></ul></ul><ul><ul><li>オラッ!オラオラララララオラオラオラァ!!! </li></ul></ul><ul><ul><li>スターフィンガー!!! </li></ul></ul><ul><ul><li>オラァオラオラオラオラオラオラッオラ!! </li></ul></ul><ul><ul><li>オラオラァァァァァオララララララララララ! </li></ul></ul><ul><ul><li>スターフィンガー! </li></ul></ul><ul><ul><li>オラオラオラオラオラ! つけの領収書だぜ! </li></ul></ul><ul><ul><li>力比べというわけか! </li></ul></ul><ul><ul><li>知るがいい…!『ザ・ ワールド』の真の能力は…まさに!『世界を支配する』能力だと言うことを! </li></ul></ul><ul><ul><li>「ロードローラだ!ロードローラだ!ロードローラだ!」 </li></ul></ul><ul><ul><li>無駄ッッッ! </li></ul></ul><ul><ul><li>ザ・ワールドッッ </li></ul></ul><ul><ul><li>スターフィンガー! </li></ul></ul><ul><ul><li>「ハーミットパープル」 </li></ul></ul><ul><ul><li>スターフィンガー </li></ul></ul><ul><ul><li>オラオラ! </li></ul></ul><ul><ul><li>「ハーミットパープル」 </li></ul></ul><ul><ul><li>オラオラオラオラオラオラオラ </li></ul></ul><ul><ul><li>ハーミットパープル!ハーミットパープル! </li></ul></ul><ul><ul><li>オラオラオラ </li></ul></ul><ul><ul><li>ハーミットパープル! </li></ul></ul><ul><ul><li>スターフィンガー! </li></ul></ul><ul><ul><li>無駄ァ! </li></ul></ul><ul><ul><li>ハーミットパープル </li></ul></ul><ul><ul><li>無駄!無駄! </li></ul></ul><ul><ul><li>無駄無駄無駄無駄無駄無駄無駄無駄無駄無駄 </li></ul></ul><ul><ul><li>WRYYYYYYYYYYYYYY ! </li></ul></ul><ul><ul><li>“ ジョースター・エジプト・ツアー御一行様”は貴様にとどめを刺して全滅の最後というわけだな </li></ul></ul><ul><ul><li>ーーーーー中略ーーーーーーーーーーーーー </li></ul></ul><ul><ul><li>てめーの敗因は・・・たったひとつだぜ・・・DIO たったひとつの単純(シンプル)な答えだ・・・ 『てめーは おれを怒らせた』 </li></ul></ul>
  30. 30. <ul><ul><li>ご清聴有難う御座いました。 </li></ul></ul>

×