Brainf*ckにコンパイルできる言語CamphorScriptを昔作った話

Brainf*ckにコンパイルできる言語CamphorScriptを2014年ごろに一人で作った話。リポジトリは https://github.com/hsjoihs/camphorscript
2
NKA0(NA) @nka0i

@hsjoihs @elipmoc101 これめちゃくちゃ面白そうですね...

2018-02-06 22:52:05
【ゲムマ両サ-19】はすじょい (hsjoihs) / ヒンジ壊しP @hsjoihs

しかし、過去に書いたHaskellのコード、65ファイル180KBとかいう意味の分からない肥大化をしていてアレ github.com/hsjoihs/campho…

2018-02-13 13:17:02
【ゲムマ両サ-19】はすじょい (hsjoihs) / ヒンジ壊しP @hsjoihs

CamphorScript、せっかくなら構造体とかも実装したいんだよなぁ

2018-02-13 20:25:17
Kory @Kory__3

Brainf**kほど初心者向けな言語は存在しないよ。

2018-02-13 20:30:46
Kory @Kory__3

多分ネコでも理解できる。

2018-02-13 20:30:57
Kory @Kory__3

ポインタとか難しいこと考えんでええねん

2018-02-13 20:31:39
Kory @Kory__3

関数ポインタとかポインタのポインタとかBrainf**kにないやろ

2018-02-13 20:31:56
Kory @Kory__3

言語作ることがあったらBrainf**kにコンパイルできる言語を作りたいってN回言ってる

2018-02-13 20:32:35
【ゲムマ両サ-19】はすじょい (hsjoihs) / ヒンジ壊しP @hsjoihs

@Kory__3 「Brainf**ck、コードの再利用さえできれば普通に楽しい言語なのになぁ」という思いを元に、演算子オーバーロードとインライン関数とかを大量導入したラッパー言語作ったことはありますね(全くメンテしてない) github.com/hsjoihs/campho…

2018-02-13 20:33:37
ぽかーん懐古DP@259家(桃音モモ) @259_Momone

開発者の、上級者の脳に否定的なスタンスから、頭がなくても書きやすい言語として設計されたためこのような名称になった(いいえ) twitter.com/Kory__3/status…

2018-02-13 20:35:46
Kory @Kory__3

実際真面目に書くとコードが♰♰完全にステートフル♰♰になるので実質メンテ可なコードをBFで書くのは不可能だと思ってる

2018-02-13 20:36:48
Kory @Kory__3

Brainf**k、IOの状態を気にするとかそんな甘ったるいレベルじゃなく、メモリ上の全状態をコード書きが把握しているのを要求してくる。アレつらい。

2018-02-13 20:38:20
【ゲムマ両サ-19】はすじょい (hsjoihs) / ヒンジ壊しP @hsjoihs

@Kory__3 CamphorScriptはそれを抽象化する設計にしています(変数宣言が事実上のmallocで、それをfreeする場所を手動で指定してやればあとはコンパイラがテキトーにアドレスを割り振ってくれる)

2018-02-13 20:40:54
【ゲムマ両サ-19】はすじょい (hsjoihs) / ヒンジ壊しP @hsjoihs

CamphorScriptなつかしいなぁ、オーストラリア研修のときに思いついたやつだから、中3〜高1に作ったのかな

2018-02-13 20:43:09
【ゲムマ両サ-19】はすじょい (hsjoihs) / ヒンジ壊しP @hsjoihs

@Kory__3 Brainf*ckは未使用のメモリが0で初期化されているので、freeする際にはメモリの中身が0であることをプログラマが保証してあげないといけません。そのためにdelete文という文があって、ブロック内で新規に獲得したメモリはブロックを抜けるまでの間にdeleteしないとコンパイルエラーです。

2018-02-13 20:46:15
【ゲムマ両サ-19】はすじょい (hsjoihs) / ヒンジ壊しP @hsjoihs

@Kory__3 これにより、Brainf*ckであってもそれなりのモジュール化が実現できたりします

2018-02-13 20:46:58
【ゲムマ両サ-19】はすじょい (hsjoihs) / ヒンジ壊しP @hsjoihs

@Kory__3 あと、if書くのにもイディオムが要る以上、制御構文も自作できるようにしてあります

2018-02-13 20:48:42
【ゲムマ両サ-19】はすじょい (hsjoihs) / ヒンジ壊しP @hsjoihs

メインの開発期間は 2014/03/02 ~ 2014/10/11 かぁ、なつかしいなぁ

2018-02-13 20:54:31
【ゲムマ両サ-19】はすじょい (hsjoihs) / ヒンジ壊しP @hsjoihs

そういえば、面接のときにもCamphorScriptの話をしたなぁ、あれはちょうど去年の今頃か

2018-02-13 20:57:08
【ゲムマ両サ-19】はすじょい (hsjoihs) / ヒンジ壊しP @hsjoihs

設計思想は ・コードの再利用を可能にする ・あくまでBrainf*ckに寄り添った書き方を可能にする ・コア言語は小さく。なるべくライブラリに押し付けよう

2018-02-13 20:59:16