Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
BrainFuckをつくった
Search
uzimaru0000
June 01, 2020
Technology
590
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
470
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
顧客に向き合う開発組織へ。リアーキテクチャとフィーチャーチーム化で挑む組織改革
safie
0
2.1k
Railsのように考える: See through the Master
snoozer05
PRO
4
1.2k
絵ではじめるKubernetesセキュリティ
aoi1
4
690
山手線を徒歩で一周してわかった、 位置情報アプリは「足」が最強のデバッガー
hinakko
0
170
SREは、MCPとAutopilotをこう使え!
kazumax55
3
920
その Lambda、8分で 管理者権限まで奪われます
k1nakayama
7
3.4k
え、こんなに早く改修できるの?──新人エンジニアとスクラムマスターの2人が語る、AI×アジャイル開発の現場
ysasago
2
580
Vibe Coding で作ったプロダクトをどう安全に動かすか / How to Safely Run Products Built with Vibe Coding
glidenote
0
390
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
540
AIは推し活である。
kurazuuuuuu
1
900
安心して変更できるWebフロントエンドの作り方
pirosikick
5
2.8k
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
2
990
Featured
See All Featured
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
510
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
410
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
540
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
WCS-LA-2024
lcolladotor
0
830
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
The Limits of Empathy - UXLibs8
cassininazir
1
680
Designing Experiences People Love
moore
143
24k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
710
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
にコードがあるので興味がある人 は見てみてね
ありがとうございました!!