貧民的プログラミング
組み込みの世界はこっち寄り?
常に限られたリソースの中で最大のパフォーマンスを追求する
富豪的に書かれているプログラムを組み込み機器に無理やり移植するとまあいろんなことが起きる
yanma.iconが昔Arduinoの文字列クラスを使ってプログラムを書いていると、あちこちで文字が欠ける現象が起きた メモリ破壊でもしてるのかなと思って調べたら、代入/初期化演算子がオーバーロードされてて毎回allocとcopyを発生させてた
そしてそいつがallocに失敗したときに無言でNULLを突っ込んでるのが文字欠けの原因だった
メモリを4GBぐらい詰んでいたら小さな文字列ぐらいではallocに失敗することはほとんどないけど、組み込みマイコンだとリソース管理をミスると普通に失敗する code: c++
String str = "hogehoge";
みたいなコードでエラーも警告もなくいきなりstrにNULLが入る
文法的には合ってるのでなかなか解析するのが大変だった
ソフトをどのぐらい富豪的に書くかというのは与えられているリソースと作ろうとしているものの規模によって変わってくるので、設計センスが問われるところと思う
みたいなことをよく自問している
乱数で迷路を生成。
消耗品をゲームで表現するために、道具の使用回数を記録しない。
「運が悪いと道具が壊れる」ことにしてしまえば、1バイトメモリ削れる。
面白いアイデアが思いつくこともある。
しかし、人間よりも機械の都合が大きくなりがち。
昔のゲームでよくある「最大値が255」もこれ?sta.icon
これ。16bit 8bit で表される最大値が 255 なので。Summer498.icon
16bitの符号なしで表現できる範囲は0~65535ですkuroma6666.icon
8bitの符号なしであれば0~255
おうふ。やっちゃったSummer498.icon
メモリが足りない環境、CPUが遅い環境など、いくつかの側面がありそうinajob.icon
CPUが遅い場合のテクニック
テーブルに計算済みの値を入れておく
sin, cosとかがこういう感じだったような
メモリが足りない場合のテクニック
ギリギリまで小さなデータ型を使う
unionとか、ビットフィールドを使って、ビット単位までギチギチに使う