プログラミングはC言語で始めるもの,と考えている人は多い。大学の授業や企業の研修でも,Cを最初のプログラミング言語として採用しているところはたくさんある。学ぶ人が多いということはCプログラマの人口も多いということ。しかし優れた参考書に出会えなかったために,初心者あるいは初心者にすらなれずに挫折してしまった人も多いのではないだろうか。ここではC言語の勉強の第一歩を正しく踏み出し,中級から上級へとスムーズに進んでもらうための参考書を紹介しよう。

歴史的名著を読んで学習をスタートさせよう

プログラミング言語C
第2版(訳書訂正版)

Brian W. Kernighan,
Dennis M. Ritchie 著
石田 晴久 訳
共立出版 発行
1994年3月
343ページ
改訂第3版 C言語入門
Les Hancock,Morris Krieger,Saba Zamir 著
倉骨 彰,三浦 明美 訳
アスキー 発行
1984年1月
526ページ
Cの絵本
アンク 著
翔泳社 発行
2002年3月
191ページ

 C言語には,言語を開発したプログラマ自身が書いた原典と言える名著がある。「プログラミング言語C 第2版」である。著者のBrian Kernighan(ブライアン・カーニハン)氏とDennis Ritchie(デニス・リッチー)氏の頭文字をとって「K&R」と呼ばれている。初版はANSI(米国規格協会,American National Standards Institute)がCを標準化する前から存在していたため,その後のANSIの標準化を受けて第2版に改訂された。Cという言語の誕生から現在まで,世界中のCプログラマに支持されてきた歴史的な入門書である。

 章立ては,最初にCの概要説明があり,データ型,制御の流れ,関数,ポインタと配列,構造体,入出力,とまさに教科書的に無駄なく構成されている。これを読めば正統なCを正しい方法で学べるだろう。

 K&Rより,さらにていねいな説明が読みたいという人に対して推薦できるものがある。「改訂第3版 C言語入門」だ。これも,長年支持されている名著である。ページ数はK&Rの約1.5倍になるが,プログラミングというものの考え方が理解できない人に向けてわかりやすく解説している。章立てはK&Rを細かくした感じで,説明の順序もほぼ同じである。ただしK&R同様,「C言語入門」も全編白黒ページとなっており,教科書のような堅苦しさがある点は今ひとつだ。

 見た目からしてやさしくCを始められないか,という人には「Cの絵本」はいかがだろう。文字よりもイラストの方を中心にしたまさしく“絵本”だ。見開き2ページで一つのテーマの説明を完結させており,非常にビジュアルな参考書になっている。プログラミングにはイメージが重要,という著者の思いが伝わってくる一冊である。

ポインタが理解できなくてつまずいている人は必読

C言語
ポインタ完全制覇

前橋 和弥 著
技術評論社 発行
2001年1月
323ページ
秘伝C言語問答
ポインタ編 第2版

柴田 望洋 著
ソフトバンク パブリッシング 発行
2001年11月
393ページ

 入門書は学習し終えたのに,なんとなく釈然としないとか,今ひとつCプログラミングに自信が持てないという人は,ポインタの理解が不十分なのではないだろうか。そんな人にお薦めなのが「C言語ポインタ完全制覇」と「秘伝C言語問答ポインタ編 第2版」である。

 どちらの本も,入門書だけでは不十分なポインタの説明を補うように書かれている。「C言語ポインタ完全制覇」は著者がWeb上で公開していた内容をベースに,多くの人の意見を追加して作られたもの。1,2章はポインタの基礎的な説明で,3章が文法,4章が使用例,5章がデータ構造,6章がそれ以外というように章立てされている。1,2章以降は,興味がある順番に読んでも理解できるだろう。「秘伝C言語問答」は,配列,文字列,構造体,リストといった学習項目ごとに章を立て,その中に説明と演習を盛り込んでいる。著者はCの解説書を数多く執筆している柴田望洋氏。この本も,順に読み進めれば確実に理解が深まる。

 実践的な内容を踏まえて理解したいなら「C言語ポインタ完全制覇」,論理的に理解したいなら「秘伝C言語問答」が向くだろう。

あと一歩理解を深めて実践的な技を身に付ける

実習C言語 新装版
田口 景介 著
アスキー 発行
1999年12月
278ページ
C実践プログラミング
第3版

Steve Oualline 著
望月 康司 監訳
谷口 功 訳
オライリー・ジャパン 発行
1998年6月
447ページ
Cプログラミング
専門課程

藤原 博文 著
技術評論社 発行
1994年12月
367ページ
改訂新版
Cプログラミング
診断室

藤原 博文 著
技術評論社 発行
2003年8月
502ページ

 入門書を読み終えて一通りCを理解したら,初級のサンプル・プログラム以上のものを作ってみたくなる。そういった人にお薦めなのが「実習C言語 新装版」と「C実践プログラミング 第3版」である。

 「実習C言語」は,同じシリーズの「入門C言語」の続編であり,簡単なCプログラムであれば書けるという人を対象に書かれている。図も多く,文章も読みやすいので,苦労を感じずに最後まで読み進められるだろう。各章の関連性は低く,拾い読みしたりリファレンスとして使ってもよい。「C実践プログラミング」は,「Cとは何か」から書いており入門書としても使えるが,デバッグやドキュメント作成といったプログラミングの全工程について触れるあたりに,入門者は抵抗を感じてしまうかもしれない。逆に初級段階を終えたプログラマは,そうしたことも含めた実践的な内容が必要になるだろう。あえてミスのあるサンプル・コードを書いて読者の注意を促すなど,楽しく読むための工夫もなされている。

 Cでプログラムを作成しても,なかなか思ったとおりに動かない,自分の書き方のどこが悪いのだろう,などと疑問を感じているという人にお薦めなのが「Cプログラミング専門課程」と「改訂新版 Cプログラミング診断室」である。これらは,間違いや誤解から生じるバグやミス,理解不足を排除するよう書かれている。

 「Cプログラミング専門課程」は,メモリーを理解することに重点を置いている。このため網羅的に書くことは避け,Cがメモリーをどのように扱っているのかを,さまざまな局面から説明している。1,2章で,入力ミスやバグを減らすことに触れているが,ここはさっと読み飛ばしてかまわない。3章以降が,著者が強調しているメモリーに関係してくる部分である。

 「Cプログラミング診断室」は,同じ著者が書いた同名書籍の改訂版だが,続編と言ってもいい位置付けにある。数多くのプログラムを見てきた著者が,初/中級者の作成したプログラムを添削しながら,「正しいプログラムはこのように書くべきだ」というのがその内容だ。添削例の多くでは,単純にバグが発生して動かないものを直すというものではなく,アルゴリズムを変えて高速にしたり,後から保守しやすくしたり,精度を高めたり,といった指導を行っている。ところどころにある皮肉っぽい書き方からは「こんなプログラムにはうんざり」という著者の感情が伝わってくる。これを面白いと感じるか,嫌味に感じるかで全体を通じ楽しく読み進められるかが決まるだろう。