トップ «前の日記(2016-03-20) 最新 次の日記(2016-03-22)» 編集

Mano Blog

Health | MISC | NPO | PC | インターネット | 仕事 | | 電波 |

2016-03-21 プログラムに偶然はあるのか

_ [仕事] プログラムに偶然はあるのか

   囲碁でコンピュータが人間に勝ったりで、AIやらディープラーニングやらが、とにかく賑やかだ。僕も、馬と人のインターラクションを解析する研究者らとおつきあいがあり、そこでもディープラーニングの手法を取り入れて成果を得ている。

  従来のコンピュータは、プログラムを計算機が忠実に実行することが主体で、プログラミングされていないことは、当然できないから、あるい意味出力の形態も有限だ。これに対して、自己学習を繰り返していくAIなどであれば、当然出力の形態も自己増殖するのだろう。この時、出力が碁盤の特定の位置に駒を置くというものであれば、そもそも形態が有限なので、従来ののプログラミングの延長にまだ近いのかなと、漠然と見ている。

  しかし、これに対して出力の多様性というか次元が深まっていくとどうなるのか気になる。例えば、ある状況では、わざと駒を置くまでの時間を遅らせたり、逆に早指ししたりして、相手の精神状態を揺さぶるなんてことを計算機はできるだろう。さらには、音を出すとかロボットアームで駒を置くなどの出力を増やすことで、さまざまな勝負環境を導出するかもしれない。

  しかも、計算機側は、周囲音とか動作などを最初から入力として持たないので、人間でいえば集中力が圧倒的に高いのだから、より強くなるわけだ。

  さて、こういう複雑で高度な計算機と対局にあるのが、ハードウェア制御などを行う、組み込み系マイコンなどのプログラミングだ。こちらの世界でも、確かに昔と違ってリアルタイムOSやLINUXが搭載されたりと、その複雑さは増すばかりだ。しかも、通信という非同期なインタフェイスを持ち、外部依存性があるから、複雑さはやはり無限だ。

  しかし、こちらの世界では、偶然、偶々にLEDが点灯したり、ブザー鳴るなんてことは無い。つまり、意図しているかどうかは別にして、たまたま偶然になんてものは存在せず、すべての事象はプログラムされたとおりにしか発生しないと言っても良いだろう。ただし、それがプログラマの意図したものかどうかは別だ。

  もちろん、ある事象の発生条件が成立する確率がとても低く、かつそれが外部からの入力や外部との通信に依存する場合などは、気が付かないものもある。しかし、逆に仮に外部からの事象によって条件が成立するものであったとしても、ある程度の期間に発生するとなると、確率的にも間近いなくそれは再発する。つまり、それはプログラムがそういう事を起こしうるように書かれているからだ。

  ただ、昔のシンプルな組み込みマイコンプログラミングとは違い、一つのランニングコードが動くには、OSがありSDKがありとなると、アプリケーションを書くプログラマーがその要因にたどり着き、解決できるかというとなかなかに困難な場合も多い。

  それでも、モノつくりの場合、利用者はそんな中の複雑さには関係なく、そのモノが提供してくれる機能なりサービスなりを期待するわけだから、それを放置は出来ない。まして、それが基本的な機能だとすると、これはとにかく潰すしか無い。本来なら開発したエンジニアが自らそれを出来れば良いのだが、得てして嵌ってる時には、視野が狭なくるし、精神学的な否認により追求ができなくなる。

  たまたま、いま使ってるAndroid携帯は、国内大手の製品なのだが、ロックが掛かってる時に着信すると電話がとれないという致命的なエラーがある。これは、同じモデルの前の機種でも発生していた。

  電話なのに、着信した時に出れないという致命的な機能障害で、その発生頻度が低くない。消費者は、こういうのをやれAndroidは云々....とか言われても、とても納得出来ないだろう。

  結局のところ、こういうのを治すには、開発者以外の第三者がコード分析をすることになるのだろうが、それはそれで開発者にとっては屈辱的だろう。ということで、日本の良き文化では、きっとこういうのが放置されるのかもしれない。

  まぁ、とにもかくにも、組み込みとはいえハードウェアの世界では、すべての事象は偶然ではなく、プログラミングのなせる結果なのだが、それはプログラマの意図とは必ずしも一致しない。


この日記は、FaceBookにフィードしているので、ツッコミはそちらだけで受け付けることにしました。
過去の日記
2016年
3月
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31