教科書のよくないところ
柴田望洋先生の教科書「新・明解C言語入門編 第2版」は、先生が長年C言語を学生さんに教えてこられた経験が随所に生かされており名著だと思います。ですが教える立場からいえば不満がないわけではありません。いくつか教科書通り教えていないところがありますのでここでまとめておきます。 全体の構成について
紙面を節約するためだと思いますがフローチャートと違う図がプログラムの制御の流れの説明に使われています。学生にはレポート等でフローチャートを書くことを勧めている関係上、微妙に異なる記法の図があると混乱します。講義では適宜フローチャートで書き直したものを示すことにしています。 コーディングスタイルへの言及が十分ではありません。インデントについてp.111で軽く触れられているのみです。Cが自由形式であることは、特にPythonなどに触れる機会が増えた学生にとっては非常に大切で最初に触れるべきであろうと思いますし、併せてインデントだけではなく中括弧{}の位置の意味など教えるべきかと思います。講義では最初の方に触れるようにしています。
「短く書く」コーディングスタイルに従った例文が多いように思います。ですが現在は可読性の方が重んじられますので、過度に短い書き方は例文にはふさわしくないと思います。
複数の文を同一行に書くのは避けたほうがいいと思うのですが割と多用されてます。
単文で済むif文のthen節等でもブロックにした方が可読性は高まるし修正時のバグも減るはずです(CERT C、MISRA-C、ESCR-Cなど多くのコーディング規約はif for whileなどの本体を必ずブロックにすることを求めています)。講義では例文をブロックで書き直したものを示すようにしています。
intやポインタが16bitであることを前提にしたところがあり、学生の演習環境と異なるので説明しにくいです(おそらくMS-DOS時代の演習環境から教材を引き継いでいる影響でしょうか)。講義では32bitか64bitであると教えています。
セキュリティへの配慮が足りないと思います。scanf("%s")は本来は避けたい上に空白文字があるとそこで切れてしまうので、gets_s()やfgets()を導入したいところです。講義ではfgets()について触れ、適宜セキュリティについても教えています。
Cの言語仕様に忠実であろうという記述が多いことはとても好感なのですが、そのためか教えなくていいことも教えてしまってる気がします。
switch-caseの仕様にこだわるあまりfall throughに紙面を割きすぎではと思います(そもそも多くのコーディング規約ではfall throughは限られた場面でしか使うべきではないとしています)。
スコープの説明も丁寧ですが例がトリッキーすぎないかと思います。
整数の負数表現で1の補数は教える必要を感じません(現在1の補数に触れる可能性はまずないだろうと思います)。
C23ではついに1の補数は消えましたね…2の補数必須です。
要補足なところ
stdint.hについて触れているのみですがもう少し書いてもよいと思います。int等が実装依存なのはそろそろ時代遅れになりつつあるのでビット幅を意識してもらった方がよいと思います。
文字コードの話がもう少し充実してほしいです。漢字コード、Unicodeやエンコーディングの話もありません。
改行文字の話もちゃんと書いて欲しいと思います。本ページの改行文字の問題に書いてあります。 セキュアコーディングに関して文字列操作ライブラリのセキュアな使い方の補足が必要です。