いろいろな言語でBrainfuck
オープンセミナー2014@広島 懇親会
@PG_nonen
2014/02/01
自己紹介
● {-口頭で簡単に自己紹介します-}
Brainfuckとは
● チューリング完全な小さな言語
● 8文字しか使わない
● 内部のメモリを構成するテープ上を移動したり、
値を変更したりループしたりする
● チューリングマシンの定義をそのまま言語にし
たかのような言語
● 詳しくはW...
いろいろな言語でBrainfuck
● 以下の言語で実装しました
○
○
○
○

C
C++(実行時処理)
C++(TMPによるコンパイル時処理)
Haskell
いろいろな言語でBrainfuck
● C
○ 自前のメモリ管理が必要
いろいろな言語でBrainfuck
● C++(実行時)
○ メモリ管理処理の大部分をSTLに移譲することが可
能
いろいろな言語でBrainfuck
● C++(コンパイル時)
○ メモリ管理の仕組みがないので複雑な処理を行うと
コンパイラがクラッシュ
○ 入出力を工夫しなければならない
■ 実行関数に入力値も引数として渡し、戻り値とし
て出力値を得る
いろいろな言語でBrainfuck
● Haskell
○ メモリ管理などは一番楽(GCつき)
○ 入出力にByteStringを使うものの、ByteString.Lazy
で入力をしようと思ったら謎のエラーが出るので
ByteString.S...
いろいろな言語でBrainfuck
● 感想
○ C
■ リソース管理面倒くさい
○ 実行時C++
■ STL便利
○ コンパイル時C++
■ コンパイル時処理楽しい!
○ Haskell
■ ByteStringややこしい
いろいろな言語でBrainfuck
● 結論
○ Brainfuckを実装するなら実行時もしくはコンパイル時の
C++で!
いろいろな言語でBrainfuck
● ソースコード
○ 彼女募集中リポジトリに置いてあります
■ https://github.
com/minamiyama1994/girlfriend_require/tree/ma
ster/skill...
ご清聴
ありがとうございました
Upcoming SlideShare
Loading in …5
×

オープンセミナー2014@広島 懇親会 LT

651 views

Published on

オープンセミナー2014@広島のLTスライドです

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
651
On SlideShare
0
From Embeds
0
Number of Embeds
26
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

オープンセミナー2014@広島 懇親会 LT

  1. 1. いろいろな言語でBrainfuck オープンセミナー2014@広島 懇親会 @PG_nonen 2014/02/01
  2. 2. 自己紹介 ● {-口頭で簡単に自己紹介します-}
  3. 3. Brainfuckとは ● チューリング完全な小さな言語 ● 8文字しか使わない ● 内部のメモリを構成するテープ上を移動したり、 値を変更したりループしたりする ● チューリングマシンの定義をそのまま言語にし たかのような言語 ● 詳しくはWikipediaで調べて下さい
  4. 4. いろいろな言語でBrainfuck ● 以下の言語で実装しました ○ ○ ○ ○ C C++(実行時処理) C++(TMPによるコンパイル時処理) Haskell
  5. 5. いろいろな言語でBrainfuck ● C ○ 自前のメモリ管理が必要
  6. 6. いろいろな言語でBrainfuck ● C++(実行時) ○ メモリ管理処理の大部分をSTLに移譲することが可 能
  7. 7. いろいろな言語でBrainfuck ● C++(コンパイル時) ○ メモリ管理の仕組みがないので複雑な処理を行うと コンパイラがクラッシュ ○ 入出力を工夫しなければならない ■ 実行関数に入力値も引数として渡し、戻り値とし て出力値を得る
  8. 8. いろいろな言語でBrainfuck ● Haskell ○ メモリ管理などは一番楽(GCつき) ○ 入出力にByteStringを使うものの、ByteString.Lazy で入力をしようと思ったら謎のエラーが出るので ByteString.Strictを使わざるを得ない ■ 入力が終了するまで出力されない
  9. 9. いろいろな言語でBrainfuck ● 感想 ○ C ■ リソース管理面倒くさい ○ 実行時C++ ■ STL便利 ○ コンパイル時C++ ■ コンパイル時処理楽しい! ○ Haskell ■ ByteStringややこしい
  10. 10. いろいろな言語でBrainfuck ● 結論 ○ Brainfuckを実装するなら実行時もしくはコンパイル時の C++で!
  11. 11. いろいろな言語でBrainfuck ● ソースコード ○ 彼女募集中リポジトリに置いてあります ■ https://github. com/minamiyama1994/girlfriend_require/tree/ma ster/skill_appeal/Brainfuck ○ 彼女募集中です、よろしくお願いしますm(_ _)m
  12. 12. ご清聴 ありがとうございました

×