notの意味を再確認する -否定の意味を持つ接頭辞の罠-
プログラミングの話はほとんどありません。
突然ですがみなさん、unhappy(≒ sad, 不幸せ/悲しい)
とnot happy
は同じ意味だと思いますか?
「悲しい
は嬉しい(happy)
の反対。」
「happy
の反対はunhappy
。」
「unhappy
はun-happy
、つまりnot-happy
だから...」
というロジックで「Johnが嬉しければ笑い、悲しければ泣く」という処理を行おうとした以下のようなコードがあるとします。
if (John.isHappy) {
John.smile();
} else {
John.cry();
}
一見これでよさそうですが、not happy
の時に泣かせてしまうと、Johnはそこそこ嬉しい時も別になんとも思っていない時にも泣いてしまいます。
どうやらunhappy = not happy
ではなさそうな感じがします。
「でもun
はnot
とちゃいまんの?」
not
の意味
not
(数学やプログラミングでいうところの¬
, ~
, !
)は、真偽を反転させる効果を持ちます。
「John is happy.」の否定形は「John is not happy.」ですが、言い換えるとこれは「It is false that John is happy.」であり、「happy
である」ことを否定しているに過ぎません。つまり、not
はあくまでも「〇〇ではない」だけです。
「ポジティブ/ネガティブ」という概念を使うからややこしくなるわけで、大事なのは「真偽が反転する」ということです。
「ほんでun
とnot
は何がちゃいまんの?」
接頭辞un
の意味
un
は、後ろに続く語の表す性質を否定する接頭辞です。not
の持つ意味に加え、反対(opposite)
や逆(reverse)
といった意味を表します。
否定の接頭辞には他にdis
やnon
などがあり、それぞれ少し異なる否定を意味します。
e.g.
-
dis
反対(opposite)
や欠如(absence)
を意味する。(like/dislike, agree/disagree, etc.) -
non
not
と同様に、補集合を表す。「俺か、俺以外か。」
un
以外の接頭辞の詳しい解説はここでは割愛します。
un
-動詞
動詞の前にun
がつくと、その動詞の逆の行為を意味します。
- do(<行為を>する) / undo(元に戻す)
- install(インストールする) / uninstall(インストールしたものを削除する)
un
-形容詞
形容詞の前にun
がつくと、その形容詞の表す状態の反対にあたる状態を意味します。un
がつく形容詞には以下の2つのパターンがあります。
-
相反する2つの状態しか存在しない形容詞
このパターンに当てはまる形容詞はその状態が0か100かにしかなり得ないので、一方であることが偽であればもう一方であることが真となり、一方である時に同時にもう一方でもあることはできません。-
available(入手可能) / unavailable(入手不可能)
available
でなければunavailable
。unavailable
でなければavailable
。 - able(できる) / unable(できない)
- fair(公平な) / unfair(不公平な)
このパターンは
not
で否定した時と同じ意味になります。ただし、not
で否定した方が若干弱い否定になります。 -
available(入手可能) / unavailable(入手不可能)
-
どちらでもない状態が存在する形容詞
このパターンに当てはまる形容詞は、その状態の程度が連続スペクトル上で変化し、一方でももう一方でもないという状態が存在します。比較級がある形容詞はこれに当てはまります。- lucky(幸運な) / unlucky(不運な)
- important(重要な) / unimportant(取るに足りない)
- comfortable(快適な) / uncomfortable(不快な)
ややこしいパターン
形態論のちょっと難しい話。
-
unlockable
unlockableは以下の2つの意味で解釈できます。- unlock-able: unlock(解錠)できる
- un-lockable: lock(施錠)できない
un
-副詞
- unnecessarily(不必要に)
- unnaturally(不自然に)
un
-名詞
名詞につく時も、反対の意味が強く出ます。
-
unhappiness(不幸):
unhappy
の名詞形。 - uncola: 7up(清涼飲料)のこと。「コーラではないもの」[1]。
non
-名詞とun
-名詞はよく似ていますが、少しだけ違うところがあります。
- non-Japanese: 日本人でない人。(「日本人」という集合に属していない)
- un-Japanese: 日本人っぽくない人, 日本的でない。(「こんな人が日本人であるはずがない」「こんなのは日本式に反している」というニュアンス)
7upをnon-colaとしなかったのも、対抗心の現れなのかもしれません。
まとめ
-
not
は真偽を入れ替えるだけ。 -
un
はnot
の持つ意味の他に「反対」や「逆」を意味する。
un
とnot
は日常会話ではほぼ同義で使われることもありますが、厳密には意味が異なります。
unhappy
であればnot happy
でありますが、not happy
だからといってunhappy
であるとは限りません。
「bool型の変数名や条件式にはできるだけ肯定的/ポジティブな意味を持たせましょう」というのはよく言われることだと思いますが、un
のような否定的な接頭辞がつく言葉の言い換えには気をつけた方がよさそうです。
「なんとなくわかったわ。おおきに!」
-
60~70年代にコーラに対抗して7upを売り出すためにUncola campaignが行われた。 ↩︎
Author And Source
この問題について(notの意味を再確認する -否定の意味を持つ接頭辞の罠-), 我々は、より多くの情報をここで見つけました https://zenn.dev/littleforest/articles/meanings-of-adverb-not-and-prefix-un著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol