Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
BrainFuckをつくった
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
uzimaru0000
June 01, 2020
Technology
580
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
BrainFuckをつくった
#uzimaru生誕LT会
uzimaru0000
June 01, 2020
More Decks by uzimaru0000
See All by uzimaru0000
OGPを使いたい
uzimaru0000
0
190
git入門
uzimaru0000
1
370
Webフロントエンド入門
uzimaru0000
1
460
WebフロントエンジニアはOSの夢を見る
uzimaru0000
0
370
Elmで作るCLI
uzimaru0000
0
150
Blogを作った話 -Zli x DeNA-
uzimaru0000
1
220
Compression Vue App
uzimaru0000
0
140
好きなライブラリ_OSS
uzimaru0000
0
240
Other Decks in Technology
See All in Technology
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
260
MulticaとPi Coding Agentで、小規模OSSを30本同時運用した流れ
eiei114
0
120
SO-101×VLAによる3色キューブのピック&プレース
abeja
0
210
AWS ネットワーク構築でハマった(ハマりかけた) 5選とそこから得た教訓
nagisa53
4
230
【AG-UI × A2UI × MCP Apps】Generative UIをやさしく解説する
nrinetcom
PRO
1
130
まちスペース®とデジタルツインと「まちづくり」
hiro_ogi
0
120
【CEDEC2026】『GRANBLUE FANTASY: Relink - Endless Ragnarok』のバトル制作事例 ~最高のキャラゲーを目指して~
cygames
PRO
0
300
LLM・AIエージェントシステムベストプラクティス
shibuiwilliam
6
1.3k
『三匹の子ぶた』から学ぶネットワークセキュリティの昔と今 / Network Security: Then and Now Through the Lens of The Three Little Pigs
nttcom
1
6.1k
老害フォレンジッカーはAI羊の夢を見るか?
tadmaddad
0
330
グローバル基準のSREは、運用現場でどう機能したか:成熟度アセスメントの実践 / SRE NEXT 2026
sorawatanabe
0
240
Data Hubグループ 紹介資料
sansan33
PRO
0
3.2k
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
GitHub's CSS Performance
jonrohan
1033
470k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
490
Building an army of robots
kneath
306
46k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
240
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
470
We Have a Design System, Now What?
morganepeng
55
8.3k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
280
Mind Mapping
helmedeiros
PRO
1
310
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Transcript
BrainFuckをつくった うじまる
はじめに
たくさん集まってくれて ありがとうございます
自己紹介 - ひよこ - 趣味 - 料理 - プログラミング -
えっちいいね - 言語 - TS - Elm
誕生日なのでBrainFuckを作りました
BrainFuckを作った 誕生日なのでは冗談 1. uzimaru.comのリニューアルに elm/parser を使いたい 2. 練習でbrainfuckのparserを作って見よう 3.
BrainFuckってなに? 難解プログラミング言語のひとつ + - > < , . [ ]
の8つの記号だけを使ってプログラミングをする言語 チューリング完全なので実質なんでも作れる[要出典] 記号部分を任意のトークンに変えるだけで自作言語()が作れる 例 : https://github.com/masarakki/nyaruko_lang
elm/parserって? elmの公式が出してるパーサーライブラリ elm的には正規表現よりこっちを使ってほしいらしい らしい
やったこと 1. 文字列(コード)を受け取る 2. 作ったParserでelmのデータ構造に落とす 3. 作られたデータ構造を使って状態を計算 4. 表示 これだけ!!
やったこと 1. 文字列(コード)を受け取る 2. 作ったParserでelmのデータ構造に落とす 3. 作られたデータ構造を使って状態を計算 4. 表示 今回はこの2つをメインに話します
(っと言っても時間がないので凄い端折ります)
Parserでelmのデータ構造にする
命令を型にする - > 右にシフト - < 左にシフト - + 加算
- - 減算 - , 入力 - . 出力 - [ ループの開始 - ] ループの終わり
命令を型にする - > 右にシフト - < 左にシフト - + 加算
- - 減算 - , 入力 - . 出力 - [ ループの開始 - ] ループの終わり
命令を型にする あとはひたすら Parserを書いていく
命令を型にする `Parser.oneOf` はリストの上からParseし ていく 一つ一つのParserはかなりシンプル
データ構造を使って状態を計算
データ構造を使って状態を計算 Parseすると `List BCmd` が返ってくる そいつを使って状態を計算する だけ!! Parserの型
データ構造を使って状態を計算 状態を右のような型で持っておく - prt 今のポインタ - cmds 残ってる命令列 - memory
状態を持っておくメモリ - input 入力値 - output 出力値
データ構造を使って状態を計算 命令一つ一つに対応する処理を書けば 終わり!! 計算は失敗する可能性があるので(ポインタ 値が負の数になったり)`Result` 型になって いる
DEMO
まとめ - elm/parserがめちゃくちゃ便利だった - ちょっと癖がある(backtrackableとか(よく分かってない))けど使いやすい - https://uzimaru.dev/elm-brainfuxk で遊べるので遊んでね - https://github.com/uzimaru0000/elm-brainfuxk
にコードがあるので興味がある人 は見てみてね
ありがとうございました!!