A = A + 1

A = A + 1

小学生の頃にBASICのマンガ入門を兄と読み、父に連れられて電気店で、発売されはじめた8bitパソコンのBASICのコンソールで意味もわからずプログラムを入力していた。キーを探すのも一苦労だったな。兄はすらすら代入文を理解していたが、僕はわけもわからず父や兄についていって真似ばかりしていた。

S(n+1) = S(n) + 3

高校生になって数列を覚えて、漸化式を理解した。ある状態Sのn+1世代目の値は、n世代目の値に3を足したものである。初期値がS(0) = 0と定まれば、この数列は0,3,6,9,12,...と変化していく。これを覚えるまでプログラミングには苦手感があり手を出せなかったのだがなんとか克服できた。

s(n+1) = F(s(n), input)

社会人になってはじめて設計させてもらった規模の大きなプログラムはトランザクション処理のシステムだが、お客さんの会社で数人で合宿状態で開発しているときに、漸化式に気がつき、なんとか仕上げることができた。状態SはRDBMSに覚えさせておく、電文としてinputがやってくるが、電文の種類によって、Sの次の状態が決まる。そんな関数Fを考えているのだと思えばフクザツな取り決め、約束事も守りつつ、一方で頭の中はシンプルにしておくことができる。もちろん当時は関数なんて思考はしておらず、とにかく漸化式を真似して設計すればうまくいくという確信だけが頼りだった。

R(n+1) = P(SC(R(n)),X) ?

現実世界(realworld)上でのロボットの状態Rは、今の状態をセンサーで観測し、コントローラで制御するという関数SC(sensing and controlの頭文字からとる)だけでは決まらず、物理的に壁にあたったとか、故障したとか、摩擦とか、物理的な制約(これをPとする)の下で動作し、かつ、未知の現象X(工場ならば好奇心旺盛な少年見学者が飛び出したり)の影響も受ける。ロボット3原則はSCをカンペキにすれば実現できる・・・とつい考えてしまうが、現実は甘くない。機能安全と機械安全を勉強せねばなるまい

追記1)
2点思い出したことを追記する。最初のプログラムは1から10の合計を足すプログラムだった。また、トランザクションシステムの設計は、お客さんの会社にビジネス上の電文の仕組みにとても詳しい女性と、また、システムの障害時の復旧や安全面に関して割り切りの良い男性(二人とも賢い人だった)がいたおかげでなんとか動き出した。