「a」は「一つの」ではない

前回のエントリの補足.Microsoftの翻訳文書*1を誤読したという話だが,では原文*2だったらそんな誤読は起きないのか.
訳文で「呼び出し元」を「呼び出し先」と読み違えていたわけで,迂闊な我輩としては原文の「calling」を「呼び出し先(called)」と読み違える可能性は十分ある.


しかし,原文の「a thread」を「どこか一つのスレッド」と誤読することはない.なぜかというと,「a」はどこか1つのという意味には成り得ないからだ*3.英語を勉強し始めて最初の方に習う「a」の直訳「一つの」を杓子定規に適用すると誤訳となるケースは多い*4.「a」は「どこぞの馬の骨とも知れない何か」につく冠詞ではなく,「存在するのが自明なある一つのもの」につく冠詞である.
よって,「a thread」という文からは「存在することは自明だしわざわざ強調して言うまでもないスレッド」というニュアンスが読み取れる.このケースで存在することが自明なスレッドは「呼び出し元」か「呼び出し先」のどちらかしかない.


では,「a thread」が「呼び出し元スレッド」を指してるのか「呼び出し先スレッド」を指しているのか意識して前の方を読み直してみれば「the calling thread」と書いてあり,前出のスレッドは呼び出し元であることがちゃんと分かる.
日本語の文章を誤読した時には,「1つのスレッド」を「どこか1つのスレッド」と読み取ってしまい,消去法で後の文章を「呼び出し先スレッド」と誤読したのである*5


別段,英語万歳日本語だめだめというわけではないが,複数の意味に解釈できる変な訳文よりは人が書いた原文を読んだほうがわかりやすいという話でした.っつか,

このスレッドが終了するのを待機します。

   --from Java document(Thread.join)
って書いてくれれば何の迷いもなかったのだが・・・.

*1:1 つのスレッドが終了するまで呼び出し元のスレッドをブロックします

*2:Blocks the calling thread until a thread terminates

*3:その場合は「any thread」となるはず

*4:同様に「the」を「その」と訳すのもそうかも

*5:なぜかというと,スレッドオブジェクトに対するインスタンスメソッドの呼び出しで呼び出し先のスレッドに言及しないことがあるはずがないからである