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

Preview:

DESCRIPTION

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

Citation preview

プログラミング言語”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/

Recommended