K&R2の日本語訳について(第5章)

\documentstyle[ASCMAC,a4j,12pt]{jarticle}

\pagestyle{plain}

\begin{document}

\title{K&R2日本語訳訂正表}
\author{第5章}
\date{}
\maketitle


113 ページ,

1 行目,
「他の変数のアドレスを」の「他の」は余分。
(自分のアドレスを保持することも可能。)

4 行目,
「この」は余分。

$-$2 行目,
「連続的な番号付きの」は「連続して番号付けられた」。
「1バイト・セルの対」は「1バイトセル2つ」。

$-$6 行目,
ここは,「\verb"int *ip;"」を {\tt int} へのポインタの記号と決めた由来
を語っているような気がする。違うかも知れないが,そのつもりで訳してみると
私訳「…は,式 \verb"*ip" が {\tt int} である,ということで,
記憶を助けるように決められたものである」。

\vspace{3mm}

115 ページ,

1 行目,
「型をもち」は「型の値をもち」。

14 行目,
これでは,\verb"*ip" がインクレメントされるように読めないか? %
「何であれ {\tt ip} の指すものをとってきて,それに1を加え」。

$-$ 5行目,
ここは,原文では段落がかわっていないので,字下げは不要。

\vspace{3mm}

116 ページ,

6 行目,
「分類用ルーチン」は「ソートルーチン」。

$-$4 行目,
「アクセスされる」に前に「間接的に」が落ちている。

\vspace{3mm}

117 ページ,

7 行目,
「一例として…」の訳文がわかりにくいので私訳
「例として,文字ストリームを整数値に分解するフリーフォーマット
入力変換関数 {\tt getint} を考えよう。
この関数では,一回の呼出しごとに一つの整数が取り出される」。

8 行目,
間違っていると思うので私訳
「{\tt getint} は,見つけた整数を返さねばならない。
また,もう入力がないときには,ファイルの終わりを知らせなければならない。
これらの値は,別々の道を通って返されなければならない。
というのは,どんな値が {\tt EOF} に対して使われていても,
それは入力された整数の値でありうるからである」。

$-$7 行目,
間違っていると思うので私訳
「一つの解法は,
{\tt getint} に関数の値としてファイルの終わりかどうかを返させ,
ポインタ引数を使って変換された整数を呼び出した関数に戻して
格納することである」。

\vspace{3mm}

118 ページ,

9 行目,
「次の整数を」の前に「入力からの」が落ちている。

$-$8 行目,
the one extra character that must be read は
「次に読むべき」だろうか? %
「どうしても読まれてしまう,余分な一文字」ではないか?

$-$1 行目,
「数値」は「関数値」。

\vspace{3mm}

119 ページ,

2 行目
「同等に取り扱って」は「同時に論じて」。

4 行目,
「初心者に」の前に「少なくとも」。

5 行目,
「次の宣言」の前で段落がかわる。

9 行目,
「先頭から」「位置の」は余分。
「{\tt pa} が…」からは
「{\tt pa} が \verb"int *pa" と宣言された整数へのポインタだとすると,代入…」。

$-$ 5 行目,
「このとき」は「すなわち」。

\vspace{3mm}

120 ページ,

2 行目,
「{\tt pa+i} は {\tt pa} から {\tt i} だけ後の要素を指し,
{\tt pa-i} は {\tt i} だけ前の要素を指す」。

5 行目,
「指す」は,ポインタについての表現だから,おかしいと思う。
「意味する」?

7 行目,
「変数の型」のあとに「やサイズ」が落ちている。

8 行目,
「その拡張であるすべてのポインタ演算の定義から」は,意味がわからない。
よくわからないけど,その前から私訳
「『ポインタに1を加える』の意味は,そして,拡張により,
すべてのポインタ算術の意味は,{\tt pa+1} は…」。

11 行目,
「よい」は「密接である」。

12 行目,
「番地」は「アドレス」。

14 行目,
「その要素」は「その最初の要素」。

$-$7 行目,
私訳「少なくとも最初に見たときにはさらに驚くべきことは」。

$-$3 行目,
「添字で」は「添字をつけて」。

\vspace{3mm}

121 ページ,

3 行目,
「意味のある演算である」は「合法である」。

4 行目,
「変数ではなく定数である」は「変数ではない」。
(原文にないものをゴチにするなんて……。)

6 行目,
「先頭アドレス」は「先頭の位置」。

7 行目,
「として扱われる」は「である」。

8 行目,
「アドレスをもつ」というと,
「\verb"&" を適用できる」という意味にならないか? %
私訳「アドレスを保持する」。

9 行目,
「新しいプログラムを書いてみよう」は
「別のバージョンを書くことができる」。

18 行目,
「許される」は「完全に合法である」。

19 行目,
「アドレス」は「ポインタ」。

\vspace{3mm}

122 ページ,

1--3 行目,
私訳「配列名が関数にわたされると,
関数は,都合のよいように,
配列あるいはポインタがわたされたと判断してよい。
適切で明らかな時には,両方の記法を使ってもよい」。

4, 9 行目,
同じ単語 subarray を「部分配列」「サブ配列」と訳し分けている理由は? %
教育的配慮か?

14 行目,
「実際に」は原文にない?

15 行目の次,
一段落,抜けている。私訳
「そのような要素が存在すると確信するなら,
配列内での逆向きのインデックス付けも可能である。
{\tt p[-1], p[-2]} などは構文的には合法であり,
{\tt p[0]} の直前の要素を指す。
もちろん,配列の境界内にないオブジェクトを指すのは非合法である」。

$-$10 行目,
「{\tt p} が」の次に「配列のある要素への」を入れる。
「{\tt p} の指すオブジェクトの種類にかかわらず」は余分。

$-$5 行目,
「主な」は原文にない。

$-$4 行目,
「次に」は原文にない。

$-$2 行目
「これは文字を記憶させるときに {\tt alloc} を呼び出す側で使われる」
は
「このポインタは,{\tt alloc} を呼び出す側で,文字を格納するために使われる」。

$-$1 行目,
「再利用できるように」の後に
「,このようにして得られた」を入れる。

\vspace{3mm}

123 ページ,

5 行目,
「書き方」は「実現法」。

6 行目,
「さて,」は原文になし。

11 行目,
「プログラム」は「処理系」。
「もっていない」は「もっていないかも知れない」。

15 行目,
「次に割り当てられる」は「次の空き」。

16 行目,
「alloc が n 文字分要求した」のではなく,
「alloc が n 文字分要求された」。

17 行目,
「のに使われる」は不要。

$-$1 行目,
「空いている」は「使える」か? (free とは違うから。)

\vspace{3mm}

124 ページ,

11行目,
「{\tt p} によって指される空き領域」は「{\tt p} の指す領域を開放する」。
ここの free は,形容詞ではなく,動詞の命令形である。

$-$8 行目,
「次に」は原文になし。

$-$5 行目,
「{\tt allocbuf} の最後よりせいぜい1のところになる」は,\\
\verb"(allocbuf の最後 - 1) <= allocp <= (allocbuf の最後 + 1)"
と誤解されないか? %
私訳「高々,{\tt allocbuf} の最後を 1 越えるだけである。」

$-$2 行目,
「指示」は「合図」。

$-$1 行目,
「データを正しく指すポインタは0にならない」は
「データの有効なアドレスは0でない」。

\vspace{3mm}

125 ページ,

8 行目,
「ところで」は原文になし。
(しかし,省略してしまうと段落が変わったことがわからない。)

15 行目,
「{\tt p} が {\tt q} よりも初めの方の要素を指していれば」では
「配列」という語が訳されていない。私訳
「{\tt p} が {\tt q} よりも配列の前のほうの要素を指していれば」。

17 行目,
「一致または不一致を比較する」のはおかしいと思う。
「比較して一致または不一致を調べる」?

18 行目,
「異なる配列を指している」は「同じ配列の要素を指していない」。
(配列でないものを指しているポインタもあるから。)

$-$2 行目,
「に応じて決められる」は「に応じて計られる」「倍して扱われる」。

$-$1 行目,
「スケールされる」では,訳したことにならないと思う。
「4倍して扱われる」。

\vspace{3mm}

126 ページ,

2 行目,
「形」は「版」。

12 行目,
「この宣言」の「この」は,原文からすると,「p の」の意味だと思う。
私訳「{\tt p} は宣言の中で {\tt s}, …」。

13 行目,
「\verb"\0"」は「\verb"'\0'"」。

$-$11 行目,
「ところで,」は原文になし。

$-$8 行目,
「を通して」は「全体で」?

$-$3 行目,
「。」の次に「その他のすべてのポインタ算術は非合法である」を入れる。

$-$1 行目,
「代入する」の前に「キャストなしに」を入れる。

\vspace{3mm}

127 ページ,

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

4 行目,
「これの内部表現は…」は
「内部表現では,この配列はナル文字 \verb"'\0'" で終わるので,
プログラムで終端が見つけられる」。

11 行目,
「ポインタである」の前に「先頭への」を挿入する。
その後に,一文,落ちている。
「つまり,文字列定数は最初の要素へのポインタによってアクセスされる」。

12 行目,
「もちろん」は原文になし。
「必要はない」は「とは限らない」。

$-$10 行目,
「実際の」は原文にない。

$-$7 行目,
「ところで,」は原文になし。

$-$4 行目,
「\verb"\0"」は「\verb"'\0'"」。

$-$2 行目,
「メモリ位置」の「位置」は原文になし。

$-$1 行目,
「したがって,」は原文になし。

\vspace{3mm}

128 ページ,

1 行目,
「その結果は不定となるので注意がいる」は「結果は未定義である」。

5 行目,
「といえばよいが」は「といえばよさそうだが」?

6 行目,
「代入できない」は「コピーされない」。

7 行目,
「プログラム」は「バージョン」。

$-$14 行目,
「形」は「バージョン」。

$-$4 行目,
「これらはポインタとして初期化されており」は
「これらは都合よく初期化されたポインタであり」。
「\verb"\0"」は「\verb"'\0'"」。

$-$2 行目,
「書かれない」は「書かれないだろう」。
「経験豊かなプログラマ」は「経験豊かなCプログラマ」。
あるいは「Cプログラミングの経験を積んだ人」。

11 行目,
「\verb"\0"」は「\verb"'\0'"」。

12 行目,
「\verb"\0"」は「\verb"'\0'"」。

13 行目,
「最後にもっと短くというなら」というと
「もっと短くなるかも知れないが短くするのはこれで最後」という感じ。
原文の final abbreviation は,「とことん短くすると」というような
感じがするが,違うかも知れない。
私訳「最後の短縮化としては」。

$-$13 行目,
字下げ不要。
「これは一見してわかりにくいように見えるが」は
「これは最初に見たときは暗号のように見えるかも知れないが」?

$-$10 行目,
「なお,」は原文になし。
「目的」は「コピー先」?

$-$8 行目,
「さて,」は原文になし。

\vspace{3mm}

130 ページ,

16 行目,
「組合せ」の前に「他の」が落ちている。
行末に「例えば,」が抜けている。

$-$9, $-$8 行目,
「本節で取り上げた宣言のほかに,標準ライブラリに入っている
他の多種多様な文字列処理関数が含まれている」は
「本節で取り上げた関数のほかに,標準ライブラリに入っている
多種多様な他の文字列処理関数の宣言が含まれている」。

演習 5-5,
「{\tt strncpy}」の前に「ライブラリ関数」を入れる。
「ものにせよ」は不要。

\vspace{3mm}

131 ページ,

演習 5-6,
「前章」は「直前の章」の意に取られる。「これまでの章」。
「これのできる例は」を「よい候補としては」とし,
最後の「がある」を「などがある」としてはどうだろうか?

7 行目,
「分類」は「ソート」または「整列」。以下も同様。

13 行目,
「しかし,」は原文になし。

15 行目,
「分類される全行」は「ソートされるべき行がすべて」。

20 行目,
「すればよい」は「する」。

$-$ 6 行目,
字下げ不要。

$-$ 4 行目,
「さて,」は原文になし。

\vspace{3mm}

132 ページ,

$-$5 行目,
「入力を読み込む」は「入力行を読み込む」。

\vspace{3mm}

133 ページ,

12 行目,
「出力を書き出す」は「出力行を書き出す」。

19 行目,
字下げ不要。

$-$10 行目,
「writelines に渡される配列であるから」は
「配列名であるから」。

$-$7 行目,
「行を書き出す」は「出力行を書き出す」。
(どうして上と違っているのかな?)

\vspace{3mm}

134 ページ,

3 行目,
「比較関数も別の関数にしなければならない」は原文では
「比較操作は {\tt strcmp} を呼んで行わなければならない」。

4 行目,
「正しく動くと考えてよいであろう」はなんだか自信がなさそうだなあ……。
「正しく動くという確信を与えてくれる」。

\vspace{3mm}

135 ページ,

4 行目,
「まず」は原文にない。

7 行目,
「返す」は「計算する」。
(二つ返せたら,ポインタは使いません。)

11 行目,
原文の ``thirty days hath September ..." というのは何かの歌なのだろうか? %
「西向く侍…」と訳したら意訳しすぎ?

13 行目,
「二つの列をもつ二次元配列」は「二次元配列の二つの行」。

$-$7 行目,
この関数 \verb"month_day" は,左の端が上とそろっていない。
原書もそうなっている。

$-$6 行目,
右端が切れている。
「\verb"int *pday)"」となるところ。

\vspace{3mm}

136 ページ,

10 行目,
「要素が」は「その各要素が」。

13 行目,
「\verb"[row][col]"」は訳せば「\verb"[行][列]"」。

14 行目,
私訳「この記法上の違いを除けば,二次元配列は他の言語とほ
とんど同様に扱える。」

16 行目,
「右側の添字」の次に「すなわち列」を入れる。

$-$10 行目,
私訳「これにより,月の数が 0 から 11 ではなく,
自然な 1 から 12 をわたるようにできる。」

$-$9 行目,
「問題にしていない」は「貴重ではない」。

$-$8 行目,
「簡単」よりも「明解」?

$-$7, 5 行目,
「列の次元」「行の次元」とあるが,原語は number だから,
「数」でいいと思う。そのほうが,配列の次元(ここでは 2 )と
まぎれない。

$-$5 行目,
「この特定の場合」? %
なんとかわかるけど。

\vspace{3mm}

137 ページ,

5 行目,
「中カッコ」は「大カッコ」?

14 行目,
ideal が「理想的な」と訳されているが,「架空の」の可能性は?

\vspace{3mm}

138 ページ,

2 行目,
「単に」は原文にない。

3 行目,
「別のところ」は原文にない。
「その」は「それへの」。

4 行目,
「定義」というより「指定」か?

5 行目,
「自身」は原文にない。
fills in the correct number は,「正しい数が書き込まれる」では?

8 行目,
「宣言」は「定義」。

12 行目,
「文法的には正しい」というと,別の意味では正しくないような
ニュアンスがあると思うが,原文には感じられない。
私訳「文法的に正しい」。

13 行目,
「{\tt a[{\it row, col}]}」は「{\tt a[{\it row}][{\it col}]}」。
(ここは,原書に修正の跡がある。)

14 行目,
「宣言」は「定義」。

15 行目,
「プログラム動作」は原文は「コード」。

17 行目,
「したがって」は原文にない。

\vspace{3mm}

139 ページ,

$-$13 行目,
「具体的には,実行開始時に」は原文にない。

$-$10 行目,
「引数を含む」は「引数を格納した」。

$-$9 行目,
「ポインタ文字列ごとに一つある」は「ポインタは文字列ごとに一つある」。

$-$7 行目,
「必要な宣言とその使用法を最も簡単に示すのは」は「最も簡単な例は」。

$-$6 行目,
「空白で分けられた1行のコマンド行の引数を単に端末に」
の部分の私訳
「コマンドライン引数をブランクで区切って一行に」。

$-$3 行目,
「が与えられたとき,その」は「の」でどうかな?

$-$1 行目,
「コマンド名」は「名前」。

\vspace{3mm}

140 ページ,

3 行目,
「最初の実際の引数」は「最初のオプション引数」。

$-$12 行目,
「配列の添字ではなく」は「配列を添字づけるのではなく」。

\vspace{3mm}

141 ページ,

1 行目,
「{\tt argv} は引数の文字列の配列へのポインタであるから」は
「{\tt argv} は引数文字列の配列の先頭を指すポインタであるから」。

$-$2 行目,
「このプログラムで使われている」は原文になし。

\vspace{3mm}

142 ページ,

2 行目,
「基本的な」は原文になし。
further は,訳では「もっとはっきり」となっているが,
「(別のプログラムで)さらに」という可能性はないか?

3 行目,
「いま,あと」は原文になし。
「許すとしよう」は「許したい」。

12 行目,
「ところで,」は原文になし。

16 行目,
字下げ不要。

\vspace{3mm}

143 ページ,

$-$15 行目,
ここは段落がかわるので,字下げをすべきである。

$-$12 行目,
「べき」は「はず」。
「いずれにせよ」は原文になし。

$-$10 行目,
「たい。」の次に,一文抜けている。
「(他の有効な形は \verb"**++argv" である)。」
「また」は原文になし。

演習 5-10,
「引数として分離されているものとする」は
「スペースで区切られた引数であるものとする」の意?

\vspace{3mm}

144 ページ,

演習 5-11,
「通常の」は「デフォルトの」。

演習 5-13,
「10 であるが」の前に「たとえば」をいれる。
「sort」は「ソートプログラム」。

$-$3 行目,
「やり直すことができる」は「するようにできる」。

\vspace{3mm}

145 ページ,

$-$7 行目,
字下げ不要。

\vspace{3mm}

146 ページ,

1 行目,
「。」の次に
「よって,引数を {\tt void*} にキャストして
{\tt qsort} を呼ぶことができる」が落ちている。

2 行目,
「現実の」は「実際の」?

3 行目,
「人間の意図を正しく」は「すべてこれでいいのだと」?

$-$2 行目,
「ここで最初の一対の」は原文になし。

\vspace{3mm}

147 ページ,

$-$13 行目,
「一方,」は原文になし。

$-$12 行目,
「始め」(ママ)は「前の方」。

$-$11 行目,
「{\tt void  v[]}」は「{\tt void *v[]}」。

演習 5-14,
「sort」は「ソート・プログラム」。
二つめの文は,
「{\tt -r} と {\tt -n} は同時に指定することもできるようにせよ」
という感じだと思う。
「もちろん」は原文になし。

\vspace{3mm}

148 ページ,

演習 5-15,
「大文字・小文字をいっしょにするオプション {\tt -f} をつけ加えて,
ソート中に大文字・小文字の区別をしないようにせよ。
たとえば,{\tt a} と {\tt A} は比較上は等しくなる」。

演習 5-17,
「決まる」は「ソートされる」?

13 行目,
「この宣言」は「この構文」。
「実際の」は原文になし。

$-$9 行目,
「ここで」は原文になし。

$-$5 行目,
「小さなステップで」は「小さなステップごとに」。

$-$1 行目,
「機能をもつ」は原文になし。

\vspace{3mm}

149 ページ,

$-$12 行目,
in words を「ひとことでいえば」と訳せるだろうか?

$-$9 行目,
optional が原語のまま。

$-$3 行目,
「と認識される」は「である」。

$-$1 行目,
最後の「;」は原文に従うなら「:」。

\vspace{3mm}

150 ページ,

2 行目,
「区分」は「各部分」?

5 行目,
「宣言子」が declarator のことだと,これでわかるだろうか?

9 行目,
次のコメントは,日本語だったら,「{\tt *} を数える」となると思う。

$-$10 行目,
「直接の宣言子」が direct declarator のことだと,これでわかるだろうか?

$-$2 行目,
コメントが訳してない。「変数名」。

$-$13, $-$12 行目,
「最後の」は「最近の」?

$-$11 行目,
「識別名」は「識別子名」?

\vspace{3mm}

152 ページ,

$-$5 行目,
「ここに出てくる」は原文になし。

\begin{flushright}
岩瀬順一
\end{flushright}

\enddocument