社会人のメモ帳

忘れたくないことアレコレ

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

Cを学ぶならこの一冊

情報

著者:B.W.カーニハン/D.M.リッチー

訳者:石田晴久

発行:1989年6月15日

目次

  • はじめに
  • やさしい入門
  • データ型・演算子・式
  • 制御の流れ
  • 関数とプログラム構造
  • ポインタと配列
  • 構造体
  • 入出力
  • UNIXシステム・インターフェース

書評などなど

この本はめちゃくちゃ古い。

『The C Programming Language』がアメリカで出版されたのが1978年、それを日本語訳したものが第一版、第二版と改訂を経て、今の形に落ち着いている。C言語を学ぶ書籍は数多あれど、C言語を書く上での考え方を学ぶならば、本著だけで十分なのではないだろうかと思う。

当時はOSとして巨大で高価だったUNIXをベースにして開発された、OSやコンパイラを書ける ”システム・”プログラミング言語” としての特徴をまとめつつ、注意すべきポイントをまとめている。

C言語以外の言語から学び始めた人だと意識することは少ないかもしれないポインタという概念や、文字列を比較できないという性質など、本著ではきっちりページを割いている。

本著を難しい書籍……と考えている者もいるかもしれない。

しかし第一章『やさしい入門』では、詳しい話に入るよりもまず先に、『”Hello, World!” を印字せよ』という課題に取り組むことで、プログラム言語というものを書いてみることから始めさせる。

プログラムを全くやったことがないという人にとって、つまずくであろう要所に説明が行われている。それぞれの要所に関して、より詳しく知りたい場合は、『第○章に詳しく書いている』『第△章の○○に詳しく書いている』というように注意書きがなされているので、そこへ飛べば良い。

例えば。

#include<stdio.h>

『”Hello, World!” を印字せよ』という課題に取り組む場合の一行目は、上の一文が記述される。この一文の意味をきっちり説明してくれるC言語の書籍が、どれほどあるだろうか。

一言で言ってしまえば、『標準入出力ライブラリの情報を読み出す』といったように説明できるが、おそらく初学者にとって頭上に「?」がいっぱい浮かんでいることだろう。

このライブラリに関して、標準入出力に関して、は第七章『入出力』にまとめられており、学びたければそこへ飛べば良い。むしろ第六章に至るまでは、この『入出力』に関する情報は一切語られていない。

ここを知りたければ、そこだけを読めば良い。

 

第七章にいきなり飛ぶというような話をしているが、読み方としては第一章から順番に読んでいくことをおすすめしたい。書いてみることから始める第一章、第二章からは、書いてみたら気になってしまう概念を、詳細に見ていく。

プログラミング言語とは、機械にも分かるような形で指示を明記することができる言語だ。機械にはデータ――つまり数字でしか指示を理解できない。この数字を制御するために、変数と呼ばれるものを宣言し、この変数の中身である数字を変えていくことで指示を出していく。

第二章ではこの変数について、そして宣言する方法、宣言する時に必要になるデータ型と呼ばれる概念を理解していく。第三章からは数字を変えていく制御の記述方法を理解していき……と順番になっていることが分かっていただけたのではないだろうか。

例外として、ポインタという概念も扱うことになるのだが、こいつの説明は本著に譲ろう。下手な前提知識をつけて、何か大きな誤解を抱いたままC言語に挑むと、きっと痛い目を見ることになる。

 

本著を難しいと思っている方は多いかもしれない。しかし読み込めた読み込むほどに、本著の分かりやすさと凄さが垣間見えるように、細部にわたって作り込まれている。新しい発見があり、コーディングに詰まった時に読み返せば作業も捗るかもしれない。

C言語を学ぶならば、とりあえず買っておくことをおすすめする。