92
プログラミング 言語”Gunma” Gunma.web #8 @ 2012/03/03 Presented by ぱろっと (@parrot_studio)

ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

Embed Size (px)

DESCRIPTION

1枚目のタイトルはフェイクです 中盤に出てくる方が真のタイトルです サンプル解説:http://d.hatena.ne.jp/parrot_studio/20120304/1330823756 発表補足:http://d.hatena.ne.jp/parrot_studio/20120307/1331047077

Citation preview

Page 1: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

プログラミング言語”Gunma” Gunma.web #8 @ 2012/03/03

Presented by ぱろっと(@parrot_studio)

Page 2: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

Profile

Page 3: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

@parrot_studio

Page 4: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

parrot-studio.com

Page 5: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

前回のおさらい

Page 6: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

発表テーマ

Page 7: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

“プログラマに なれない

あなたのための 言語戦略”

Page 8: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

言及

Page 9: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

“Gunma.web 言語担当”

Page 10: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

その後の 雑談テーマ

Page 11: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

“群馬を どうやって 盛り上げる?”

Page 12: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

ある人:  プログラム言語を  作れば?

Page 13: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

私:  Brainf**k準拠で  よければすぐ  (`・ω・́)

Page 14: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

parrot$ ./gunma hello.gunma HelloGunma

Page 15: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

できました Σ(・ω・ノ)ノ

Page 16: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

いけない!

Page 17: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

1分で 終わってしまう!

(lll゚Д゚)

Page 18: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

そもそも Brainf**k とは?

Page 19: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)
Page 20: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

“8個の 実行可能な 命令”

Page 21: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

< > + - . , [ ]

Page 22: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

“こんな記号だけで プログラムが書けるか (ノ゚Д゚)ノ彡┻━┻”

Page 23: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

“でも書けちゃう・・・ くやしい(́-ω-)”

Page 24: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

・・・という 「ネタ」言語

Page 25: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

例:Hello World

Page 26: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

出典:Wikipedia - Hello worldプログラムの一覧

Page 27: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

単純なので 派生もいっぱい

Page 28: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

派生:  JOJO / misa  KQ / etc…

Page 29: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

例: プログラム言語JOJO

の定義

Page 30: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

出典:kmaebashi.com/zakki/lang0003.html

Page 31: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

出典:kmaebashi.com/zakki/lang0003.html

Page 32: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

※今から プログラムの 話をします

Page 33: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

※興味がない方は 1分くらい

寝ていてください

Page 34: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

“8個の 実行可能な 命令”

Page 35: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

< > + - . , [ ]

Page 36: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

出典:kmaebashi.com/zakki/lang0003.html

Page 37: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

どれも 原理は同じ

Page 38: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

“8個の 実行可能な 命令”

Page 39: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

(゚Д゚)!!

Page 40: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

抽象化すれば いいんじゃない (́・ω・)?

Page 41: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

ソースコード

Parser

抽象的な命令列

結果

Machine

定義  > = hoge,  < = piyo,...

[:pinc, :inc, :dec, :pdec...]

Page 42: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

Parserの「定義」を 入れ替えれば、 いくらでも 言語が作れる ような・・・

Page 43: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

※さあ、 起きてください щ(゚Д゚щ)

Page 44: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

というわけで 真のタイトル

Page 45: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

プログラミング 言語クリエイターGunma “Youma” Gunma.web #8 @ 2012/03/03

Presented by ぱろっと(@parrot_studio)

ネタ

Page 46: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

"Youma"

Page 47: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

プログラミング言語 Gunmaの母体

Page 48: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)
Page 49: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

内部で使われる ライブラリ

Page 50: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

"Windstorm"

Page 51: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

意味:暴風

Page 52: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

Page 53: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

上州名物 空っ風

Page 54: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

※ここから 約1分間の

熟睡タイムです (́-ω-)zzz...

Page 55: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

Windstorm: - Parser - Machine - Executor

Page 56: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

ソースコード

Parser

抽象的な命令列

結果

Machine

定義  > = hoge,  < = piyo,...

[:pinc, :inc, :dec, :pdec...]

Page 57: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

ソースコード

Parser

抽象的な命令列

結果

Machine

定義 Windstorm

Page 58: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

オリジナル命令を 二つ追加

clip / paste

Page 59: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

Youma:  Windstormを叩く  RubyのRakeタスク群

Page 60: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

install:  $ git clone git://github.com/parrot-studio/youma.git  $ cd youma  $ bundle

Page 61: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

create:  $ rake create:exec gunma gunma.yml

Page 62: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

execute:  $ bin/gunma hello.gunma

Page 63: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

※そろそろ起きて ください щ(゚Д゚щ)

Page 64: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

というわけで・・・

Page 65: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

既存の BF系言語を 実装してみた (́・ω・)っ

Page 66: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

- BF - JOJO - misa

Page 67: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

parrot$ bin/bf hello.bf Hello, world!

Page 68: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

動く・・・ 動くぞぉぉぉぉっ!

щ(゚Д゚щ)

Page 69: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

新しく ネタ言語を 作ってみた (́・ω・)っ

Page 70: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

“プログラミング言語 Gunma”

Page 71: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

司会: "シリーズ・ぐんまの未来について語る" 今日も群馬についてお話をうかがっていこうと思います。 解説は群馬研究が専門で群馬文化大学教授でもある、群馬太郎先生です。 よろしくお願いします。 教授: 群馬太郎です。 生まれも育ちも群馬の、生粋の群馬人です。 群馬のことなら何でも聞いてください。 (中略) それでは、また来週お目にかかりましょう。 ------------------------ result: HelloGunma

Page 72: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

“プログラミング言語 Shoborn”

Page 73: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

(´・ω・)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`) (´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(`・ω・)(・ω・`) (´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`) (´・ω・`)(´・ω・)(´-ω-)(・ω・´)(・ω・`)(´-ω・)(´・ω・)(´・ω・`)(´・ω・`)(´・ω・`) (´・ω・`)(´・ω・`)(`・ω・)(・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・)(´-ω-) (・ω・´)(・ω・`)(・ω・)(´-ω-)(´-ω-)(´-ω-)(´-ω-)(´-ω-)(´-ω-)(´-ω-) (´-ω-)(´-ω-)(´-ω-)(´-ω-)(・ω・)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`) (´・ω・`)(´・ω・`)(´・ω・`)(・ω・)(・ω-`)(´-ω-)(´-ω-)(・ω・)(・ω-`)(´・ω・`) (´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`) (´・ω・`)(・ω・)(´・ω・`)(´・ω・`)(´・ω・`)(・ω・)(´-ω-)(´-ω-)(´-ω-)(´-ω-)(・ω・) ------------------------ result: shoborn

Page 74: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

“プログラミング言語 Suzuha”

Page 75: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

失敗した失敗した失敗した失敗した失敗した失敗した失敗した失敗した 失敗した失敗した失敗した失敗した失敗した失敗した失敗した失敗した 失敗した失敗した失敗した失敗した失敗した失敗した失敗した失敗した (中略) 失敗した失敗した失敗した失敗した失敗した失敗した失敗した失敗した 失敗したゴメン。 あたしは失敗あたしは失敗あたしは失敗あたしは失敗 あたしは失敗あたしは失敗あたしは失敗 (中略) こんな人生は無意味だった ------------------------ result: IBN5100

Page 76: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

※わかる人だけ 笑ってくれれば いいです (́-ω-)

Page 77: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

他にもいろいろ 作ったけど・・・

Page 78: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

Youmaを 動かして 確認してね (`・ω・́)

Page 79: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

https://github.com/parrot-studio/youma https://github.com/parrot-studio/windstorm

Page 80: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

この発表の 直後に

push予定 Σ(゚Д゚)ガーン

Page 81: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

参考文献

Page 82: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)
Page 83: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

「プログラム言語を作る」前橋和弥・著

「数学ガール・ゲーデルの不完全性定理」               結城浩・著 「Rubyソースコード完全解説」          青木峰郎・著 http://i.loveruby.net/ja/rhg/book/

Page 84: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

DEMO

Page 85: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

ありがとう ございました (́・ω・)っ旦

Page 86: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

【おまけ】

Page 87: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

#5の発表で参考文献に 「数学ガール」 を挙げた理由

Page 88: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

“数学は厳密に言葉や定義を使う”ということが、強く関数型言語に反映されていると感じたから

Page 89: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

今回 「数学ガール」 を挙げた理由

Page 90: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

それは・・・

Page 91: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

“このパワポは それを書くには 狭すぎる”

Page 92: ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)

続きはWebで!! Σ(・ω・ノ)ノ

http://d.hatena.ne.jp/parrot_studio/