貧民的プログラミング
組み込みの世界はこっち寄り?
常に限られたリソースの中で最大のパフォーマンスを追求する
富豪的に書かれているプログラムを組み込み機器に無理やり移植するとまあいろんなことが起きる

が昔
Arduinoの文字列クラスを使ってプログラムを書いていると、あちこちで文字が欠ける現象が起きた
メモリ破壊でもしてるのかなと思って調べたら、代入/初期化演算子がオーバーロードされてて毎回allocとcopyを発生させてた
そしてそいつがallocに失敗したときに無言でNULLを突っ込んでるのが文字欠けの原因だった
メモリを4GBぐらい詰んでいたら小さな文字列ぐらいでは
allocに失敗することはほとんどないけど、
組み込みマイコンだとリソース管理をミスると普通に失敗する
c++String str = "hogehoge";
みたいなコードでエラーも警告もなくいきなりstrにNULLが入る
文法的には合ってるのでなかなか解析するのが大変だった
ソフトをどのぐらい富豪的に書くかというのは与えられているリソースと作ろうとしているものの規模によって変わってくるので、設計センスが問われるところと思う
みたいなことをよく自問している
乱数で迷路を生成。
消耗品をゲームで表現するために、道具の使用回数を記録しない。
「運が悪いと道具が壊れる」ことにしてしまえば、1バイトメモリ削れる。
面白いアイデアが思いつくこともある。
しかし、人間よりも機械の都合が大きくなりがち。
昔のゲームでよくある「最大値が255」もこれ?

これ。
16bit 8bit で表される最大値が 255 なので。

16bitの符号なしで表現できる範囲は0~65535です

8bitの符号なしであれば0~255
おうふ。やっちゃった

メモリが足りない環境、CPUが遅い環境など、いくつかの側面がありそう

CPUが遅い場合のテクニック
テーブルに計算済みの値を入れておく
sin, cosとかがこういう感じだったような
メモリが足りない場合のテクニック
ギリギリまで小さなデータ型を使う
unionとか、ビットフィールドを使って、ビット単位までギチギチに使う
Copy On Write
