『Cプログラミング診断室』目次

付録B 書評


C言語の本は、流行のようで、いっぱい出版されていますが、内容には著しい差が見られます。 いわゆるC言語の入門書はこんなにたくさん出版される必要があるのかと思われる状態になってき ました。そのためか、最近、「C言語書法」に関連する題名の本が何冊か出版されているので、目 についた本をここに紹介しておきます。

★レベル 読者対象レベル
    1  未経験者    これからCを始める
    2  入門者      Cをかじったことがある、プログラムは組めない
    3  初心者      何とかプログラムが組める、うまく動かない
    4  中級者      それなりのプログラムが組める、何とか動いているみたい
    5  上級者      よいプログラム、複雑なプログラムが組める
★有用性
  その本を読んだら、どのくらいためになるかを評価している。
  (「実用性」というより、「有用性、有効性」が妥当と思われる。)

    1  論外、読まぬ方がよい
    2  読んでも構わぬが、無価値
    3  平凡
    4  有意義、読むべし
    5  極めて有意義、手本とすべし
★面白さ
    1  睡眠薬
    2  教科書的
    3  平凡
    4  飽きさせない
    5  読み物としてもおもしろい

Cプログラミングの落とし穴
A.コーニグ著、トッパン
レベル:3〜4 有用性:3− おもしろさ:2
標準的な落とし穴が書かれており、一読の価値は十分にあります。なぜそう書くべきかをきちん と書いています。特定のマシンに限定せず、C言語全般について書かれています。あまり特徴のな い極めて教科書的な書き方です。しかし、ページ数も少なく、物足りなさを感じます。レベルとし ては、初心者〜中級者になりたてが対象でしょう。

C言語を256倍使うための本
福崎俊博、梅原系、山田伸一郎共著、アスキー
レベル:4〜5 有用性:3+ おもしろさ:5
Microsoft C に偏りすぎで、UNIXユーザにはあまり勧められません。しかし、 著者達のCプログラミングの腕は確かです。技術的に相当レベルが高いだけで はなく、初心者を公然と無視した書き方をしています。

本書の性格を紹介するために、特徴的な章や節の題名を列挙しておきましょ う。「Cウィザードへの長い道のり/C言語は難しい/C言語には移植性がな い/Cを使う覚悟/…」という、およそC言語を普及させようとか、理解を助 けてあげようとかという立場をとっていないことを高らかに宣言しているもの が並んでいます。理解できる人にだけ理解されれば十分だという書き方と共に、 著者達が楽しみながら自らのC言語の楽しみを真面目くさった書き方ではなく、 たぶん彼らの日常的な書き方で書いたと思われるところは、C言語の知識の収 得以上に役に立つはずですが、そのためには中級者以上の能力が必要でしょう。

しかし、いろいろなノウハウは詳しく紹介されているので、中級以上を目 指す人は挑戦すべきでしょう。

Cによるプログラミング・スタイルブック

林晴比古著、ソフトバンク

レベル:2〜3 有用性:2 おもしろさ:2
コーディングスタイルについて書かれています。細かい項目に分けて説明し ているので、著者の意図は読者に伝わりやすいと思います。まえがきと、章の タイトル「思考過程を残しておこう/空白を入れよう/…」からは、ずいぶん 期待を持たせてくれます。

しかし、重箱の隅を突つくような内容が多いのと、書法も標準的ではなく、 とても勧められません。レベルは、入門者〜初心者用です。

Cプリプロセッサ・パワー

林晴比古著、ソフトバンク

レベル:2〜3 有用性:1 おもしろさ:2
マクロ(プリプロセッサ)についてのみ書かれた本としては、唯一の書だと 思います。その点は意欲的なのですが、マクロの乱用、悪用の例が極めて多く 含まれていて、これをうのみにして活用することは、ちゃんとしたプログラム をボロボロのプログラムに変えてしまうことで、極めて危険です。著者のCプ ログラムのレベルが疑われます。マクロの本を書くために、無理をしてマクロ を使っているような個所も多く、全体に不自然な部分が多いです。

マクロについて勉強したければ、標準のヘッダーファイルとか、ウィンド システムなどのヘッダーファイルなどに豊富な例があるので、そちらを参考に した方が、はるかにためになるでしょう。

間違いだらけのCプログラミング

金田一勉著、ナツメ社

レベル:2 有用性:1 おもしろさ:2
内容は、初心者というより入門者が対象と思われます。説明の項目は細分化 され、質問−解答形式で説明しています。また、「ミニ・レッスン」と題して、 いろいろなトピックを説明しています。

これらの、編集としての企画は高く評価できるのですが、最悪なのは、説明 内容に誤りが極めて多いことです。中級者にとっては、間違い探しが面白いで しょう。上級者にとっては、それさえもばかばかしいでしょうか。

Cプログラミングの非常識

河西朝雄著、技術評論社

レベル:2〜3 有用性:3 おもしろさ:3−
Cプログラミングの誤りやすい細かな点を1〜2ページ程度で説明できる小 さな単位に分けて解説している点は、基本路線では[5]と非常に似ています。 ただし、[5]と違って、解説はちゃんと行なわれています。

DOS、MS-C、TURBO C に根深く依存しているので、UNIXの人には向きませ ん。

初心者が、Cについて、今一度、基本事項の誤解がないか再確認には非常 に良いでしょう。しかし、プログラミングスタイルとか、プログラム設計など については参考にはならないでしょう。

中級以上の人や本書を読み終えた人は、 別の本(『C言語を256倍使うための本』,『現実的なCプログラミング』など) を読んでください。

Cスタイル −標準とガイドライン−

D・ストレイカー著、奥田正人訳、海文堂

レベル:2〜3 有用性:2 おもしろさ:1
書名からも察せられるように、標準とかガイドラインの提示にこだわってい て、概念的説明ばかりが多く、読んでいると直ぐに眠けを催してきます。内容 は、普通言われていることを書き並べている感じですが、細切れで、説明のた めのプログラム例程度しかないので、この本を読んでどこまで実際に役に立て ることができるかは難しいでしょう。

それから、プログラム部分に、;と:のミスや忘れが目立つのは感心しま せん。

Practical C Programming/現実的なCプログラミング

S・Oualline著、岩谷宏訳、ソフトバンク

レベル:3〜4 有用性:4 おもしろさ:4−
Xウィンドウのマニュアルなどを出版しているO'Reilly and Associates, Inc.の著名なシリーズNUTSHELL HANDBOOK シリーズの1冊です。C言語に入門 した人が、2冊目の参考書として読むには、現状では一番最適な本でしょう。 基本事項をほぼ網羅しています。UNIXとMS-DOSの場合の相違についても適宜説 明が入っています。

最後の一言として、「Cでできることは,すべて理解した,とお考えなら, もっとよーく考えてください。Cはまだまだ,奥の深いプログラミング言語で すぞ。」と書かれています。本書は500ページを超えるちょっと厚めの本です が、この本をちゃんと理解でき、かつ実践できて中級者といえるでしょう。

UNIX流Cプログラミング入門

F・リチャード・ムーア著、中村和郎訳、HBJ

レベル:1〜2 有用性:1 おもしろさ:1
 UNIX流とかいう題目に飛びついて買う人がいますが、注意してください。

まず、本を買う時の一般的注意について話しましょう。まず、いつ書かれ た本か見てください。翻訳本の場合には、原著についても調べましょう。日本 語訳は1987年です。これでもかなり古いです。原著は1985年です。ますます古 いです。

プログラミング言語の本は、コンピュータ関連の本の中では寿命の長い方 ですが、それでも出版されてから5年程度が寿命です。いつ出版された本かは 必ず確認して買いましょう。

入門者を対象としており、「UNIX流」とわざわざ言うに値するようなこと も書かれていません。無条件に、「ボツ」と言えるものです。ここでわざわざ 取り上げたのは、買うときに発行日を確認すべきことを知らせるためだけです。

プログラマのためのANSI C全書

L・Ammeraal著、吉田敬一、竹内淑子、吉田恵美子共訳、共立出版

レベル:1〜3 有用性:2 おもしろさ:2
「プログラミング診断室」では、あまりANSI C を取り上げなかったのです が、これからは増えていくことは確実です。しかし、ANSI対応でない古いCも 今までのプログラムの膨大な量の蓄積があるので、そう簡単になくなることは ないでしょう。

この本は、原則としてANSI Cのことだけしか書いていないので要注意です。 相違にはほとんど触れていません。しかし、PASCALとの相違については、随所 に書かれています。

内容は、平凡なCの入門書になっています。目立った特徴は、練習問題の 数が多いことでしょうか。Cプログラムの書法は変な癖があり、絶対まねをし てはいけません。

ANSI C 上級入門

N・ゲハニ著、福富寛、清水恵介、川嵜秀作訳、CQ出版

レベル:1〜3 有用性:2 おもしろさ:2
著者はコンカレントCの設計者Narain Gehani(ナーレン・ゲハニ)で、著 名です。しかし、本書の題名の「上級(Advanced)」というのは誤りか冗談でしょ う。 全体の感想は、ANSI Cについての特徴のない解説書を読まされている感じ がします。実例が少なく、仕様書を読んでいる感じでした。

本文中では、ANSI Cの説明を行なっているだけで、付録に「ANSI C と K&R C の相違点」があり、期待を持たせますが、これもマニュアル的説明で簡 単に片づけています。

さらに、付録に「ANSI C と多国語(漢字)対応」がありますが、同様に マニュアル的に片づけられてしまっています。

オブジェクト指向、TURBO C++のすべて

横井与次郎著、HBJ出版局

レベル:1〜3 有用性:2 おもしろさ:3−
C++の本ですが、今後コーディングするには、C++を意識くらいはしておき たいものです。この本はそのような人には適します。内容は丁寧過ぎるくらい ですから、初心者でも大丈夫です。プログラム開発方法についても書いていま すが、変な方法の紹介が多く、その部分を無視して読むと良いでしょう。

CとC++は、互いに影響を与えあっていますから、C++も勉強しておくべ き時期でしょう。C++ について読むのなら、やはり、ストラウストラップの 「プログラミング言語C++」が一番良いでしょうが、あまりやさしい書き方は していません。現在、原書は、第2版が出ているので、上級者は、こちらに挑 戦してみてはいかがでしょうか。私も読まねばと思って買っては来ましたが、 まだ積んだままです。

プログラミング言語C第2版/ANSI規格準拠

B.W.カーニハン、D.M.リッチー著、石田晴久訳、共立出版

レベル:1〜5 有用性:5 おもしろさ:3
まず、この本を知らない人はいないでしょう。C言語のバイブルと言われる 本です。バイブルと言われる由縁は、著者の一人、デニス・リッチーがC言語 の創始者だからです。もちろん、Cの本では一番よく売れている本です。とい うより、コンピュータ部門の超ベストセラーです。しかし、この本を買っても、 きちんと読みこなせた人は極めて少ないはずです。

1989年に出された第2版がANSI準拠になっており、1982年に出された日本 語版の初版(原著は19 78年版)は日本で最初のC言語の本だったと思います。 私は、英語版初版、日本語版初版、日本語版第2版と使い続けてきました。

説明は、簡潔で明瞭ですが、C言語がはじめての人にはかなり難しいでしょ う。簡潔で要領を得過ぎているのですが、慣れてくると便利な本です。洗練さ れた練習問題があり、これを全て独力で解けるようになれば、かなりの実力 (初心者卒業)と言えるでしょう。

この本は、Cを使っているところなら、たいていどこに行っても1冊くら いは転がっているものです。だから、他へ行ったりする時、この本だけは持参 しなくても相手側にもあると期待しても大丈夫でしょう。

多くの入門者〜初心者が、この本の完全理解を目標にしています。また、 この本(バイブル)を理解するための参考書も出ています。

この本でのCのプログラミングスタイルが、Cで最も標準のスタイルとし て知られています。まず、この本のスタイルを真似てコーディングしている限 り、文句を言う人はまずいないでしょう。

とにかく、この本はバイブルだから、無条件に買っておくべきでしょう。

Cパズルブック

A.S.Feuer著、村井純訳、アスキー

レベル:2〜3 有用性:1 おもしろさ:2
C言語は初心者にとっては、きわめて分かりづらいところの多い、頭を悩ま す言語です。このC言語の性質を利用というか悪用して、パズルとしてしまっ た本です。

趣旨はそうだったのですが、本のできは非常に悪く、こんなものを「パズ ル」といわれると、ニコリに申し訳がたちません。パズルはもっと高等かつ高 貴なもので、重箱の隅を突っつくようなことばかりに終始しているのは、パズ ルを冒涜しているとしか言えません。

この本は、C言語の学習にはまったく役に立ちません。数あるCの本の中 で一番役に立たない本でしょう。パズルとして極めて低級であるだけでなく、 Cとしての程度も低いです。要するに、読んでも害にしかならない最悪の本で す。

以下の2冊はPerlに関する著書です。アフターC言語を目指す人のために紹 介します。

Perlプログラミング

L.Wall and R.L.Schwartz、近藤嘉雪訳、ソフトバンク

レベル:3〜5 有用性:4 おもしろさ:3
本書は、Perlの原典、バイブルと言われる書で、その表紙の絵から、通称 "Camel book" と呼ばれています。600ページを超える分厚い本です。NUTSHELL HANDBOOK の1冊でもあります。

前半はやさしい解説、中盤がPerlの全関数のアルファベット順の解説、後 半がPerlの実践編になっています。関数説明の部分は、マニュアルとして非常 に便利です。後半は幅広い知識を要求されるところが多く、上級プログラマ・ システム管理者を対象にしている部分も多いので、きちんと理解するのは大変 でしょう。しかし、そこまで理解しなくても、Perlという言語は、それなりに 使っても十分役に立つ言語なので、実際に使いながら腕を上げていけば良いで しょう。

Perlをやるなら、必ずそろえておくべき本です。

Perlの国へようこそ

前田薫、小山裕司、斎藤靖、布施有人共著、サイエンス社

レベル:3〜4 有用性:4 おもしろさ:4
"Camel book"を難解と思う人にお勧めの本です。

第5章の「Perlトリック」を除くと、平易であり、実際的な参考書です。 具体的な例をひきながらの説明は要領をえていて、日常Perlを使っていること がうかがえます。

「Perlの拡張」の節は、PerlからXViewライブラリを使えるようにする方 法が詳しく書かれており、興味深いでしょう。MotifではなくXViewであるのは 残念ですが、この記述を参考にしてMotif版に書き換えるのは容易でしょう。

■総括

残念なことですが、ほとんどの著者は、Cプログラムで大プロジェクト開発に従事したような経 験は極めて少ないないように思われます。ですから、当然そのような場合に必要となる技法の紹介 がありません。

開発現場では、どのようにして、何万、何十万行におよぶプログラムを、いかに読みやすく、バ グを入れ難く、メンテナンスが楽になるように、日夜努力しているのに、それらのノウハウがほと んど見られないのは残念なことです。もちろん、小さなプログラムを作るときにも、それらのノウ ハウは生きてきます。それに、本を書くためだけに用意した、極めて不自然な例が多いのも残念な ことです。

どの本も、C言語の文法説明が中心になり、プログラム開発全体に対して注意しなければならな いCプログラミング上の諸問題についての解説がほとんどありません。もう、単なるCの入門書、 解説書は書店の棚にあふれているのですから、Cの文法が一通り分かっている(ポインタを自由に 使いこなし始めた人)程度を対象にした書籍の欠乏が目立ちます。

とりあえず、Cプログラミングの書法などについての本を推薦するとすれば、現状では、

        入門者〜初心者 Cプログラミングの非常識
        初心者〜中級者 現実的なCプログラミング
        中級者     C言語を256倍使うための本	
        全員      プログラミング言語C第2版
といったところでしょう。上級者には、何もコメントしなくても大丈夫でしょう。

ところで、C言語の学習そのものが最終目標ではないはずです。言語学習マニアでもないかぎり、 C言語を使って何かをすること、何らかの処理をするプログラムを組むことが本来の目標のはずで す。ですから、各自の興味のある分野のソースプログラムの掲載されている本とか、ソースプログ ラムそのものを入手して、色々研究する方がよいのではと思います。パソコンネットからダウンロ ードしたり、ソースリストの入ったフロッピィーなども雑誌や単行本に付いているので、それらで 学習するのがよいでしょう。せめて2000行以上で、複数のファイルからなるプログラムをいくつか 読んでみることは絶対に必要です。

C言語の本に限らないのですが、コンピュータ全般の著書について、冊数はいっぱいあるのです が、高い技術に裏打ちされた入門書の不足が目立つようです。[2]の著者レベルの人が、高度な技 術と豊富な経験に基づいて初心者〜中級者用の本を、読者対象別に書けば、日本のCプログラムの 水準も向上するでしょう。そう言う点では、[16]は非常に傑出した本です。初心者ほど悪いものに も染まりやすいので注意したいですね。

C++については残念ながら十分な調査をしていないので、1冊だけの紹介になりました。最近は C++の本も増えてきたし、使える環境も整ってきたので、CからC++へ移行される方も増えると思 いますが、UNIXではまだCが圧倒的に強いです。

プログラミング診断室と関連するC言語などの書籍について評価しました。C言語の書籍はすで に300冊ぐらい出版されており、その選択には迷うことでしょう。十分な時間があれば、これら のなかの主要な本についての書評をまとめ、常時C言語をマスターしようとする読者の参考書選び の助けになるようなものを提供できれば本当に最高なんですが、膨大な時間を必要とするし、本書 の付録などという程度では対応しきれないので、診断室の書評はこのあたりで打ち切りました。

プログラム開発の本質的部分に迫るには、共立出版から出ているワインバーグ氏の著作を読むと よいでしょう。以下に主要なものをあげておきます。

        「スーパーエンジニアへの道」
        「コンサルタントの秘密」
        「ライト,ついていますか」
        「システムづくりの人間学」
        「計算機入力の人間学」
初心者程度では、本当の理解はおぼつかないと思いますが、知ったかぶりをするには役立つでしょ う。プログラミング技術の話よりも、システム全体の設計などに関する裏話や心理面の話が多く、 プログラマだけでなく、管理部門の人々に大変お勧めです。

ソフトウェアに関しては、いまだに洋書、あるいは翻訳書に頼らざるを得ないことが多いのが残 念です。この辺りは、本来は大学などの先生方が優れた著書を記されるのが本来の姿と思いますが、 いかがなものでしょうか。


Copyright1996 Hirofumi Fujiwara. No reproduction or republication without written permission
『Cプログラミング診断室』目次