andとor

先日話したandとorについてまとめてみよう。
まずプログラムの世界での論理積(and)について。
日本語では『かつ』。
英語ならandだから英語とプログラムは一致している。
『かつ』以外に論理積にあたる言葉はちょっと思いつかない。
次に論理和(or)について。
日本語では『または』『あるいは』『及び』『並びに』『と』。
英語の逐語訳なら、
または=or
あるいは=or
及び=and
並びに=and
と=and
『及び』『並びに』『と』はプログラムと逐語訳で対応する単語が異なる。
英語圏のプログラマーは混乱しないのだろうか?
ちなみにあの時話した事例は以下の文だ。
『地区コードにてコードマスタ索引し、××区分が05及び会社種別=1の場合に読み替えを行う。』
この場合の『及び』はorの意だがプログラマーはandと解釈した。

この話1聴した時の印象以上に難しいわ。
"A"の書いたのを表にした表を先に見て欲しい。
プログラム英語 日常英語 日本語
and and かつ
or and 及び(並びに、と)
or or 及び(並びに、と)
or or あるいは(または)
まず「並びに」と「と」は「及び」で、
「または」は「あるいは」で代表させた。
最初に気づくのは日本語では3種類の言葉があるのに、英語ではプログラム上であれ、日常であれ2種類しかない。明確に「かつ」に対応する英語が見当たらない。
ならば日本語の方が精緻で英語では分化できてないところに日本語では2つ言葉があると考えればいいかと言うと、ことはそう単純ではない。
プログラム上と日常で英語の”and”と”or”の切り分けが違う。
しかも日常英語と日本語の対照が微妙にずれている。
で、組み合わせとして4つのパターンが生じている。
但し実を言うとプログラム英語と日本語を対照すると”and”=「かつ」で”or”に対するものが「および」と「あるいは」の2種類あるが堺目はぶれていない。
だから日常英語の概念を知らなければ今回の問題は起きなかったことになる。
そうは言ってもこんな簡単な英語なら誰だって知っているからこんなことが起きたわけだ。
さらにややこしいのは日本語と日常英語の微妙なずれの中身、「及び」が”and”である場合と”or”である場合があることだ(「あるいは」の部分はどこをとってもぶれない)。
日本人的には最初に”and”を覚えるから列挙して行く場合そちらを使うが英語国民は”or”を使う場合もある。
その使い分けの根拠はよくわからない。
この部分がなければ、先ほども書いたように実はプログラム英語と日本語では言葉の種類の数は違っても境目のずれはないので、「及び」は日常英語では”and”だが、プログラムでは”or”であるというのは業界の常識として語り継がれていたと思う。マイナスと読み間違わないように音引きは使わないというように。
ところが、日常英語の場合でも”or”を使う場合があるもんだから、このあたりは英語翻訳上の知識として認識されて業界の常識化しなかったのではないか?
よく英語を知っていれば、例示に”or”を使う場合もあるから、業界の常識の力を借りなくてもプログラムの正解にたどりつくわけだ。もっともそんなもの知らなくても日本語の文脈を読み解く力があればこんなことは起きないがね。
それとこの例示に”or”を使う感覚こそ、プログラムあるいはその前に集合論に彼らが日常語において明確に日本語の「かつ」に当たる言葉を持たない”and”と”or”を採用した理由ではないかな?
我々は日本語の対照と言うものさしがあるからその境目のあいまいさに目を引かれるが、列挙を強引に”or”で片付けてしまえば”and”と”or”で事足りてしまう。それでも日常語との乖離というものは混乱のもとではあると思うが。
但しそこがもっと大きければ、ラテン語なりなんなりから引用して造語を作ってでも別な言葉を当てたのではないか?

そうなんだ。では「かつ」は英語ではどう表現するの?【H】最明確に「かつ」に対応する英語が見当たらない。
「and」ではないってこと?
また確認だけどプログラムではなく、集合論での論理積は英語で「and」と表現されるのだよね?
この点が気になる。先のメールにも書いたように英語圏のプログラマーは混乱しないのかな?【H】プログラム上と日常で英語の”and”と”or”の切り分けが違う。
ここがポイントだよね。さらなる考察を期待します。【H】しかも日常英語と日本語の対照が微妙にずれている。
日本語と日常英語の微妙なずれの中身、「及び」が”and”である場合と”or”である場合があることだ(「あるいは」の部分はどこをとってもぶれない)。
日本人的には最初に”and”を覚えるから列挙して行く場合そちらを使うが英語国民は”or”を使う場合もある。
その使い分けの根拠はよくわからない。
ところで、『「及び」が”and”である場合』なんだけど論理積になっている訳ではないよね?
ここがよく分からない。「or」はともかく先に"H"が言ったように「かつ≠and」なら論理積に「and」を採用する理由にはならないのでは?【H】よく英語を知っていれば、例示に”or”を使う場合もあるから、業界の常識の力を借りなくてもプログラムの正解にたどりつくわけだ。もっともそんなもの知らなくても日本語の文脈を読み解く力があればこんなことは起きないがね。
それとこの例示に”or”を使う感覚こそ、プログラムあるいはその前に集合論に彼らが日常語において明確に日本語の「かつ」に当たる言葉を持たない”and”と”or”を採用した理由ではないかな?
それとも英語で「and」と「or」って反対語?
それなら論理和が「or」なら論理積は「and」というのは納得できる。
論理和と論理積の差は論理の世界では決定的なものだと思う。【H】我々は日本語の対照と言うものさしがあるからその境目のあいまいさに目を引かれるが、列挙を強引に”or”で片付けてしまえば”and”と”or”で事足りてしまう。それでも日常語との乖離というものは混乱のもとではあると思うが。
そして「アメリカ人は論理を重視し、あいまいさを嫌う民族」と言う印象がある。
そしてプログラムはアメリカ発の文化。
このand/orのあいまいさとアメリカ人はどうも相容れない。
アメリカのプログラム開発の現場でもやはり混乱が起きているのだろうか?
それともあちらでは「列記はorと表現する」が仕様書記述上の慣例になってるのでろうか?(聞いたことはないけれど)

【A】そうなんだ。では「かつ」は英語ではどう表現するの?
「and」ではないってこと?
私のひいた和英では”and”は載ってなかった。”besides”とかあとは”at same time”とかの句がのっていた。
但しこの話には前提があってここで言う"and"は条件のみにかかるってこと。
例えば” blue and big boxes”の場合は「かつ」、"blue boxes and big boxes"ならば「及び」であり、ここでも英語では語順が重要ということ。
語彙が貧弱、品詞が未分化、語尾変化が中途半端、それに助詞がないから語順、構文が極めて重要になり、結果的にその窮屈さがいわゆる「論理性」を大リーグ養成ギブスのように構築しているのは以前から述べているところ。
ちなみに英和で"and"をひくともちろん「かつ」は載っている。
【A】集合論での論理積は英語で「and」と表現されるのだよね?
そのようです。しかも普通と違うというサインとして”AND”と大文字で表記されるみたい。
プログラムではどう?
ないことはないと思う。【A】この点が気になる。先のメールにも書いたように英語圏のプログラマーは混乱しないのかな?【H】プログラム上と日常で英語の”and”と”or”の切り分けが違う。
ただこの点からも表記方が知りたい。
独断的に想像してみようか。【A】その使い分けの根拠はよくわからない。【H】日本人的には最初に”and”を覚えるから列挙して行く場合そちらを使うが英語国民は”or”を使う場合もある。
ここがポイントだよね。さらなる考察を期待します。
"and"を使う場合、例えばどこかへ連れて行くとかいうように”一緒に”というにニュアンスがあるような気がする。あるいは元々密接な関係にあるものとか。
グループ名などの場合そこにコラボレーションが想定される。
言わば心理的な擬論理積があるような気がする。
それに対し”or”はあまり関係のないものを単に列挙するときに使う気がする。
余談だが言葉における心理の発露として好例は、”come”と”go”がある。
日本人はまたいつもの第一義の呪縛により、「来る」と「行く」と覚えるので、しばしば誤用する。
正しくはその使いわけは対象に近づくのが"come"で遠ざかるのが"go"である。
だから「早くおいで」に対する答え「すぐ行くよ」は"I'll come soon"である。このあたり彼我には心理の違いがある。
ところが日本語でもそういったものが現れる場合がある。
行きつけの店の常連同士でよくあるんだが、店側の人間ならいざしらず、客なのに自分がまだ現にそこに行ってなくても、行く予定をしている場合に、「今日来る?」って聞くことがある。
店側の人間であっても物理的にそこにいなくても「来る」っていうのも考えてみるといかに心理的なものが言葉に現れるかということの証だろう。
余談ついでにsexの時の「行く」が”I'm coming”なのは有名な話。
真性の論理的な論理積ではない。【A】ところで、『「及び」が”and”である場合』なんだけど論理積になっている訳ではないよね?
=ではないけど、どっちかっていうと「かつ」⊆"and"【A】ここがよく分からない。「or」はともかく先に"H"が言ったように「かつ≠and」なら論理積に「and」を採用する理由にはならないのでは?
明確な反対語ってのとは違う気はする。【A】それとも英語で「and」と「or」って反対語?
確かに。【A】論理和と論理積の差は論理の世界では決定的なものだと思う。
子供のように愚直にね。【A】そして「アメリカ人は論理を重視し、あいまいさを嫌う民族」と言う印象がある。
大ざっぱさと両方見え隠れするよね。
あいまいと大ざっぱは違うってことか?
ただね、プログラムの前に集合があるわけで、それはどこの国の発明なんだろ。【A】そしてプログラムはアメリカ発の文化。
このand/orのあいまいさとアメリカ人はどうも相容れない。
ことによるとその国の言語と英語の翻訳過程でおかしくなったのかもよ。
なくはないと思うけど、そこは彼らのことルールを作ってるんじゃないかな?【A】アメリカのプログラム開発の現場でもやはり混乱が起きているのだろうか?
これは"A"の回りで情報収集して欲しいね。【A】それともあちらでは「列記はorと表現する」が仕様書記述上の慣例になってるのでろうか?(聞いたことはないけれど)

プログラム言語により『&』『and』『And』など色々。【H】そのようです。【A】集合論での論理積は英語で「and」と表現されるのだよね?
しかも普通と違うというサインとして”AND”と大文字で表記されるみたい。
プログラムではどう?
『AND』と表記するのは昔のコンピューターで英小文字を使わないタイプの言語ぐらい。(COBOL,FORTRANなど)
マイクロソフトなどのプログラム言語では大文字で入力しても小文字で入力しても内部で大文字に読み替えていたりするのもある。(つまり両方OK)
蛇足だが、この一見親切そうな『小文字大文字両方OK 』は、一文字間違ってもエラーになるコンピューターの世界では違和感がある。
まあ最近のプログラマーは最初からそうだから慣れてるのかも知れないがな。
先のメールにも書いたように昔の言語は大文字だけ、最近の言語は色々だ。【H】ないことはないと思う。【A】この点が気になる。【H】プログラム上と日常で英語の”and”と”or”の切り分けが違う。
先のメールにも書いたように英語圏のプログラマーは混乱しないのかな?
ただこの点からも表記方が知りたい。
また昔はプログラムのソースコードを紙に手書きそれをコンピューターに入力していたが、最近はコンピューターにいきなり入力する。
そして最近の入力ソフトはandやorなどプログラム言語で規定されている命令や論理演算子が入力されたら、その語だけ色が変わったりする。
つまり表記で工夫しなくても他の部分と文字通り色分けがなされているわけ。
とするとアメリカ映画で夜遅く起きている子供に親が『ベッドへ行きなさい』というシーンがあるが、あれはcomeなんでしょうか?【H】正しくはその使いわけは対象に近づくのが"come"で遠ざかるのが"go"である。
だから「早くおいで」に対する答え「すぐ行くよ」は"I'll come soon"である。
このあたり彼我には心理の違いがある。

心理的に距離が近いものとして親子の例を出してきたのかな?だとしたら私の説明不足ですね。【A】アメリカ映画で夜遅く起きている子供に親が『ベッドへ行きなさい』というシーンがあるが、あれはcomeなんでしょうか?
距離というのは心理的といっても話者同士の間柄でなくて対象となるのははあくまで行き先です。
その場所へ近づくのが comeでそこから離れるのがgoです。
で、日本語は話者からの距離で決まります。
今いる場所から離れるのが行くで、今いる場所へ近づくのが来るです。このロジックからすると自分がまだ到着してない場所へあなたも向かうかと問う場合は行くか?となるはずなのに、行き先が店でその店側の人間であったり、常連でその日自分が行く予定だとかで、心理的にその場所に近い場合は来るか?と聞いてしまうのが面白いってことがいいたかったのです。
ですからご質問の場合、bedのある場所即ち寝室へ行けということだからgoです。
と言うかこれはまた丁度例外チックなのが出て来たなと思います。というのはgo to bedはほとんど成句になっていて単に寝ると訳した方がいいくらいです。
だからbed以外で寝る場合でも使うでしょうし、ひょっとすれば極端な場合今いる場所で寝なさいと言う時にも使うかもしれません。

そうではありません【H】心理的に距離が近いものとして親子の例を出してきたのかな?
この規則に当てはめ、『ベッドへ行きなさい』は、ベッドへ近づく行為だからcomeなのかと思ったんです。【H】その場所へ近づくのが comeでそこから離れるのがgoです。
この部分は了解しています。【H】常連でその日自分が行く予定だとかで、心理的にその場所に近い場合は来るか?と聞いてしまうのが面白いってことがいいたかったのです。
ここの論理がよく解らないんです。【H】ですからご質問の場合、bedのある場所即ち寝室へ行けということだからgoです。
寝室(対象=行き先)に近づく行為なのにcomeではないのはなぜ?
そもそも行き先は、そこに近づくから行き先ですよね?
行き先を示したからと言って常にcomeにならないのはもう少し切り分け条件があるのでは?

そうですね。最初の私の説明は不十分、そして(余談だがここは「かつ」も使えなくはない、両者の境目だな、それを考えると英語に区分がないのも少しだけわかる)2回目は誤りで、混乱させたようですね。【A】この規則に当てはめ、『ベッドへ行きなさい』は、ベッドへ近づく行為だからcomeなのかと思ったんです。【H】その場所へ近づくのが comeでそこから離れるのがgoです。
ここの論理がよく解らないんです。寝室(対象=行き先)に近づく行為なのにcomeではないのはなぜ?
そもそも行き先は、そこに近づくから行き先ですよね?
行き先を示したからと言って常にcomeにならないのはもう少し切り分け条件があるのでは?
正しくは日本語が話し手の視点なのに、英語は聞き手の視点で使いわけるといことです。
相手のところへ行くのが、comeです。また話題の場所(聞き手も含まれる)へ行くってのもありです。
例の日本語でもまれに起きる常連同士の会話など、英語では普通にcomeです。
英語のcomeには日本語の来るに行くの一部が含まれているわけです。
ここまで書いてきてふと気づいたのですが、話し手と聞き手という定義だけでは不十分ですね。
会話では当然話し手と聞き手は入れ替わります。ですから先の行くがcomeになるケースでも最初に来るかと聞いている場合は英語でもcomeです。聞き手の視点と言うならこれgoじゃないのってことになる。
とういうことはこの話は移動する側を起点とすると言うことを前提として、話し手、聞き手を考えないとこんがらがってきますね。
移動しない側は常にcomeであり、来るですね。このケースが多いから来る=comeと思ってても結構間違いにならないわけですね。
英語でcomeで日本語で来ると言う場合を想定するとどちらの視点から見ても近づいて来るってことは同じところにいるわけだから移動する必要ないのでは?
ということになりますが、例えば店に来てる客が一旦帰って来週も来る、comeってケースがありますね。
両者が離れてる場合が今回の話のメインで、移動する側(話し手)が自分の視点でしゃべる日本語は行くで、英語はcomeとなるわけです。
ここまではすべて距離が縮まるという範囲の話で、どちらからみても離れていくつまり関係ないとこに移動する場合、話し手だろうが、聞き手だろうが、移動する側だろうが、移動しない側だろうが、今すでに離れたところにいようが、今は同じ場所にいよう(go to bedはこれ)がすべてgoで行く。
そう考えると近づく場合はcomeで離れる場合はgoってことになる英語の方が簡単なような気がしてくるね。
ちなみに鹿児島方言は英語と同じだそうな。
別の場所に移動する場合の例外は先にも述べた話題の場所、いつもの店や、計画している旅行などがcome。
これは自分も移動しなければならない側が心理的に先に移動して迎える側になっているってことだろう。
日本語は店も、旅行も来る、行くどっちもありですね。
『Come&Go』へ続く
- 関連記事