C++という本の第二版の邦訳が出版される。初版は翔泳社が出していたが、C++14に対応した改訂版の第二版の版権が空いていたので、アスキードワンゴから出すための作業をしていた。私は邦訳の査読をした。今年になってから半年は、ずっとこの本の査読をしていた。このためにC++標準化委員会の最新の文書を把握する作業が数ヶ月ほど滞った。この仕事は、私がドワンゴに入社して以来、最悪の仕事であった。それについて書いていこうと思う。Stroustrupは、ご存知の通りC++の最初の設計者にして最初の実装者である。Universityで教鞭をとっている。この本はStroustrupの講義のための教科書として書かれた。対象読者は、入学して最初のセメスターで初めてプログラミングを学ぶ学生である。結論から言うと、この本は極めて悪く書かれている。悪書の見本のような本だ。悪文の集大成といってもよい。プログラミング言語入門用としても悪い。先に、この本の査読の仕事は、私がドワンゴに入って以来最悪の仕事だと書いたのは、この本が極めて読みづらく不必要に難解で、しかもその内容が噴飯物の間違いだらけであったからだ。学びがあったというのは、この悪書の見本を網羅している本を査読することで、「いかに本を書いてはいけないか」について実感できたからだ。Torvalds、gitを開発することにおいて今回、この本の査読という貴重な体験ができたことで、今後私がプログラミングの参考書を執筆するときは、反面教師として逆張りを行うようにする。ここからは、Stroustrupのプログラミング入門がいかに悪書であるかを、具体的に書いていく。本の文章量が多すぎる。Stroustrupのプログラミング入門第二版の原書は1312ページある。邦訳も同じ程度のページ数がある。本書の担当の編集者は、「僕が担当した本のなかでも最大の記録を更新しましたね」と言った。私はこの本を鈍器と呼んでいる。理由は、人が殴り殺せるほどの重さがあるからだ。これが、Stroustrupのプログラミング言語C++のような本であれば、どれだけ文章量が多かろうと問題はない。これは初心者への入門書である。本書の翻訳は、第一版と同じ翻訳者が新たに行った。翻訳の質は、概ね原書に忠実だ。一部変な翻訳を発見したし、まだ未発見の問題もあるだろうが、これだけの文章を翻訳したにしては、かなり一貫している翻訳だ。問題は翻訳ではなく原文(英語)にあるというのも原文は極めて読みづらく関係詞(thatとかwhichとか)や接続詞(andとかorとかyetとか)で文章を遠慮無く一文一文を長大にしている上に括弧の多用(こういうやつ)で更に文章の長さを水増ししているからであって決して翻訳の質が低いからではなく概ね原文に責任がある。文章はしばしば話が脱線する。「Aをするのは良い作法であるとされている」、「Bは悪い作法であるとされている」などの妥当ではあるが冗長な話への脱線がよくある。中でもひどいのは、わざと間違ったソースコードを提示したうえで、「これが私たちの考えた最初の解法だ。