岩瀬順一の「K&R2 の日本語訳を読む 1.5」

19 ページ

2 行目。 「文字データに対し簡単な操作を行なう相互につながりのある一群のプログラム」は 「文字データを処理するための互いに関連したプログラムの一群」。 「簡単な」は原文にない。

3 行目。 「プロトタイプ」は訳すなら「原型」?

6 行目。 「どこへ出力する」は「どこへ行く」。

7 行目。 「このテキスト・ストリームは」は「テキスト・ストリームとは」。

9 行目。 「列」は原文にない。 「の付いた形をとる」は「からなる」。 試訳:「〜文字とそれに続く改行文字からなる」。

13 行目。 「関数が用意されている」は「関数がいくつか用意されている」。 その次に 「その中で, getcharputchar が最も単純なものである」 が抜けている。 「getchar()」は「getchar」。

-11 行目。 「次の文字が入る」は「次の文字がはいっている」。 「入る」は動作であるが原語の contain は状態を表わすので。

-9 行目。 「関数 putchar は呼ばれるごとに文字を出力するためのものである」 は 「〜呼ばれるごとに一つの文字を出力する」であろう。

-7 行目。 「通常,画面に整数変数 c の内容を文字として示すのに使われる」 は 「通常は画面に,整数変数 c の内容を文字として印字する」。

-6 行目。 「交互に行なってもよい」は「取り混ぜて行なってもよい」であろう。

-2 行目。 「プログラム」は「コード」。 「かなりたくさんの」は「驚くべき量の」。

20 ページ

1 行目。 「1文字をとってくる」は「一つの文字を読み込め」。

2 行目。 「文字がファイルの終わりでない」は 「文字がファイル終端指示子でない」。

4 行目。 これは 1 行目と同じでなければならない。

5 行目。 「これをCに変換すると」。

-17 行目。 「もちろん」が落ちている。

-13 行目。 「正しい」は「有効な」。

-11 行目。 「〜のがよい」は原文にない。 少し前から試訳すると 「これは, もはや入力がないときには getchar が特有の値を返すことで解決されている。 この値は,どんな真正な文字とも混同されえない値である」。

-4 行目。 「記号定数を使うことにより, プログラム中の何ものも特定の数値に依存しないことが保証される」。

-2 行目。 「実際に」は原文にはないようだ。

21 ページ

2 行目。 「代入文」は「代入」。

3 行目。 この前に 「これは,代入がより大きな式の一部として現れうることを意味する」 が落ちている。

while」は「while ループ」。

「ファイルを複写するプログラム」は「複写プログラム」。

プログラムの次の行は、原文では字下げなし。 「このプログラムでは」は原文になし。 試訳: 「while は一つの文字を取ってきて c に代入し, それからファイル終端の目印かどうかテストする」。

プログラムの 3 行下。 「こうして while は繰り返される」は 「それから while は〜」。

-7 行目。 「注意されたい」は原文に見当たらず。

-6 行目。 「条件式の中の代入文を囲むカッコ」は「条件の中の代入の回りのカッコ」。

22 ページ

7 行目。 「ためのものである」は原文になし。 二つめの文は 「これは複写プログラムに似ている」。

プログラムの次の行。 「次の」は原文にないし、不要であろう。

-5 行目。 「でもよい」は「もあるし」?

23 ページ

1 行目。 「機種によっては」は直訳すれば「あるマシンでは」。

2 行目。 「他の機種では int は 16 ビットで」は 原文が on others であって定冠詞 the がついていないから、 「ほかのあるマシンでは int は 16 ビットで」 「int が 16 ビットのマシンもある」であろう。 であろう。 訳文では他の機種はすべて 16 ビット、と読める。

3 行目、 「小さな」の原語 little には「少しの」という意味もある。

4 行目。 「ためのものである」は原文になし。

5 行目。 「ところで」は原文になし。 「double(倍精度の float)を使うことで, もっと大きな数を処理することが可能かもしれない」。

6 行目。 「ループを表現する」は直訳の「ループを書く」のほうがわかりやすいかも。 「次に」は原文になし。

7 行目。 原文の also を訳すなら「for 文も使ってみよう」。

-15 行目。 インデントは不要。 「%.0f では存在しない小数部の印字が抑止される」は 「%.0f は小数点と小数部(ゼロ)の印字を抑止する」。

-13 行目。 「ここでは for ループの本体はである」は 「この for ループの本体は空である」。

-11 行目。 「ここの要求をここで満たしているのは, 独立したセミコロン,技術的にいえば空文である」 は 「孤立したセミコロンは空文と呼ばれるが, この要求を満たすためにここに置かれている」。

-10 行目。 「〜するとよい」とは原文は言ってません。

-7 行目。 「当然の答」は「正しい答」。

-6 行目。 「。」の次に「これは重要である。」を入れる。 「」は「頭」。

-5 行目。 「ループの本体に入ることはなく」は 「それが,ループの本体にはいることが決してない,ということを 意味するのであっても」。

-4 行目。 「“文字なし”というような入力がきたときでも, プログラムはちゃんと対応できるものでなければならない」は直訳すれば 「長さゼロの入力が与えられたときでもプログラムは聡明にふるまわなければならない」。

-3 行目。 この一文は原文でも意味がよくわからない。 do-while にない特徴を言っているのであろうか。

24 ページ

2 行目。 「行数」はゴチでない。 「ものである」は原文になし。

3 行目。 「標準ライブラリでは〜が保証される」は意味がわかりにくい。 「標準ライブラリは〜を保証する」。 「各入力ストリーム」は「入力テキストストリーム」。 「改行で区切られた」は「改行で終わる」。

4 行目。 「数を数える」は冗長。「数える」で十分。

プログラムの次の行。 「カウントアップ」は「インクレメント」。 「の制御に使われている」は直訳して「を制御する」のほうがわかりやすいのでは?

プログラムの次の次の行。 「この if 文では」と読むと「ほかの if 文は違う?」 と思ってしまう。これは、初出の if を説明しているのであるから 「if 文は」。

-13 行目。 「ここで」は原文になし。

-12 行目。 「この記号は,代入に使われる単一の = と等号テストを区別するために使われる」 では「Cが」が抜けており、equality test を「等号テスト」と訳している。 試訳: 「この記号は,等しいかどうかのテストを, Cが代入に使う単一の = から区別するために使われる」。

-10 行目。 「文法違反ではないから」は「合法的な式であるから」。

-8 行目。 「次に,機械の文字セットの中において,文字の内部表現に等しい値を求めるには, 単一の引用符で囲んで任意の1文字を書けばよい」 は 「一重引用符の間に書かれた一個の文字は, マシンの文字セットでのその文字の数値に等しい整数値を表わす」。

-4 行目。 「65 と書くよりは 'A' のほうがよい」の原文は 'A' is to be preferred over 65 なので 「〜のほうが好まれる」であろう。to be の意味はわからない。

-2 行目。 「文字列」は「文字列定数」。 「エスケープ文字」の原語は escape sequence(s) で、 これは 10 ページで「エスケープ符号列」と訳されていたもの。 「有効」は「合法」。

-1 行目。 「判定文や式の中でも,'\n' は改行コードの値を表わす」は 「'\n' は改行文字の値を表わす」。

25 ページ

1 行目。 「と等価」は不要。

2 行目。 「文字列」は「文字列定数」。

5 行目。 「二つ以上の空白」は「二つ以上の空白の並び」。

11 行目。 「次に,第四の有用なプログラムとして, 行と単語と文字の個数を数えるプログラムを考えてみよう」は 「われわれの有用なプログラムの第四のものは,行と単語と文字を数える(ものである)」。

13 行目。 「ゆるやかに」は「ルーズに」? 「このプログラムは」は「これは」。 「ユーティリティ・」は不要。

14 行目。 「裸の骨格」の原語は bare-bones だが、 リーダーズ英和辞典で barebones を見ると 「やせこけた、内容の乏しい」などの訳語が見える。 bare bones は「骨子」。 いずれにせよ、「裸の」はおかしくないだろうか。

26 ページ

5 行目。 「カウントを」は「単語のカウントを」。

6 行目。 「見ているのが」は不要。

7 行目。 「割り当てておく」は assign なので「代入される」。

「プログラムを読みやすくするうえからいうと」と言わなくても 「プログラムが読みやすくなるから」と直訳すれば十分ではないか。

8 行目。 「リテラル値」って何? 「文字通りの値」? 原語(のカタカナ書き) のまま使うなら訳注がいるだろう。 私は、正確な定義を学んだことはないが、 「値そのものをずばりと書いたもの」をリテラルと呼ぶようである。

「使うほうが好ましいであろう」よりも直訳ではっきりと 「使う方を好む」と訳すべきであろう。

9 行目。 「もちろん」は原文になし。

11 行目。 「数」は「魔法の数」。

14 行目。 「次に nl = nw = nc = 0 という行は, 三つの変数すべてに 0 をセットするものである」 は 「行 nl = nw = nc = 0 は三つの変数すべてをゼロにセットする」。

17 行目。 「代入文には値があり,右から左に代入が行なわれる結果である」 は 「代入は値を持つ式であり, 代入は右から左へと結合するという事実からの帰結である」。 (右から左へ代入するのは当たり前!)

「これは実際,次のように書くのと同じである」は 「これは〜と書いたようなものである」としてプログラム片をはさむようにすれば?

-10 行目。 「一方」は原文になし。 「OR を意味するが」とあるが、 「OR ってなんですか」という読者は相手にしていないのであろうか。 日本語訳なのであるから、英語の知識は全く仮定しないのが普通であろう。 「または」「あるいは」でいいのでは? それとも、 情報科学の基礎で and, or という言葉を習っていると仮定しているのであろうか?

-8 行目。 「エスケープ文字列」は 10 ページで「エスケープ符号列」と、 24 ページで「エスケープ文字」と訳されているものと同一である。

-6 行目。 AND については、-10 行目の OR と同じ(ことを言いたい)。 「&& の優先度は || より高い」は 「&& の優先度は || のすぐ上である」。

-4 行目。 「したがって」は原文になし。 「改行かタブ」は「改行やタブ」。

-3 行目。 「そのチェック」は「それらのテスト」。 (もし仮に || が右から結合するなら (c == ' ' || c == '\n' || c == '\t')(c == ' ' || (c == '\n' || c == '\t')) となるので c == '\n' || c == '\t' をまとめて「そのチェック」 と呼んでもいいかもしれないが、実際には || は左から結合する。)

27 ページ

1 行目。 「条件式」は「条件部分」。

2 行目。 「ものである」は原文になし。

7 行目。 原文は字下げなし。 「if-else で指定される二つの文のうち,実行されるのは一つだけである」 は 「if-else の二つの文のうち, 一つの文が,そして一つの文だけが実行される」。

9 行目。 「先の単語数をカウントするプログラムは, else の後の文が { } で囲んだ二つの文を制御する if 文になっている」 は 「この単語カウントプログラムでは, else の後の文は中カッコの中の二つの文を制御する if である」。

12 行目。 most likely が訳されていないと思う。

13 行目。 「入力した単語を1行に一つずつ印字するプログラムを書け」は 「入力を一行に一単語ずつ出力するプログラムを書け」。

15 行目。 「空白」の原語 white space, 「ブランク」は blank. 1.5.4 の二行目では blank が「空白」と訳されていたので注意。

16 行目。 「わざとらしい」は「人為的」?

19 行目。 「把握」は「保持」? 「異った」は「別々の」。 (異っていなければ困るではないか!)

20 行目, 「プログラム形式」は「プログラムのバージョン」。

28 ページ

13 行目。 出力中の「white space」「other」は訳してもらわないと。

14 行目。 「宣 言」の間のスペースは不要。

16 行目。 「ndigit が 10 個の int の配列であることを」は 「ndigit を 10 個の int の配列であると」。

17 行目。 「0」は「ゼロ」。 「ndight[1]」は「ndigit[1]」、 「ndight[9]」は「ndigit[9]」。

18 行目。 「初期化と,配列の印字との for ループに」 は,私だったら 「初期化と配列の印字の for ループに」 とする。

19 行目。 「任意の整数の式」は「任意の整数式」。整数型の値を持つ式、の意味であろう。 「もちろん」は原文になし。 「整数の変数」は「整数変数」。 「定数」は「整数定数」。

21 行目。 「この特定のプログラム」は This particular program である。 particular は訳さなくていいのかも。 「完全に」は原文になし。

-5 行目。 「が求まる」は「を求める」? 「この式は」は「これは」。 「…が連続していて増加してゆく値をとる」は 「…が連続的に増加してゆく値をもつ」。

-3 行目。 「単に小さな整数である」は「小さな整数にすぎない」。

-1 行目。 「0〜9 の間の」は変な書き方である。 「0 から 9 までの」。

29 ページ

9 行目。 「パターン」は字下げ不要。

18 行目。 「このプログラムはある条件が満足されるまで上から順に読まれ, 条件が満足されたところでそれに対応するが実行され, それでこの構文はすべて終了となる」は、 原書では条件を意味する condition や文を意味する statement に上のプログラム片と同じフォントを使っているので 「ああ、なるほど、上のプログラム片の中のものを指しているのか」 とわかるしくみになっている。 また、 この訳文では「上から順に読まれ」の主語がはっきりしない。

プログラム片の書き方から変えるのが望ましいと思うが、 「条件1, 条件2, ... が上から順に評価され, ある条件が満たされるとその時点で対応する文が実行されて, この構文を終わる」 とすれば少しはわかるか?

-15 行目。 「もちろん」は原文になし。

-13 行目。 「最後の else の後のが,存在すれば実行される」は else があっても文がない状況を想定しているようにも読める。 「最後の else 存在すればその後の文が実行される」であろう。

-11 行目。 「いくつもの〜があってもかまわない」は 「〜がいくつあってもかまわない」では?

-8 行目。 「スタイルとしては,長い判断文でもページの右側にはみ出ることはないように, この構文を前記のように書くのが賢明である」 はその直前で段落を変えて, 「スタイルの問題としては,この構文は上のようなフォーマットで書くことを勧める。 もしも if ごとに直前の else よりも字下げしたら, 判断が長く並んでいた場合ページの右へはみ出してしまうだろう」。

ここは、

    if (...)
        ....;
    else
        if (...)
            ....;
        else
            if (...)
                ....;
            else
                ....;
のように書くのが本来だが、これではどんどん右にいってしまうので
    if (...)
        ....;
    else if (...)
        ....;
    else if (...)
        ....;
    else
        ....;
と書け、と言っているのである。

-5 行目。 「これはテストする条件において,ある整数や文字式が…」は 「これはテストする条件がある整数式や文字式が…」。

-4 行目。 「第3章で」は「3.4 節で」。

30 ページ

2 行目。 「異なる」は「種々の」。


Iwase Zjuñici (岩瀬順一) 2001-10-21 (0) 22:44:22 +0900