昨日の話を補足しておく。

 小学校で筆算というものを習う。筆算では、計算の途中を一時的に紙の上に書いておき、別の部分を計算してから、後でその紙に書いておいた数字と合計している。こう言うと、あたりまえじゃないかと思われるかもしれない。この明確化が、コンピュータプログラミングでは大切である。

 コンピュータは、スタックやレジスタという仕組みを持っており、筆算と全く同じように計算の途中の数字を一時的に記録しておく所をいくつか持っている。
 筆算を、正確に言語化できる人なら、コンピュータプログラムを書くことができる。

 ただし、コンピュータのスタックやレジスタの個数は限られているために記録できる数字には限りがある。最近のコンピュータでは少なくなったが、40年前のコンピュータはすぐに「スタック・オーバーフロー」という故障を起こした。プログラムをする人間が、筆算の際にどのくらいの紙の大きさ(メモリーの容量)があれば途中の計算を全て書くことができるか?という確認を怠ったために生じた故障である。

 コンピュータのメモリは一次元構造をしているが、筆算で使う計算用紙は二次元であり、筆算とは二次元構造をしたスタックを用いた計算機であると言う事が出来る。

 桁数の多い数字の計算を筆算で行っていると、同じような計算を何度も繰り返すことになる。同じことを何度も繰り返す上に、その個々の計算は一桁掛ける一桁の計算であり単純であるから、これは機械にやらせようかという発想が生じる。これが、コンピュータの発明である。パスカルやライプニッツやバベジなどが考案した。

 筆算を非常に深く理解しておくと、コンピュータプログラムを容易に作ることのできる技術が身に付くと思う。