Up 「低スペックなシステムが相手のプログラミング」 作成: 2021-04-10
更新: 2021-04-10


    つぎの簡単な車ロボットを考える:
      壁との距離を距離センサーで測りつつ,壁に向かって進む。
      距離を読み取るその都度,値をコンピュータに送信する。
      20cm 以下に近づいたとき,「obstacle!」を送信して停止する。

    このプログラムを作成して,実行する。
    すると,壁のはるか前で停止する。
    コンピュータの画面には,つぎが表示されている:
      Dist: 178 cm Dist: 167 cm Dist: 161 cm Dist: 155 cm Dist: 148 cm Dist: 140 cm Dist: 133 cm Dist: 124 cm Dist: 117 cm Dist: 110 cm [Errno 5] Input/output error [Errno 5] Input/output error [Errno 5] Input/output error Dist: 0 cm obstacle!

    壁の手前 110 cm の先で "[Errno 5] Input/output error" が発生し,そして距離を 0 cm を読むことになり,「obstacle!」を送信して停止した──ということである。

    このプログラムの起動を繰り返すと,症状は悪化し,ついには起動そのものにエラーが返るようになる。
    プログラムの異常終了は,初期状態へのリセットではない。
    電子的迷走がシステムの中に残っているのである。


    "[Errno 5] Input/output error" の意味は,単純である。
    あまり仕事が出来ない者につぎからつぎと要求を出したので,その者がパンクしてしまった──ということである。

    "[Errno 5] Input/output error" の解決法は,単純である。
    そのロボットを,「能力の低いロボット」と認知してやる。
    そして,ロボットがパンクしないような要求の出し方を,工夫する。


    ネットは,この "[Errno 5] Input/output error" をめぐる議論が満載である。
    しかし,ひとつとして解決策を提示できていない。
    オタク/専門家が寄って(たか)って議論して,堂々巡りの(てい)である。
    改めて考えてみると,不思議なことである。
    専門家は,馬鹿なのか?

    この場合の「馬鹿」の内容は,構造的・論理的に考えられない,である。
    オタク/専門家は,エラーをツールやパッチで解決しようとする。

    大事なのは,つぎの認識である:
      「改まらないことは,そのものの特色とせよ」
      「ありのままで活かす──を考えよ」


    Raspberry Pi は低スペックなコンピュータである。
    低スペックなコンピュータに積載する instruments は,相応に低スペックである。
    一般のPCに対してつくるようなプログラムは,このシステムではエラーになる。
    当たり前のことである。