2010-01-28

C++0x本:前人未到

C++を日本語で相当深く解説するなどということは、誰もやった事がない。ということは、定着した訳語がないということである。

unqualified name lookupを、非修飾名前検索と訳すのは、どうも気に入らない。では、qualified name lookupは、修飾名前検索かというと、これがまた違和感を覚えるのである。

ましてや、name hidingの如きは、どう訳していいものやら。名前隠匿なんて、センスがないにも程がある。

一体、先人たちは、どのようにこの問題を解決してきたのか。彼らは、技術者であって、詩人ではなかった。そこで、つとめて辞書的な訳語をつけようとした。addressを番地といったり、delegateを委譲というなど、センスのかけらもない、それだけでは意味がわからない、日本語らしからぬ訳語を、たくさん作り出してきた。

辞書的な訳語の利点は、誤訳するよりマシだということである。逆に、日本語から英語に直す場合でも、英和辞書で、「番地」や「委譲」をひけば、addressやdelegateが出てくる。つまり、可逆なのである。

可逆といえば、losslessという単語に対し、可逆という言葉を割り当てたのは、果たしてどうであろうか。losslessは、ロスがないという意味であるのに対し、可逆とは、元に戻せるという意味である。また、lossyに対しては、非可逆という言葉が用いられている。

可逆というのは、明らかに聞き慣れない言葉ではあるが、losslessの訳語として、十分定着した感がある。これには、救いがある。つまり、最適な訳語でなくても、十分にユニークであれば、定着するのだ。

和訳、音訳、英語表記の間で、妥当な線を探らなければならない。

6 comments:

tiger said...

unqualified name lookup : 非修飾名参照

qualified name lookup : 修飾名参照

name hiding : 名前隠蔽

とか…?たしかに、難しい…

Anonymous said...

メジャーな本(プログラミング言語C++とかEffective C++とか)
で使われている訳語があれば、それが一番違和感が無いです

江添亮 said...

名前参照もいいかもしれませんね。
(un)qualifiedは難しい。
いっそのこと、(un)qualified名前参照にするか。
それもまた変だ。

name resolutionとname lookupは区別しなければならない。

Anonymous said...

たとえば
name-lookup …… 名前検出
name-hidden …… 名前抑制
なんて感じはどうか。

江添亮 said...

うーん、抑制は、なにか違うような。
こういう意味ですから。

int x ; // #1
void f()
{
int x ; // #2
x ; // #2. #1 is hidden.
}

Anonymous said...

上のAnonymousです。
すると意味的に表現すると
 名前上書き
とかなのかな。
名前検出も name-resolution の方の訳語っぽい気がしてきたし…。

まあ、気にしないで下さい。