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