「やさしくない」C言語入門書の構想

暫く前に「やさしい」C言語の入門書を探していたので、その反動で「やさしくない」C言語の入門書について考えてみた。

一言で「やさしくない」といっても、万人に対してやさしくない本の需要なんて皆無なので、特定の人にやさしくない本を目指すべきだろう。ここではプログラミング初心者にやさしくない入門書――他言語経験者向けの本とする。

他言語経験者向けなので、プログラミングに関する一般知識を持っているという前提で、C言語の各種機能を解説しつつ、Cプログラマらしいコードを提示していくのが筋だろう。この考えは『初めてのRuby』からのパクリだ。

サンプルコードでは必要に応じて最初から標準ライブラリ関数を使ってしまう。この方針は『Accelerated C++』からのバクリ。最初から便利機能を使ってしまうのが吉とでるか凶とでるか微妙な所だ。

C言語に関する記述はC89ベース。組込み関係の仕事に足を突っ込んでいる身としては、暫くはC89がメインだろうと踏んでいるからだ*1

全体の構成は『プログラミング言語C 第2版』と『C実践プログラミング 第3版』を混ぜた感じ。正直、適当なのは秘密。

  • 簡単なサンプルソースを肴にC言語全体についてさらっと話す。
  • 演算子とデータ型、配列(1)
  • 制御構文
  • 関数、変数のスコープ
  • 構造体
  • ポインタ、配列(2)
  • ファイル分割
  • プリプロセッサ
  • 入出力
  • ビット演算
  • 移植性
  • あまり使わない機能
  • リファレンス
    • 文法の要約
    • 予約語一覧
    • 標準ライブラリ一覧

言語処理系のインストール方法や使い方は直ぐに時代遅れになってしまうので、Webで公開する。もっとも中身は「こんなコンパイラがありますよ」程度で、それ以上は各自でググってもらう。

個々の説明は大胆に増やしたり消したりする。「#include 」とかオマジナイで片付けないで最初に簡単に説明しておき、後で詳しく説明する。一方で「変数って何?」とかは省く。だって他言語経験者向けだもん。

C言語の機能で説明を省いたものは「あまり使わない機能」として後回しにするか、リファレンスに投げる。もしくは「規格書をダウンロードしろ」「プログラミング言語Cを読め」「CプログラミングFAQを参照するんだ」「CユーザのためのANSI C言語大辞典でも見ろ」としてしまう。これぞ外部参照――嘘です、ウソ。

まあ売れなさそうだ。未だに本屋の棚に「C言語によるプログラミング入門」みたいな本のスペースがそれなりにあるのも不思議だけど。

*1:C99ベースの入門書って、今どれくらいの需要があるんだろう?