株式会社わくわくスタディワールド

株式会社わくわくスタディワールド

プログラミングは遊び ~おすすめ本 C言語編~

わく☆すた,美月です。


私にとって,プログラミングはとっても面白い「遊び」です。
多分,私だけじゃなく,結構多くの人が,そう感じてるんじゃないかとも思ってます。
3度の飯よりプログラミングが好き,と言う人も実際いますし,趣味でプログラミングをやる人もいっぱいいます。
特に,プログラムが動いたときの快感は,何事にも代え難いぐらい気持ちいいんじゃないかと感じています。


ってことで,私の中では「プログラミングの勉強」って,実はあんまりしっくりこないのですが,自分がどうやって学んできたか,また,こういうのはおすすめ,ということについてお話ししたいと思います。


**********


私が始めてプログラミング言語を覚えたのは,小学5年生の時,言語はBASICでした。
こんにちはマイコン」というマンガで,「自分でタダでゲームが作れるなんて,すごい!」と思って,夢中になって覚えました。
最初に完成させたプログラムは,イコールを3つ並べた”===”で,ボール”○”を動かす,シンプルなブロック崩しもどきでしたが,「自分でプログラムが組めたーーー!」ということで,めちゃめちゃ感動しました。


うちはナショナルの代理店だったので,中学の入学祝いに,当時出始めたMSXのナショナルCF-2000というパソコンを買ってもらいました。テープレコーダにプログラムを保存して,いろいろ遊びました。(ゲーム中心ですが。^^;)


大学生のとき,サークルの先輩がやっていた会社で,プログラミングのアルバイトをしました。
そこで,「C言語を覚えろ」ということで,いきなりK&Rの「プログラミング言語C」を渡されました。読んでもわけがわからなくって,「C言語っていったい何?」とかなり悩みました。
この本は,後で使えるようになってくると,バイブルですし,辞書としてすごく重宝する良本なのですが,当時はまったくわからず焦りました。
結局,やっと出始めたC言語の入門書,「C言語入門,シニア編」(この本の古いバージョン)で学んで,なんとか使えるようになりました。


その後,大学の研究や会社に入ってからのプログラミングはC言語が中心でした。
なので,ひととおりのことはできるようになりました。
でも,ハード系のことはちょっと苦手だったので,なんとなくポインタとかメモリの動きに関して,「いまいちわかってないなぁ」という感じをもっていました。


そのあたりの疑問を払拭してくれたのが,「C言語ポインタ完全制覇」という本です。
これは,中上級者向けだとは思いますが,かなりくだけた口調で,面白おかしくポインタの本質が書かれています。
実際のメモリの動きを例に取りながら,ポインタとはそもそも何なのか,メモリ上でプログラムはどのように動いているのかについて,事細かに実例を挙げながら説明してくれ,目からウロコが落ちました。
情報処理試験に良く出てくる,「ヒープ領域」や「スタック領域」,「関数の戻り値」などについて,本当に理解できたのはこの本のおかげです。


というわけで,私の経歴,というかC言語までのプログラミングの学習はこんな感じです。


**********


C言語に関しては,新人研修などでもよく教えるのですが,正直,集合研修で1つ1つ文法を講義するのは,ほとんど役に立ちません。


文法を学ぶことと,実際のプログラミングができることの間には,大きな壁がありますし,プログラムを組んでいれば,文法なんてそのうち覚えます。
そういった意味で,言語系は,「やさしい~」とか「~の絵本」とかは,あまり役立たないんじゃないかと感じてます。さらっと最初に一読するのにはいいとは思いますが,こういうのを読んでも,プログラムを組めるようにはならないと思います。


必要なのは,「プログラミングの考え方」「少し大きなプログラムの作り方」「定石」などです。
私としては,以下のような,文法を学ぶのではなく実践的な本が,おすすめです。


C言語体当たり学習徹底入門」・・・実際に,BMIを計算するプログラム,蔵書管理プログラムなどを作りながら,C言語の書き方や基本を学ぶ本です。はじめてじゃない初級者ぐらいにおすすめです。


C実践プログラミング」・・・デバッグの仕方,コーディングスタイルなど,実は必要になってくることがしっかり詰まっている本です。私はこの本を片手に,いろんなテクニックを覚えました。プログラミングの考え方を理解するのにおすすめの本です。ただ,決してとっつきやすくはないですし,初心者向けではないので,一度見てから買った方がいいです。


C言語は,ハードウェアを制御するときにも使えますし,コンピュータの中身を知って,プログラミングの考え方の本質を身につけるには,最適な言語です。
昨日もお話ししましたが,情報処理技術者試験の応用情報技術者~高度情報技術者あたりを勉強するときには,C言語の素養が,すごく役立ちます。


ってことで,できれば勉強という形じゃなく,パズルを解いたりゲームをやるような感じで,プログラミングを楽しんでみてください。