理解を理解する

だれかと一緒にはたらくとき、わたしたちは必ず相手とコミュニケーションをとる。それは月に一度の進捗報告だけかもしれないし、逆に四六時中一緒にいるということかもしれないが、とにかく、まったくコミュニケーションがないことはありえない。

 

コミュニケーションをとる以上、そこにはかならず齟齬がある。おなじことばも、つかうひとが違えば微妙にことなるニュアンスをもつから、厳密な意味ではわたしたちは齟齬を避けられない。これは自然言語をつかう者の、かなしき宿命である。

 

さて、齟齬があるにもかかわらず、わたしたちはひとの話を理解したと感じることができる。それも、わたしが理解したとただ錯覚するだけではなく、相手から見ても、わたしの理解を理解と呼べるほどに。もちろん、だからといって情報は完璧につたわったわけではない。完璧につたわっていなくても、理解と呼ぶことはできるということだ。

 

ではなにを理解と呼ぶのか。これは難しい問題だが、以前わたしは、わたしにとっての基準について書いた。数学においてわたしは、証明を書けるレベルの理解を理解と呼ぶ。プログラミングにおいては、プログラムを書けるレベルの理解を。その日の結論は、これらふたつのレベルがだいたい一致している、ということだ。

 

さて、数学でもプログラミングでも、わたしより深いレベルの理解は存在しうる。たとえば証明を書くのには、証明中の定理をすべて理解している必要はない。あるいは、証明の構造を、記号論理のレベルで理解している必要はない。にもかかわらず、わたしは証明を書けることをもって、理解と呼んでいる。プログラミングなら、わたしは自分で実装していないデータ構造をつかってもよいし、メモリアクセスの制御をすべて処理系にまかせてしまってもよい。より深い理解の境地とはこれらをきちんと理解していることなのだろうが、だからといって、わたしが理解っていないと言われる筋合いはない。

 

世の中にはさまざまなひとがいる。わたしより深いレベルの理解を求めるひとは、たとえばプログラムを、演算装置の命令単位で理解したがる。こういうひとは、わたしより根源的な仕事をできるだろう。逆に、より浅い理解でよいひとは、一般向けの数学記事を読んで満足する。そういうひとは、より多くの知識を組合わせられるだろう。どちらがよいという話ではない。理解したと思えば、そのひとにとってそれは理解だということだ。

 

では、わたしの場合。わたしにとって理解とは、証明が書けることで、実装ができることだった。より厳密に言えばそれは、わたしが無条件に認められることの組合せに分解できる、ということだろう。こう言い換えればわたしは、わたしが理解するということを理解したということになる。なぜなら、理解するという概念を「無条件に認められる組合せへの分解」ということばへと分解すれば、わたしは個々のパーツを無条件で認めることができるからだ。

 

さて、禅問答の様になってきてしまった。結局わたしがこの日記で何を語りたかったのか、わたしはうまくことばにできなかったから、わたしはわたしの欲求を理解していないということになる。だが、その方がいい。なぜなら、わたしの理解の基準に達していないことは、明日以降も掘り下げる余地があるからだ。