C言語関係:
個人的な経験から、よくあるC言語の入門書の流れには疑問を持っています。というのもプログラムの書き方を覚えた(BASIC)ときの順序が、簡単な文法→実際に動くプログラム(簡単なものを作る、人の書いたものを眺める)→欲しいものを作るためにBASICのリファレンスマニュアル、という流れだったので。アセンブラやCは入門書が手元にあったのですが、プログラムソースを見て覚えた感じです。
最近話題になる、Processing や Arduino も、そんな感じだと思っています。VBA や Visual BASICなんかの入門書も。それに、言語を問わず実際にプログラムを書けるようになっている人たちをみると、色々な情報源(マニュアル(ヘルプ、そこにあるサンプル)、雑誌、ネットニュース、人のプログラムソースなど)のレベルも内容もばらばらのものを吸収して育っているようにも思います。
なので、C言語のリファレンスマニュアル(Arduinoの言語リファレンスに近いもの)を探していました。それで分かったのは
- C コンパイラ(たとえば HI-TECH C)によっては、ちゃんとマニュアルに書かれていること、
- 英語ですが、Dennis M. Ritchie氏によるC Reference Manualが公開されていること、
- 日本語だと石田先生訳の 「Cハンドブック」(共立出版社)があること、
プログラミング作法的な話:
情報処理学会の会誌で紹介されていた京大での講義で使われているという Structure and Implementation of Computer Programs (SCIP) という本。数値に名前をつけると言った基本的なことから、段階を追っていて古典と言われるだけはあるなと思いました。Lisp (Scheme) で例題が出ているので、CとかBASICで演習したいときに教科書にはしにくいですが、数値積分とかも短く書けていてLispが今でも有効な面があるのが分かります。Computer Science のコースや機械系などでも学生に理解力があるなら、複数言語に手を出した方がいいでしょうしね。
計算機構造の理解:
実際に計算機がどう動作しているかという話は、抽象的な説明の本が多く、具体的な説明が省かれることが多いです。これも有名な本(でも手に取ったことはなかった)に、David A. Patterson,John L. Hennessy著, 成田光彰訳, コンピュータの構成と設計 第3版(上/下), 日経BP があります。MIPSベースで詳細かつ具体的(Cからハードウェアまで)です。
論理回路からALUの設計、マイクロプログラミング(CPU内部に使われる)までの話なら、大川善邦,ディジタル回路,コロナ社 が、あります。 この本で講義を受けたのですが、ボトムアップに作っていくのは面白いです。簡単な論理回路を作ったことがあり、アセンブラでプログラムを書いたことがあるなら、上の本より分かりやすいかもしれません。