daemonfreaks.com

C言語の勉強

posted by jun-g at Mon, 14 Apr 2008 02:59 JST

先月から、C言語の勉強を始めました。勉強の動機とC言語を選んだ理由は

  • そろそろPython以外の言語を覚えたい
  • せっかくなのでもうちょっと低レベルな言語を使えるようになりたい
  • 普段FreeBSD使ってるんだし、C言語使えた方が何かと便利じゃね?

という単純なものです。あと、個人的にC言語は「知ってて当たり前な言語」という印象があるので、知らない自分を恥ずかしいと思っている、というのも理由の一つです。

実はこれまでも何度か本を読んだりしてC言語を覚えようと試みたことがあるのですが、読んだ時に解った気になっただけで、数日経てばすっかり忘れている、といった感じでまったく覚えられませんでした。当然です。手も動かさずに本を読んだだけでプログラム言語を覚えられるわけがないのです。

という事で、今回はとにかく「手を動かす」事にしようと決めました。

教科書として、積読のC言語の入門書の中から以下の本を選びました。

C言語プログラミングレッスン 入門編―ANSI対応 (SOFTBANK BOOKS)
結城 浩
ソフトバンククリエイティブ
売り上げランキング: 327232

積読だけあって古いです。この本、今は改訂版が出ているようです。

新版C言語プログラミングレッスン 入門編
結城浩
ソフトバンク クリエイティブ
売り上げランキング: 13180

この本に決めた理由は、パラパラと見た時に、プログラム初心者向けに解説がとても丁寧に書かれているな、と思ったからです。僕はC言語の初心者であってプログラムの初心者ではないので、丁寧すぎる説明は少し冗長に感じたりもしましたが、「知ったかぶりせずに初心者の気持ちで勉強するべし!」と自分にいい聞かせて、出てくるコードを実際に入力、コンパイル、実行しながら読みすすめました。

で、ぐうたらな性格なので途中かなりダラダラしてしまったんですが、だいたい1ヶ月ぐらいかかって、昨日ようやく読み終わりました。途中、ポインタの章を勉強している時に、C/C++のポインタの機能--変数の場所(アドレス) - builder by ZDNet Japanの記事がアップされ、ちょうど勉強してるところだからツッコミどころが少し解った事が嬉しかったです。

ひとまず最後まで読み終わって、書かれている事に対して理解できなかった点こそ無かったものの、解説されていない部分に対する疑問もあるし、まだC言語の理解にはほど遠い状態なので、引き続き勉強を続けようと思います。具体的には、

  • より詳しい解説書を読む
  • 実際にプログラムを書いてみる

という2点を続ければ、手に馴染んで理解も深まるかなぁと考えています。

より詳しい解説書として、同じく積読の中に眠っていた以下の本を読もうと思います。

プログラミング言語C ANSI規格準拠
B.W. カーニハン D.M. リッチー
共立出版
売り上げランキング: 10987

この本は2年ほど前に途中まで読んだ事があるのですが、その時は読むだけだったので途中で理解できなくなって挫折しました。今回は実際に手を動かしながら読み進めたいと思います。

で、実際に書いてみるプログラムは、今はお題が思い浮かばないので、また後日ということで。

余談ですが、今回からブログの文体を「ですます調」に変えました。理由は、細かい発言はTwitterに投げる事が多いので、ブログは文体を含めてもうすこし丁寧に書こうかな、と思ったからです。本当は、書く頻度ももう少し多くしたいところですが…。