Skip to main content

0 とプラスの関係


8 歳の T 君が 7 について学んでいる.7 はどんな加算によって作られるかというものである.ここで利用している教材の一つは図 1 にあるような Zahlenhaus というものである.2つの部屋があり,それぞれに何人かがいる.全体で何人が一つの家にいますか? ということで加算というものを考えるものである.

Figure 1. Zahlenhaus: 7 = 4 + 3
Figure 2. Zahlenhaus: Questions
そこには,

  •  7 = 3 + ?
  •  7 = 4 + ?

のような問題(図2)があり,? を埋めるのである.T 君は上記の質問にはまったく問題なく答える.

しかし,次の質問がわからないという.

  • 7 = 0 + ?

ところで,学ぶ時,何がわからないのかをわかっているというのはとてもやりやすい.私自身,数学の本を読んでいてどこでわからなくなったのかをみつけるのに苦労することがある.そしてわからない部分がわかれば道が見えることが多い.どこがわからないかわからないと,どこまで本を戻ればいいのか見当がつかないからである.

さて,Zahlenhaus に戻ろう.左の部屋には誰もいない.右の部屋には何人いる?と尋ねると,2 + 5 人とか3 + 4 人という.私はこれには困った.つまり,T 君は

  • 7 = 0 + 2 + 5

と答えたのである,これは数学的にはまったく正しい.一つの部屋をまとめて数えなくてはいけない理由は特にないし,そういう仮定を明確に言ったわけではない.だいたい最初に 7 はいくつといくつ? というように聞いているのは練習の意味が強い.7 は 7 である.と答えて間違いはない.これはゲームだと思ってもらった方がいいかもしれない.

しかし,それぞれの部屋に一つだけ数字を割り当てるという暗黙のルールによって 7 = 0 + 2 + 5 は間違いとされる.Zahlenhaus には部屋が 3つないからである.もし,Zahlenhaus に部屋が 3つあれば,これは正しくなる.しかし,ある計算が部屋の数で間違いだったり正しかったりするのは逆に混乱するのではないだろうか?

私はよくチャールズ・ドジソン(ペンネーム: ルイス・キャロル)の本「鏡の国のアリス」を思い出す.

王とアリスが出あった時の会話である.(残念ながら日本語は no- の形を翻訳するのが難しいので英文をつけておく.)
「...その道を見よ,そしてわしに告げるがよい.もしそなたがどちらか片方でも見ることができたのであれば.」
「道には誰もいないのが見えるわ.(I see nobody on the road.)」アリスは答えました.
「そなたのような目が持てたならな.」王はいらだったような声で言いました.「『誰もいない』のが見えるとな!(To be able to see Nobody!)」 [Quote 1]
Zaehlenhause の片方の部屋には誰もいない.誰もいないということを記すにはどうするのか,人類は長い年月が必要だった.誰もいないということを 0 人がいると記すのは簡単なことなのだろうか.たとえば,0 人がいないということは,0人ではないということであるから誰かいることにはならないか.0 人はいる.ないということ(0人)がその部屋にある.もし,これが彼の問題であったらこれはなかなか難しい.しかし,話をしていくうちに 0 がそこにあるというのは問題ないらしいことがわかった.誰もいないということを記す方法として 0 を書くということがわかったのかどうかはわからないが,誰もいない部屋を機械的に 0 と呼ぶというのはよいらしい.

では一つの部屋の人数を一つの数字で示すということが難しいのだろうか.「普通」一つの数にまとめられるだけまとめるのは,後に比較をするのが簡単だからである.1 + 1 + 1 + 1 + 1 + 1 + 1 と 1 + 1 + 1 + 1 + 1 + 1 とを比較する時,7 と 6 を比較するのでは 7 と 6 を比較する方が人間には簡単である.だから0+ x を x と書くのが「普通」である.「普通」なのはある機能として簡単になるからである.「普通」というものと「正しい」というのは時に異なり,「正しい」かどうかの方が数学では重要である.

私は思った.またアリスだ.私はアリスほど数学的な本はないと友人に説明しようとしたことがある.
アリスが白の女王に尋ねられる.「足し算はできるかえ?一たす一たす一たす一たす一たす一たす一たす一たす一たす一たすは何だい?」
「わからないわ,何回一と言ったのか聞き逃したの」とアリスは答えました.
「この子は足し算ができないね.」赤の女王が割り込んで言いました.「引き算はどうだい.8から9を引いたらいくつかえ?」
「8から9は引けないわ.あたりまえでしょう」アリスはすばやく答えました.「でも...」
「この子は引き算もできないね.」白の女王が言いました.「割り算はどうかね.パンをナイフで割ったらどうなるかね?」 [Quote 2]
どんどん分解していくと,白の女王の問題になってしまう.しかし,ある意味白の女王は正しい.どんな自然数も1の足し算でできているのだ.それをなんとか説明できないものだろうかと思った.

私は T 君に,2 ユーロのアイスを買いたい時,1 ユーロ持っていたらいくら母親にねだるんかを尋ねた.すると,1 ユーロと答えた.では,1 ユーロも持っていなかったら? つまり 0 ユーロ持っている時は,彼は 2 ユーロと答えた.それでは 7 ユーロ欲しい時,なにも持っていない,つまり 0 ユーロ持っている時は?と尋ねるとやはりわからないという.では 1 ユーロ持っている時は,6 ユーロと答えた.つまり以下が T 君の理解である.

  • 2 = 1 + 1
  • 2 = 0 + 2
  • 7 = 1 + 6
  • 7 = 0 + ? わからない.

私は困ってしまった.T 君はどういうモデルでこのような答えを出すのだろうか?結局,

  • 1 ユーロ欲しい時,1 ユーロ欲しいと言う.わかった.
  • 2 ユーロ欲しい時,2 ユーロ欲しいと言う.わかった.
  • 3 ユーロ欲しい時,3 ユーロ欲しいと言う.わかった.
  • では,7 ユーロ欲しい時は? 7 ユーロ欲しいと言う.ついにわかった.

T 君はこの後いくつかの 0 + x の質問に正しく答えたのであるが,今回私は彼が何をわかっていなかったのかわからなかった.だからこれで良いのかちょっと心配である.ところで,もしいつか数学を仕事に使う時があなたに来たら,その時あなたは数字を使うことはないだろう.現在,数字はコンピュータのものである.

Quote 1

Quote 1 は Lewis Carroll による Through the Looking Glass and What Alice Found There. Chapter 7, The Lion and the Unicorn. から.また,テキストは The Annotated Alice, the definitive edition, edited by Martin Gardner, Penguin books, page 234, ISBN-13: 978-0140289299 による.翻訳は私のものであり,間違いがあればそれは私による.

Quote 2

Quote 2 は Lewis Carroll による Through the Looking Glass and What Alice Found There. Chapter 9, Queen Alice, Through the Looking Glass and What Alice Found There. から.また,テキストは The Annotated Alice the definitive edition, pp. 265-266, Penguin books, ISBN-13: 978-0140289299. による.翻訳は私のものであり,間違いがあればそれは私による.

Comments

Popular posts from this blog

共有メモリによるプロセス間通信

Unix の共有メモリを使ったプロセス間通信について調べて実験をしてみた.対象は1つのホスト上での複数のプロセスである.ネット上でいくつか例題はないかと探したが,どうも良い例となるコードが見当たらなかった.結局はある解説記事と,Stack Overflow の議論と,man page を見て作ってみたものになったので,例をここに置くのも有用かと考え,この記事を書く.(もしかしたら探し方が悪くて良いコード例をみつけられなかっただけかもしれない.) mmap を使うかどうかという話がいくつもでていたが,POSIX の方向としては,shmem_open と mmap を使うという方向があるということだったので,それを信じてその形での実装を試してみた. 基本的なコードの流れは次のようになる. 共有メモリ領域を1つのプロセスが shm_open() を使って作成する.その際に,プロセス間で共通の文字列を識別子(``identifier'')とする.(Linux ではこれが /dev/shm/identifier のように見える.) 共有メモリ領域を mmap() でメモリにマップする.共有メモリポインター (shared_ptr)が得られる. shared_ptr を使って複数のプロセスで通信をする. 利用終了後は munmap() をつかってマップを消す. 共有メモリオブジェクトを shm_unlink() によって消す. 以下に示すプログラムは,server と client の2つのプロセスが共有メモリを使って通信をするものである.ここで,server プロセス数と client プロセス数は共に 1 を仮定する.server と client は自分の領域にしか値を書き込まないことで,ロックを避けている.互いに相手の値を読み,それよりも1大きい数を一定の期間ごとに自分の領域に書くという例題である.シンプルではあるが,共有メモリで通信をする基本としては十分なものだと思う.ソースコード(shmem_test.cpp)を以下に付加する.ソースコードのコメントにコンパイル方法とどのように利用するかを書いておく. /*   Shared memory inter process communication minimal exa

複数の線を持つ線グラフを Jenkins の plot plugin で描く方法

私は毎夜のソフトウェアテストを自動化するために Jenkins というツールを使っています.今回は, valgrind  を使ってメモリーリークのテストを自動化することにし ました.その際,エラーの数の結果をグラフとして表そうと思って, Plot plugin  を使うことにしました. Plot plugin の例図からは,複数のデータラインを描くことができるのは明らかなのですが,どうやったらいいのかは参照のページや,例としてあった Perl script,plugin 中の help からは私にはよくわからなかったのです. ここで重要な考えは,それぞれのデータラインにはそれぞれの出力ファイルが必要ということでした.私はこれを誤解していました. 例として,ビルドの時に次の property データファイルを出力します.それぞれのファイルが1つのデータラインを表します. valgrind_trunk_result.definitely.property valgrind_trunk_result.indirectly.property valgrind_trunk_result.possibly.property それぞれのデータの中身は1行のデータ点です.たとえば, valgrind_trunk_result.definitely.property ファイルの中身は次のような1行 です. YVALUE=0 このファイルを ${WORKSPACE} ディレクトリ以下に出力します.ここで," WORKSPACE " は jenkins が提供する環境変数です. 図1が私の plot plugin の設定を示しています.これは jenkins の config 画面です.3つの data series があって,それぞれにデータファイルがあります. Figure 1: Plot plugin configuration in Jenkins 図2が結果です.複数の線が描かれているのがわかります.(実際には 3 本の線がありますが,最初の線と2番目の線が同じデータなので,重ねって見えません.) Fugure 2: Plot data with multiple data lines

ソニーのカメラ (α 5000) の 30 分のビデオ録画時間の制限を外す方法

私は Sony の Alpha 5000 を気にいって使っています。しかし一つだけ問題がありました。それはビデオの録画時間の制限が 30 分というものです。 今日,ちょっと気になって探したらこの制限を解除できることがわかりました。以下のビデオがその紹介です。 https://youtu.be/7cstA_PuRIg このビデオの作者によれば,ほとんどのソニーのカメラのビデオの制限はなくせるそうです。ただし私が試したのは,Alpha 5000 のみです。 手順 カメラ側 スイッチ On Menu -- Setup --- USB connection を MTP にする スイッチ Off and On USB ケーブルでカメラをコンピュータに接続する (以下接続したままにする) コンピュータ側でソフトのダウンロードとインストール (私は Windows 10 で試しました) 次の URL に行く https://sony-pmca.appspot.com/apps ただし,Internet Explorer か Safari のみサポートということでした。Chrome では上手くいきませんでした。私が試したのは Windows 10,Internet Explore 11 です。 注意事項: このサイトは Sony のサイトですが,ここにあるソフトウェアは Sony のものとは限らないので保証はありません。御自分でリスクを判断してご利用下さい。当方も何も責任を負えません。 上記の URL から,OpenMemories のページに移動する。 このページにある PMCADownloader plugin (PMCADownloader.msi) をダウンロードする PMCADownloader をインストールする 私はいちどここでページを閉じてもう一度 https://sony-pmca.appspot.com/apps を開き,OpenMemories のページに移動しました ここで log に Loading plugin Plugin loaded と表示されます。PMCADownloader の Install がされていない時には,``Plugin loaded'&#