« 見えているのに見えない話 | トップページ | 専門演習「作曲演習」の紹介(第2弾) »

1−1=?

|

これまで「面白メディア学入門」の筆者のブログ「データから社会経済の動きを探る技術」シリーズでは、AADL(代数的会計記述言語:Algebraic Accounting Description Language)に実装されている演算を、足し算、掛け算、割り算の順に紹介してきた。今回このAADL演算シリーズの最後のオペレーションとして引き算を紹介する。

なぜ、最後が引き算なのか?怪訝に思われる読者もおられるであろう。実は、AADLの引き算は会計のオペレーションをもとに設計されており、通常の数学的な引き算とは一見だいぶ趣を異にしている。しかし、実装表現上は異質でも、その考え方には共通の普遍性がある。次の例を考えてみよう。

5−3=

答えは言うまでもなく2であるが、上の引き算は

−3+5

と答えが等しい。数直線上の原点0を挟んで、−3は左側に3、+5は右側に5で、この計算は、両者を「相殺」して、+2と計算される。つまりプラス方向に5、マイナス方向に3で、プラス方向の絶対値の方が大きいので、差し引きプラス側に5となる訳である。AADLの引き算はこの「相殺」というオペレーションで実装されており、これが会計の考え方である。

Aさんはリンゴを5個買い、そのうち3個を食べました。残りのリンゴは何個ですか。

いま、Aさんからすれば、購入したリンゴは「増え」、食べたリンゴは手元から「減って」いく。このリンゴの「増・減」を「相殺」した結果が、上の問の答えになる。上の数学表記の引き算で考えれば、購入して増えたリンゴは、数直線上のプラス方向の5で、食べて減少したリンゴは、数直線上のマイナス方向の3で表され、差し引きプラスの2、すなわち2個残った、というわけである。

では、このプロセスを交換代数表記してみよう。時間基底は特定せず、この場合のAADLの表記は、#である。

5<リンゴ, , #, A> + 3^<リンゴ, , #, A >

リンゴが(食べた結果)3個減少した、という事実を交換代数で表した結果が、上記の第2項である。この第2項の交換代数の数量と基底の間に「^」という記号が表記されているところに注目されたい。これは「ハット基底」で、交換代数元の減少を表すオペレーションである。

AADLで引き算をプログラミングする際に注意すべき点がある。上記の交換代数

5<リンゴ, , #, A> + 3^<リンゴ, , #, A >・・・(1)

をプログラミングしただけでは、残り2個を計算してくれないのである。では、どうすれば良いかというと、上の交換代数をxとおくと、

~ x2<リンゴ, , #, A>・・・(2)

というオペレーションが必要になる。この「~」を「バー」オペレーションといい、同一基底を持つ交換代数の間で「相殺」を行うオペレーションである。

なぜ、同じ交換代数で(1)(2)の区別を行うのか?実は、(1)の交換代数は、問のうち、「Aさんはリンゴを5個買い、そのうち3個を食べました」というAさんの行動履歴を表しており、(2)の交換代数は、問のうち、「残ったリンゴという結果」を表している。

このような区別が必要になる理由を明らかにするためには、少し「会計」の考え方を学ぶ必要がある。次回は、会計とAADLの実装法との間の考え方を紹介しよう。

(メディア学部 榊俊吾)

« 見えているのに見えない話 | トップページ | 専門演習「作曲演習」の紹介(第2弾) »