不確定性原理
観測すると観測しているものに影響が出て正しい結果にならない原理である。
Wikipediaでは、観察者効果というのが正しいらしいが、ここでは原理の方を使う。
デバッグだけ動作しない問題
デバッグだけにおいて、結果が正しくなくなることがある。
正しくないというのは他の言葉で言えば、ソフトは正しい動作をするがデバッグ中は正しく動作しないという意味である。
そしてそれを確認するには、ソフトでなく、外部から観測するしかない。
RTOSだけでなく、通信プロトコルなどにおいて、タイミングが定義されている場合、デバッガを動作されるだけで、タイミングが乱され、間違っていないプログラムが動作しないと言う結果になってしまう。
printfを入れただけで、動作しなくなってしまう場合もある。
まともなOSもない組み込み系の場合、とてもデバッグがしにくい。
バグがなくても動作しない可能性は沢山ある
上記では一例を挙げたが、他にも動作しないことは沢山ある。
計算機を深く理解しないと、それらの問題に対応できない。
書いたプログラムだけを見ていたら、バグはないので絶対に対応策にたどり着けないのである。
RTOS、マルチスレッド、タスク、優先度、プロトコル、全部を見て何が悪いか推測するしかない。