プログラミング
言語”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個の
実行可能な
 命令
(゚Д゚)!!
抽象化すれば
いいんじゃない
  (́・ω・)?
ソースコード
定義
 > = hoge,
 < = piyo,...     Parser

                抽象的な命令列
                           [:pinc, :inc,
                 Machine    :dec, :pdec...]


                  結果
Parserの「定義」を
  入れ替えれば、
    いくらでも
   言語が作れる
   ような・・・
※さあ、
起きてください
 щ(゚Д゚щ)
というわけで
真のタイトル
ネタ
プログラミング
言語クリエイター
Gunma “Youma”

Gunma.web #8 @ 2012/03/03
Presented by ぱろっと(@parrot_studio)
"Youma"
プログラミング言語
 Gunmaの母体
内部で使われる
 ライブラリ
"Windstorm"
意味:暴風
=
上州名物 空っ風
※ここから
  約1分間の
熟睡タイムです
 (́-ω-)zzz...
Windstorm:
- Parser
- Machine
- Executor
ソースコード
定義
 > = hoge,
 < = piyo,...     Parser

                抽象的な命令列
                           [:pinc, :inc,
                 Machine    :dec, :pdec...]


                  結果
ソースコード

                Windstorm
定義     Parser

     抽象的な命令列

      Machine

       結果
オリジナル命令を
  二つ追加
 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/

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