ロード トップ 参照元 逆検索 検索 ヘルプ

[logo] プログラムのような論理


SuzTiki:不定期にっき

この話題についてちょっと書いてみようと思う。ただ、整理されていないし、 言いたいことをちゃんと伝えることができないかもしれない。

プログラムは、論理のみより成り立っている。だから、それは極めて論理的である。 ... というのは異論がないことだと思う。

では、プログラムはわかりやすいかというとそうでもない。 その理由として、

などと思っている人はいないだろうか? でも アセンブラなどと違って 高級とされるコンピュータ言語は、人が理解するために作られている。 そして、プログラムは、普通 可能な限り分かりやすいように記述されるものである。

にもかかわらず、わかりにくいのは.... (一般に)プログラムが複雑な論理で 構成されるものであり、人は複雑な論理を扱うのに慣れていないという ことも大きな要因ではないだろうか?

ここの主題は、プログラム的な複雑な論理を人に伝えるのはどうしたら良い のだろう? ... ということなんだが... 果してどうなることやら。 整理できるのか、そしてそれを人に伝えられるのか? そもそも、この主題自体プログラム的な複雑な論理なのかも知れない。


プログラム的な複雑な論理

ここでなにを説明したら良いのだろう。

ソフトウェアを設計する場合や、実際にコードを作る仕事をしていれば、 プログラム的な複雑な論理 を説明しなければならない機会は、 わりと頻繁にある。ソフトウェアの設計が妥当であるとか、 解決しようとする(or 解決した)問題やバグが どういうもので、 どれぐらい困難な(or だった)ものか... もしはっきり論理的に分かった としても、説明が困難である。なぜならプログラムと同等の複雑さをもっているから。 しかもプログラムとして説明することも許されないケースがほとんどだし。

なにをいまさらと思われるかも知れない。でも、そのレベルについて かんがえてみると、 プログラムの複雑さがビンキリであるように、 プログラム的な複雑な論理もビンキリである。

うーん。結局なにも言っていないような気がするが、一部の人にはどういうことを 説明したいか理解してもらえたと思う。

理解していない人にいったいどれぐらい理解していないのかを 感覚的にでも理解してもらわないとたぶん議論がすすまない。

しかもここでしたいのはメタな議論だから、かなり困難のような気がする。

なんとなくだが、簡単なレベルから複雑さをあげっていって、いくつかの レベルを提示する。で、頂点がどれぐらいか(そもそも、そんなことはよくわから ないんだが) を提示できたら、とりあえずは成功なんだろう。 ただ、ほんとうにやろうとすれば、相当な手間がかかる。しかもチェックする人 なぞあんまりいないだろうから、独善的なものになりそうだ。

ここでおわってしまいそうだけど、続けるかもしれない。

おわってしまったときのために、ちょっとコメント。 理解可能なレベル というのと別に、そのレベルのものを作ることができると かどうかというポイントがあると思う。また、苦労して作るのか 作り捨てられるぐらい容易に作れるのかというのもポイントだろう。

レベルを提示するというのに拘ってみたのは、所詮は程度の問題だからである。 複雑な論理といっても、平易な要素を組み合わせたもの。 どの程度複雑にからみあってきたときの話をしたいかということが、 イメージできなければ、誤解されるかもしれない。

で、レベルを提示するのは難しいので、この先は誤解を恐れず書くことになる。


なんかうまく整理できていない。とりあえず、話題に出したいことの1つを 書いてみる。

ここまでが、まぁ前振りで... ここで出てきたような認識をベースにある論理を 構築したい.... というのがこのページの 目的で、どうなるかはわからない。

2つのみを例にあげたけども、自分にとっては同種というか同値の問題に見える。 たぶんもっと 別の論理展開もあり得るのだが... どれも本質をついたものでは ないかも知れない。


ちょっと続けてみる。

こういった複雑な論理からなっている事柄を 論理として理解してもらうのは不可能という気がしている。

おたがいに手間がかかるし、伝えることができても、相手がそれを伝えるのに 同じ困難がある。要するに あまり得ることがないのである。

あえて、論理として説明する手間を厭わないというケースとして、 お互いに重大だったからという理由が考えられる。 でも、重大なゆえに どちらかが 重大なダメージを受けるかもしれない。

というわけで、手間もあるけども、難しいことなのかも知れない。

こういうプロセスをあきらめて、説明するようなことを考えると、 やっぱりどこかに 嘘が入る。(嘘というのが語感が悪ければ 正確でなくなる と言い替えてもいいんだが、なにも言っていないような気がするので 一応 嘘としておく)

とりあえず、論理を感覚的に説明する正当性があり得る という風に 受け取ってもらいたい。とにかく、論理と感性ってのは結び付き得るのである (と私は思っている)

いいたいことは次のようなこと...だと思う。

で、こういったことについて、経験が十分にない人は、かなりの率で誤解している ように思える。その誤解を正そうなんて実はあんまり思っていないのだが、 まったく理解されないのも寂しい。また、ここで書いているのはあくまで 程度問題である。簡単な事例を出せばだれでも理解できるはずだと思うが、 どこまで複雑なものに対して同じことだと理解でき得るかというのが、 たぶん本質。


唐突だが、

相手を説得するには、信用されることが必要である。

と書いてみる。

ある種の人には、 わりと当たり前のことなのかも知れないのだが、自分にとってそれほど明らか なことではなかったような気がする。

ちょっと、根拠と思われることをいくつか列挙してみる。

ここはなんか、書いてて おもしろくないような気がするからパスするかも。 このコンテキストは、本質とはだいぶ外れてしまうようだ。

むしろ、

という方向がいいかもしれない。

完全に説明し切れていないというのを前堤に置くなら、相手に分かってもらうには、 1つの表現では不十分である。いくつかの表現をすれば、それだけ限定することが できる。それは相手がこちらの真意を理解しようと摸索する際の助けになる。
ただし、相手を混乱させる可能性もある。別の表現を1つのことと認識されないと 誤解をまねく原因になる。別の表現を1つのことと認識されないのであれば、 なにかが根本的に違っている。説明されていない前堤のうちのなにかを説明せずに、 相手に理解させるのは無理かもしれない。


上で書いた話が次のような論理展開できる ということを想像しているだろうか?

このことが正しいかどうかにかかわらず、 こういったことを常に意識して行動することは有意義だと考えている。

なんとなく、麻雀と似た落ちになってしまったが、 これが、プログラムの世界、特にチューニングの分野に魅力を感じている 理由だったりする。


(最終更新 Thu Mar 30 19:16:56 2006)