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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
uzimaru0000
June 01, 2020
Technology
0
550
BrainFuckをつくった
#uzimaru生誕LT会
uzimaru0000
June 01, 2020
Tweet
Share
More Decks by uzimaru0000
See All by uzimaru0000
OGPを使いたい
uzimaru0000
0
170
git入門
uzimaru0000
1
350
Webフロントエンド入門
uzimaru0000
1
450
WebフロントエンジニアはOSの夢を見る
uzimaru0000
0
360
Elmで作るCLI
uzimaru0000
0
140
Blogを作った話 -Zli x DeNA-
uzimaru0000
1
200
Compression Vue App
uzimaru0000
0
130
好きなライブラリ_OSS
uzimaru0000
0
230
Other Decks in Technology
See All in Technology
学生・新卒・ジュニアから目指すSRE
hiroyaonoe
2
630
変化するコーディングエージェントとの現実的な付き合い方 〜Cursor安定択説と、ツールに依存しない「資産」〜
empitsu
4
1.4k
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.4k
広告の効果検証を題材にした因果推論の精度検証について
zozotech
PRO
0
190
Embedded SREの終わりを設計する 「なんとなく」から計画的な自立支援へ
sansantech
PRO
3
2.5k
セキュリティについて学ぶ会 / 2026 01 25 Takamatsu WordPress Meetup
rocketmartue
1
300
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
240
制約が導く迷わない設計 〜 信頼性と運用性を両立するマイナンバー管理システムの実践 〜
bwkw
3
960
Ruby版 JSXのRuxが気になる
sansantech
PRO
0
160
Data Hubグループ 紹介資料
sansan33
PRO
0
2.7k
Bedrock PolicyでAmazon Bedrock Guardrails利用を強制してみた
yuu551
0
240
Bill One 開発エンジニア 紹介資料
sansan33
PRO
5
17k
Featured
See All Featured
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
52k
Rails Girls Zürich Keynote
gr2m
96
14k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
83
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
640
Optimizing for Happiness
mojombo
379
71k
The Spectacular Lies of Maps
axbom
PRO
1
520
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
66
Google's AI Overviews - The New Search
badams
0
910
Speed Design
sergeychernyshev
33
1.5k
Mobile First: as difficult as doing things right
swwweet
225
10k
[SF Ruby Conf 2025] Rails X
palkan
1
760
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
にコードがあるので興味がある人 は見てみてね
ありがとうございました!!