Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

BFmeta

2,138 views

Published on

CAMPHOR- KMC 合同LT会(https://atnd.org/events/64077)で発表したBFmetaを紹介するスライドです。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

BFmeta

  1. 1. BFmeta CAMPHOR- KMC 合同 LT 会 (2015/03/24) KMC2 回生 prime
  2. 2. 2 自己紹介 KMC-ID: prime (KMC2 回生 ) 京都大学理学部数学系に進みます Twitter: @_primenumber Github: primenumber Hatenablog: PrimeNumber KMC での活動 : 競技プログラミング、ゲーム AI 、    電子工作、計算機や電子錠の管理
  3. 3. 3 Brainf*ck 命令がわずか 8 個しかない極めて単純なプログラミング 言語 コンパイラが単純になるように設計されている
  4. 4. 4 Brainf*ck の仕様 最初に 0 で初期化された無限長の配列がある 最初に 0 番地を指しているポインタがあり、このポイン タを通して配列を操作する 制御構文 [ と ] により条件分岐やループをする 0 1 2 3 4 5 6 7 0 0 0 0 0 0 0 0
  5. 5. 5 Brainf*ck の命令 + ポインタの指す値をインクリメントする - ポインタの指す値をデクリメントする > ポインタをインクリメントする < ポインタをデクリメントする [ ポインタの指す値が 0 なら対応する ] に飛ぶ ] ポインタの指す値が 0 以外なら対応する [ に飛ぶ . ポインタの指す値を文字として出力する , 入力を 1byte 読んでポインタの指す場所に代入する
  6. 6. 6 Brainf*ck でのプログラミング 命令がわずか 8 個しかない極めて単純なプログラミング言語 [ スライド ] 実用 Brainf*ck プログラミング
  7. 7. 7 BFmeta Brainf*ck で動的に自分のプログラムを書き換えられる ような拡張を施した言語を作りました 最初に配列を 0 で埋めるのではなく、プログラム自身を 埋め込む 配列の内容をいじるとプログラムが書き換わる リフレクションできる!!!
  8. 8. 8 とりあえず遊ぶ インタプリタ兼デバッガ http://github.com/primenumber/BFmeta サンプルコードは gist に二つぐらい上がっています https://gist.github.com/primenumber/4b01a6ac7c57e4 240200 https://gist.github.com/primenumber/9da257fa6cea94d 25bfe
  9. 9. 9 BFmeta インタプリタの問題点 インタプリタの実行速度が遅い Brainf*ck だと [ と ] の対応は予め計算して保存しておけば ジャンプ先をすぐに求められる BFmeta だとプログラムが動的に書き換わるので予め計算し ておくことが出来ない [ や ] でジャンプするたびにジャンプ先を探さなければなら ない
  10. 10. 10 おわり BFmeta について詳しくは KMC アドベントカレンダー 2014 の 26 日目の記事を参照 http://primenumber.hatenadiary.jp/entry/2014/12/27/0 34257

×