シミュコンパイラ係はやめとけ

シミュコンパイラ係はやめとけ 何の話?CPU実験です

adventar.org

明日はもうひとりの二係兼任であるコアFPUメモリ係さんの記事です.

22erのみなさんCPU実験の記事で1日分埋められますよ(CPU実験の詳細は他の方に譲ります).そういう伝統の必修科目がこの学科にはあって,分野的にも仕事の内容的にも大きく分けて4つの仕事があります.となると当然4人でその仕事を分担しますよね.なんで班分けのアンケート*1に3人班でも良いかどうかも聞くラジオボタンがあるんでしょうか.ああ,生徒数が4の倍数でない場合がありますもんね.間違っても選択肢の存在の面白さとかで選ばれるようなものではないですね.

3人班は4人分の仕事をなんとかしてこなすことになります.あろうことか3人班を希望すると班分けがより円滑に進み,見事3人班に割り当てられることができます.できました.これは,班分けのアンケートで「3人班を希望」し,第一志望にコンパイラ,第二志望にシミュレータを選んだハードウェアわからない人と同じ班になった,そんな選択肢は選んでない上に第一志望がこの二つのどちらでもない二人に二人分の仕事を押し付けるわけにもいかず,二つの係を持つことにした人の記事です.

あ,そうだ ぼっち・ざ・ろっくを観てください こんな記事読んでる場合じゃないですよ

bocchi.rocks

CPU実験を経験した21erから各係の詳細について聞いて,アンケート期限最終日までコンパイラとシミュレータのどちらを第一志望にするか悩んでいたので,両方やれたのはよかったです.コンパイラアセンブラ・リンカ・シミュレータなどを,rustcなどの既存の実装を学びながら苦しんで実装する機会をもらったのもよかったんですが,結構頑張っている割に終わる気配が見えなくて2ヶ月くらいずっと絶望しています.10月頭には11月中完動の予定を立ててたのに.いま線表見たら発狂しそうだから見ません.まだレジスタ割り当てが書き終わらないです.対面授業が始まってしまったこともあって,睡眠時間を削って苦痛と向き合っていたら体調を崩したし,気持ちだけではどうにもならない感じになってきました.レジスタ割り当てよりも喜多郁代の家族構成の方が知りたいし,mincamlのコード汚すぎてもう読みたくないし,気持ちもどうにもならない感じになっています.シスプロイヤイヤ期の3Sより苦しんでいる.

私はOCamlが嫌いなのでRustでコンパイラを書き直すことになりました.いや,しました.OCamlが嫌いでも流用することはできます.つまり逆張りです.OCamlにはそこそこまともなLR法のパーサジェネレータocamlyacc(, menhir)がある一方でRustにはなく*2,このあたりの選定と実装やってたら3週間くらい経ってました.シミュレータ係でもあるのでシミュレータとアセンブラ作り3週間くらい経ち,体調を崩しながら地道にコンパイラ作ってたらまた3週間くらい経ってました.今週が第10週目です.もうシミュ完動する班が2つほど現れはじめて,火曜の発表会で肩身が狭いどころではなくなってきました.去年のアドカレで読んだコンパイラ係の記事よりだいぶ遅くない?うちの班が一番完動遅かったら申し訳なさでどうにかなりそう,来週も休もうかな.

なんの話だっけ.そう,mincamlを翻訳しているんですけど(mincaml特有の仕様により実装で楽ができる部分もあるので),すでにRustに翻訳されているものがただの逐語訳になっていて全然使えないので,結局自分で読むことになっています.クロージャ変換まではわりと単純で読みやすくて翻訳もいいペースで進んでいたのに,レジスタ割り当て付近はだいぶ煩雑というか雑でとても読めたもんじゃないです.来年からコンパイラ書き直す人はクロージャ変換より後は一から実装した方が良いですよ.というか,コメントに(* super-tenuki *)とか書いてある,開発が活発じゃない14年前のソフトウェアを触ることになるのおかしいだろ.おかしくないかなぁ.

並行して行われる*3コンパイラ実験は,最初の方でmincamlの理解につながる内容だけでなくコンパイラを作る上でごく基本的なことも講義中に話しており,第6回目までにコンパイラをスクラッチするにはちょうどいい機会のような気もします.いや,そんなことないか.コンパイラが動かないとアセンブリを手書きすることになるし,レイトレのコードを渡してコア係さんたちに勝手に進めてもらうこともできないので,コンパイラを自作するなら2ndでやったほうがいいと思います.

もう書けることなくなってきた.実はコンパイラのスクラッチとシミュコンパイラ係と無能を両立させようとすることに問題があるのかもしれない.タイトル詐欺です.選べるなら1つにした方がいいですね.あとコア係の人にコンパイラ実験の課題を任せるのもやめたほうがいいです.ごめんなさい.あと中途半端な理由でこの学科に来ないほうがいいです.ごめんなさい.なんか悲しくなってきたな.アドカレ立てるの遅すぎる上に初日から思いっきり遅刻してすみません.対面授業に出ているぼっちちゃんの方が私よりずっとずっと偉いよね.結局コンパイラとシミュどっちもやりたい!コンパイラクラッチしたい!というわがままを聞いてもらって勝手に苦しんでいるだけなので自業自得です.すみませんでした.

今日木曜か,明日提出の計算量理論演習もやらないと…

*1:事前に志望する係を調査して班を決めるためのアンケートがあります.n人班作って~で余ったら先生と組むみたいな体育の授業とかスポ身のシステムではないです

*2:後日記事にします

*3:今これ書いてるときにちょうど講義してますね.私?家にいますけど…