見出し画像

算数とアルゴリズム

算数と数学の違いって?

多分文科省で算数と数学の区別があるのだろうが、私は明確な定義を知らないし、知ろうとも思ったことはない。これまで書いてきた数学の記事のシリーズがやっと段落ついたのだが、数学が役に立つとか役に立たないとかは自分次第みたいなことを記事に書いたから、では小学校で習う算数はどうなんだと、自問してしまったので、今回『算数』について書くのがよかろうという企みなのだ。
私の見立てでは算数なるものは中学以降で習う数学と比べ、具体的なものである。明治期に教育のさまざまを欧米列強から輸入したので、完璧に海外式になったかというと、どこかに塵劫記以来、日本にあった和算の名残もある。
ところで、和算とはなにか?それを知りたければ、塵劫記を見るといい。塵劫記は問題と解法が順序に並んでいるスタイルで、問題数が結構豊富な本である。現代の日本人にとってはかなり引っかかるだ思うが、解法になぜそうなるかというくだりが全くないのも特徴だ。
なんでそうなるか理屈が大事だとか、理屈を知っていれば応用が効くとかよくいわれるのに、その説明が塵劫記にはないのが、かなり気になると思う。
そこが今回私が書きたいことである。

算数とアルゴリズム

前節で見たように算数の前身である和算の教科書塵劫記には今習った問題がなぜ今しがた習った方法で解けるかを書いてない。
江戸時代の人はそのなぜより、解法と実践の方が比重が高く、体系立てる気はなかったということなのだろうか?それもあるだろうが、体系立てて毎回応用の仕方を考える方のはデメリットと考えたのだろう。
実践だけが真理ということかもしれない。昭和?の作家中里介山の本に日本武術神妙記というものがあるが、この本になぜ武士は盾を持たなかったか、常時鎧甲冑を着ていなかったかのかの一端に触れることが書いてあったが、桜の花が散ったら終わりのように武士も切られたら終わりという考えがあったようだ。武士は切られたら、終わり。和算は実践が真理。何か通ずるものがある。
それはさておき、わたしはもう長いことプログラマとして働いてきたが、正直辟易していることがある。プログラミングはもとは計算機科学や情報科学という数学の子供であるところの応用数学の一分野から生まれたものである。
計算機科学ではアルゴリズムの研究という分野がある。これは結構プログラミングに直結していて、パスワードの暗号化のアルゴリズムとか並べ替えのアルゴリズムとそういう実際にプログラミングで使うものもこういった研究から生まれた。
一般のプログラマにとって、アルゴリズムの応用は正直あまりない気がする。このアルゴリズムはこの問題の解決法、そのアルゴリズムはその問題の解決法みたいに、応用より個別に作ることが多い。賢い人はひとつのアルゴリズムを応用して、複数のタイプの問題にも対応できるかもしれないが…
このアルゴリズムの話、上述した和算の本、塵劫記の形式と似ているのではないか?察しのいい方はお気づきだろうが、和算とは日常に潜む数の問題に対するアルゴリズムの集大成であるのだ。
そして算数とはその遺伝子を確実に受け継いでいる。
算数がわからない子どもの中に、なぜそうなるかがわからないという理由で、算数がわからないと言う子がいるらしい。なぜで詰まるのはきついが、世の中なぜそうなのかわからないことの方が多いので、飲み込んでいけるようになって欲しい。
またなぜそうなるかわからなくても、対処はできることが多いのが世の常で、日々の仕事もそうやってこなしている方が多いのでは?
仕事に対してなんでこの工程でやる必要があるかに疑問とその回答をいちいちつけている人が何人いるのか?わたしはちょっとおかしい人らしいので、それをやってしまう。そして上司、同僚に嫌われるそして辞める、の繰り返しだ…
わたしの話は置いておいて、皆さんの仕事では本当は現状より体系化して効率化できることが多い。鶴亀算とか和差算とか色々覚えるより、中学で習う連立方程式を使う方が覚える時間や思い出す時間を考えると効率的っぽいのと同じように。
色々残してではあるが、次の節に向かおう。

アルゴリズムの体系化?

アルゴリズムは前節で応用が難しいと書いたが、本当にそうだろうか?世の中のいろんな手順を集めていくと、まとめることはできないか?
まとめて、仕事のDX化や自動化を進めていかないだろうか?
業務系プログラマやWebプログラマの課題はこの辺だと思っている。私も末席に連なるので、この辺をどうにか作る人間になりたいものだ。

この記事が気に入ったらサポートをしてみませんか?