フィンローダのあっぱれご意見番

第17回:同じか違うか

初出: C MAGAZINE 1993年9月号
Updated: 1996-02-24

[1つ前] [1つ後] [一覧] [ホームページ]


ネットの世界は現実の社会ではないという人がいる。 ここでいう現実の社会というのは既存の社会の仕組みを指している。 新しい世界として既存の社会の枠にこだわらなくてもよい点を強調する意味で、既存現実社会との差を指摘しているのである。 仮想現実という言葉があるが、ネットという社会をそのような存在として捉えるのであろう。 両極端な主張を紹介すると「ネットは新世界で、既存の社会の枠にとらわれずともよいのだ」というものと「ネットといえども参加しているのは同じ人間だから、今まで暮してきた社会と何も変わりはなく、ルールやマナーは踏襲すべきだ」というものに分かれる。 どっちの言い分も一理はあるが、完全ではない。 私自身は「ネットが日常社会であってネットの外の生活は虚構だ」と主張している。 これは「フィンローダ」という実体がネットの上にのみ存在するからに他ならないからであるが、どちらかといえば、この発想の方がさらに破綻している。

同じ人間が参加するといっても、同時参加者の数という点では今までの社会にないメディアなので、いろいろ外の社会とは異なった習慣が出来る。 また、参加者が同じであっても、その場でのしきたりというものがある。 ネットという社会はまだ未成熟であるが、それなりの風習というものはあるようだ。

悪文の典型に「思います文」というのがある。 「〜と思います」という表現を多用するのは一般的によくないとされているのだ。 ところが、ネットでは比較的この表現がよく使われている。 私も「思います文」が悪文であるということを承知の上で、しばしば使っている。 また、電子会議に慣れていない人に対しては、あえて「思います」と書くとよいとアドバイスしている。 ネットという社会では、読者と発言者の立場が限り無く対等に近いものである。 読者は永遠に読者でいてもいいのだが、発言したければ、いつでも発言者になることができる。 他のメディアだとこう簡単ではない。本や新聞に書かれた内容に対して「いや違う」と思っても、すぐに反論するわけにはいかないし、反論の文章を送れば必ず掲載してくれるとも限らない。 実際、書籍というのはそのような一方的な側面を持っている。 これが読者と著者との距離を保つ働きをする。 距離が離れていると、著者は言いたいことを、とにかく書ける。 何々は何々だ、と書いてあったとしても、それはあくまで著者が勝手に考えたことに過ぎないという前提が、暗黙の了解になっているからだ。

ところが、ネットの発言は、そう解釈されないことがよくある。 「何は何だ」と書いたら、それは一般論として主張された、と読む人が多いようなのだ。 例えば「CはPASCALより開発に向いている」と書いたとする。 私に言わせれば、およそあらゆる主張は個人の主観である。 客観的な意見でさえ、その人が勝手に客観的だと主観的判断したものに過ぎない。 だから、こんなことが書いてあっても、その人はそう考えているのか、ふむふむ、で終わりである。 ところが、これを一般論として解釈して、さらにトラブルに発展させる人がいるのである。 「Cの方が開発に向いているというのは、あなたの思い込みだ。他人に考えを押し付けるな」というのだ。 誰も考えを押し付けてはいないが、勝手に押し付けられたと思い込んでいるのだ。

なぜこうなるのかというと、ネットにおける発言者の対等性がかなり影響しているのではないかと思うのだ。 断言するというのは、かなり強烈な表現である。 他者への歩み寄りを拒否する姿勢を感じさせるのである。 これは距離を置いたメディアでは何でもないが、人と人との距離が近いネットという場では、コミュニケーションの妨げとなるのではないか。

「無限ループにしたい時はforでなくwhileを使うのがよい」と書くと、それは一般論として他の人に主張を押し付けていると解釈されることがあるのだ。 いや、そんなことはない、主張はあくまで主張だろう、本人がそう考えているだけだろ う、と解釈する人も確かにいる。 しかし、そうでない人もいるのである。 「思います文」はこのトラブルを便利にかわす。 「whileを使うのがよいと思います」と書くと、「ふむ、そう思うのか」とまず解釈せざるを得ない。 これでも押し付けだという人がいるかもしれない。 さらに、「あくまで個人的な意見ですが」と前もって宣言するなどの方法はいくらでもある。 しかし、これ以上の手間をかけるよりは、そのような人を無視した方がよいだろう。 ネットには大勢いるのである。

どんなに多くの人がいても、全く考え方の一致する人は一人もいないと考えておくのがよい。 何か自分が書いたことは、必ず誤解されると考えておくものである。 多くの人に理解して欲しい人は、できるだけ誤解の度合が少なくなるように努力すればよいのだ。 誤解されても構わない、という人もいる。

    *
話が飛ぶが、fj.lang.c(※1)というニュースグループで、確かdo-while等の話題が出ていたときだったと思うが、List 1のように書いたら無限ループになってしまった、と書いた人がいた。
/* List 1 */

    while (i < 10) {
        ...
    } while (i < 10);

これに対して「最初のwhileループを抜け出た時点でi<10という条件が成立しないはずだから、次のwhileは実行されず、無限ループにならないのではないか」という質問が出た。これはもっともな発想だと思う。

もちろん、最初のwhileループから出てこないのじゃないか、とか、breakしたのでは、というフォローがすぐに入ったのだが、「whileのループが終了した」という状況からは、まず条件式が0になったと判断するのが発想としては自然である。 whileループから脱出するのはループの継続条件が破れた時であるという先入観に引き ずられたのだとしたら、結構面白い事例ではないかと思う。

    *
for文のループを実行する条件式の部分で比較が行われることがよくある。 例えば、for文でループを10回実行したい場合に、どう書くか。 まさかfor(i = 334; i < 344; i++)と書く人はいないが、わざと何種類か考えれてみれば、少なくとも数通りは書けると思う。 以前、10から始めて0との比較を終了条件とする技 (1. fj.lang.c
1998年現在、fj.comp.lang.cという名称に変更されている。

2.
単に10回繰り返せばよいのなら、

for (i = 10; i > 0; i--)
とした方が、「0との比較」を行うことができるので、処理が速くなるかもしれない。 0でない定数の比較よりは0との比較の方が処理速度が速いCPUが存在する。
(C) 1993, 1996, 1998 Phinloda, All rights reserved
無断でこのページへのリンクを貼ることを承諾します。問い合わせは不要です。
内容は予告なく変更することがあります。