ずいぶん前の話になりますが、ある業務プロクラムの作成に関与していたとき、数字を千円単位で四捨五入する必要が出てきました。そのとき、プログラマーの人が書いたコードは、私たちが通常行っている四捨五入のルーティンとは全く違っていました。
私たちが千円単位で四捨五入するとき、まず百の位の数字を見て、その数字によって切り捨てにするか切り上げにするかを判断します。これがいわゆる条件分岐というヤツです。エクセルでいうところの「If節」ですね。ところが、コンピューターでこれをやろうとすると、時間はかかるし、リソースも喰う上に、おまけにコードも長くて見にくくなってしまうなど、何一つ良いことがありません。
実は、コンピューターでの四捨五入は、足し算と切り捨ての組み合わせで行います。上の例でいえば500円を足して千円以下を切り捨てるのです。こうすれば、私たちのやり方とは違いますが、四捨五入したのと同じ効果を得ることができます。しかも、相手はコンピューターですから、足し算なんかは得意分野で、切り捨てに至ってはまさに機械的作業、コードも見やすく簡単で一石三鳥です。
初めてこのコードを見たときは、プログラマーでもなんでもない私にとってはまさに衝撃的でした。とにかく圧倒的な合理性とシンプルさを兼ね備えていて、そこにはもはや「美」さえ感じられました。今思えば、これがコンピューターに興味をもったキッカケだったのかもしれません。
時代は変わり、今やコンピューターと私たちの生活は相互にリンクしていて、切り離すことができなくなっています。正直、このトシになるともう腐れ縁のような気がしないでもないですが、あの頃の新鮮な気持ちを思い出して、もうちょっとだけ付き合っていこうと思います。
ちなみに、上の話を鵜呑みにしてそのままコード化すると、負の数が出てきた途端にすべての「美」が崩壊しますので注意してください。その時は条件節を噛ませることを忘れずに。
埼玉本部 吉田