2023-03-30
Rustむずかしいよ
Table of Contents
やったこと
- Thompson’s construction実装
- 寝た
- NN
Rust
Rust 難しい。所有権・ライフタイム・借用を全然理解していないからコードを書くのがめちゃくちゃ遅い。勉強しなきゃー
NN
シャリアピンソースつくった
思ったこと
ドキュメント読もう
以前「言語がstdで用意しているAPIのドキュメントは全部読んだほうがいい」と誰かが言っていて、それを聞いたときはわざと極端な主張をするタイプのユーモアくらいにしか思っていなかった。「使うときに見ればいいじゃん」みたいな。
でも最近になってこの主張は全然大げさじゃじゃないなと思うようになった。自分がそこそこ使う言語なら、テクニックの引き出しをつくる、あるいは自分脳にのインデックスを貼る意味でも全部目を通しておくべきだと思う。知らない操作を検索することなんてできないからね。
こういうのって意外と量多くなかったりするし。
Shunting yard Algorithms
Thompson’s constructionの一環で、中置表記から後置表記(いわゆる逆ポーランド記法)に変換するコードを、Shunting-yard Algorithm (操車場アルゴリズム)というやつを実装して実現した。これは簡単に言うと優先順位を見ながら演算子をスタックに出し入れしてトークンを並べ替えるアルゴリズム。上級Cかどこかでやったような気もする。
手続きコードむずかしい
イミュータブル至上主義の人間も、低レイヤのプログラムを読み書きするなら状態モリモリ手続きコードから逃れることはできない。平野研の肩慣らしするか〜くらいの気持ちでCを読んでいるものの、状態を把握するのがやっぱり大変。デバッガ信者が現れる気持ちも分かるし、純粋関数信者が現れる気持ちもよくわかる。