C言語のお勉強

晴。
午前中は基本をやる。
昼から米屋。肉屋。

C言語をもう少し使えるようにしようとちょっと勉強しているが、昨日 C言語の言語仕様そのものは問題ないなんて書いたけれど、いやいやかなりむずかしいですね。なかなか全体像が頭に入ってこない。プログラミングで大切なことのひとつは「抽象化」だと思うのだが、オブジェクト指向プログラミング(OOP)ならシステマティックに抽象化できるところを、OOP の使えない C ではどうやるのか、まだいまひとつイメージがはっきりしてこないのである。僕は基本的に思いついたらその場でコーディングしていく、典型的な「ボトムアップ型」のプログラマだと思うのだが、これを C でやるといわゆる「スパゲティコード」(ぐちゃぐちゃにこんがらがったコード)にすぐなってしまいそう。あと、OOP ではデータ構造をクラスで表現すればよいわけだが、C ではどうやるのだろうかとか。構造体とか typedef とかなのかなあとも思うが、見てのとおりよくわかっていない。むずかしいですよ。例えば Ruby の方が遥かに簡単ですね。
例えば PC と 5回じゃんけんで勝負して、勝ち負け引き分けの結果を判定するという、まあ子供の遊びみたいなプログラムを Ruby で書いてみると、自分はこんな風に OOP で書いたが、C言語だとどう書くとすっきりするか。もちろん何でも実装すればいいというならそれほどむずかしくないのは明らかだが、Ruby でわざわざ OOP を使ったのも意味がないわけではないのだよね。いや、C だったら余計なことは考えずにまず実装してみるか。とにかく「つべこべ言わずにコードを書け」だからね。
書いてみました