プログラミング言語”Gunma” Gunma.web #8 @ 2012/03/03
Presented by ぱろっと(@parrot_studio)
Profile
@parrot_studio
parrot-studio.com
前回のおさらい
発表テーマ
“プログラマに なれない
あなたのための 言語戦略”
言及
“Gunma.web 言語担当”
その後の 雑談テーマ
“群馬を どうやって 盛り上げる?”
ある人: プログラム言語を 作れば?
私: Brainf**k準拠で よければすぐ (`・ω・́)
parrot$ ./gunma hello.gunma HelloGunma
できました Σ(・ω・ノ)ノ
いけない!
1分で 終わってしまう!
(lll゚Д゚)
そもそも Brainf**k とは?
“8個の 実行可能な 命令”
< > + - . , [ ]
“こんな記号だけで プログラムが書けるか (ノ゚Д゚)ノ彡┻━┻”
“でも書けちゃう・・・ くやしい(́-ω-)”
・・・という 「ネタ」言語
例:Hello World
出典:Wikipedia - Hello worldプログラムの一覧
単純なので 派生もいっぱい
派生: JOJO / misa KQ / etc…
例: プログラム言語JOJO
の定義
出典:kmaebashi.com/zakki/lang0003.html
出典:kmaebashi.com/zakki/lang0003.html
※今から プログラムの 話をします
※興味がない方は 1分くらい
寝ていてください
“8個の 実行可能な 命令”
< > + - . , [ ]
出典:kmaebashi.com/zakki/lang0003.html
どれも 原理は同じ
“8個の 実行可能な 命令”
(゚Д゚)!!
抽象化すれば いいんじゃない (́・ω・)?
ソースコード
Parser
抽象的な命令列
結果
Machine
定義 > = hoge, < = piyo,...
[:pinc, :inc, :dec, :pdec...]
Parserの「定義」を 入れ替えれば、 いくらでも 言語が作れる ような・・・
※さあ、 起きてください щ(゚Д゚щ)
というわけで 真のタイトル
プログラミング 言語クリエイターGunma “Youma” Gunma.web #8 @ 2012/03/03
Presented by ぱろっと(@parrot_studio)
ネタ
"Youma"
プログラミング言語 Gunmaの母体
内部で使われる ライブラリ
"Windstorm"
意味:暴風
=
上州名物 空っ風
※ここから 約1分間の
熟睡タイムです (́-ω-)zzz...
Windstorm: - Parser - Machine - Executor
ソースコード
Parser
抽象的な命令列
結果
Machine
定義 > = hoge, < = piyo,...
[:pinc, :inc, :dec, :pdec...]
ソースコード
Parser
抽象的な命令列
結果
Machine
定義 Windstorm
オリジナル命令を 二つ追加
clip / paste
Youma: Windstormを叩く RubyのRakeタスク群
install: $ git clone git://github.com/parrot-studio/youma.git $ cd youma $ bundle
create: $ rake create:exec gunma gunma.yml
execute: $ bin/gunma hello.gunma
※そろそろ起きて ください щ(゚Д゚щ)
というわけで・・・
既存の BF系言語を 実装してみた (́・ω・)っ
- BF - JOJO - misa
parrot$ bin/bf hello.bf Hello, world!
動く・・・ 動くぞぉぉぉぉっ!
щ(゚Д゚щ)
新しく ネタ言語を 作ってみた (́・ω・)っ
“プログラミング言語 Gunma”
司会: "シリーズ・ぐんまの未来について語る" 今日も群馬についてお話をうかがっていこうと思います。 解説は群馬研究が専門で群馬文化大学教授でもある、群馬太郎先生です。 よろしくお願いします。 教授: 群馬太郎です。 生まれも育ちも群馬の、生粋の群馬人です。 群馬のことなら何でも聞いてください。 (中略) それでは、また来週お目にかかりましょう。 ------------------------ result: HelloGunma
“プログラミング言語 Shoborn”
(´・ω・)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`) (´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(`・ω・)(・ω・`) (´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`) (´・ω・`)(´・ω・)(´-ω-)(・ω・´)(・ω・`)(´-ω・)(´・ω・)(´・ω・`)(´・ω・`)(´・ω・`) (´・ω・`)(´・ω・`)(`・ω・)(・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・)(´-ω-) (・ω・´)(・ω・`)(・ω・)(´-ω-)(´-ω-)(´-ω-)(´-ω-)(´-ω-)(´-ω-)(´-ω-) (´-ω-)(´-ω-)(´-ω-)(´-ω-)(・ω・)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`) (´・ω・`)(´・ω・`)(´・ω・`)(・ω・)(・ω-`)(´-ω-)(´-ω-)(・ω・)(・ω-`)(´・ω・`) (´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`)(´・ω・`) (´・ω・`)(・ω・)(´・ω・`)(´・ω・`)(´・ω・`)(・ω・)(´-ω-)(´-ω-)(´-ω-)(´-ω-)(・ω・) ------------------------ result: shoborn
“プログラミング言語 Suzuha”
失敗した失敗した失敗した失敗した失敗した失敗した失敗した失敗した 失敗した失敗した失敗した失敗した失敗した失敗した失敗した失敗した 失敗した失敗した失敗した失敗した失敗した失敗した失敗した失敗した (中略) 失敗した失敗した失敗した失敗した失敗した失敗した失敗した失敗した 失敗したゴメン。 あたしは失敗あたしは失敗あたしは失敗あたしは失敗 あたしは失敗あたしは失敗あたしは失敗 (中略) こんな人生は無意味だった ------------------------ result: IBN5100
※わかる人だけ 笑ってくれれば いいです (́-ω-)
他にもいろいろ 作ったけど・・・
Youmaを 動かして 確認してね (`・ω・́)
https://github.com/parrot-studio/youma https://github.com/parrot-studio/windstorm
この発表の 直後に
push予定 Σ(゚Д゚)ガーン
参考文献
「プログラム言語を作る」前橋和弥・著
「数学ガール・ゲーデルの不完全性定理」 結城浩・著 「Rubyソースコード完全解説」 青木峰郎・著 http://i.loveruby.net/ja/rhg/book/
DEMO
ありがとう ございました (́・ω・)っ旦
【おまけ】
#5の発表で参考文献に 「数学ガール」 を挙げた理由
“数学は厳密に言葉や定義を使う”ということが、強く関数型言語に反映されていると感じたから
今回 「数学ガール」 を挙げた理由
それは・・・
“このパワポは それを書くには 狭すぎる”
続きはWebで!! Σ(・ω・ノ)ノ
http://d.hatena.ne.jp/parrot_studio/