C言語 プログラミングの始めはコピペからでいい

  • このエントリーをはてなブックマークに追加
Pocket

C言語のプログラミングを習得していくうえで、私が実際にやってきた方法をお伝えしようと思います。その方法は、ズバリ、コピペです。

コピペなんかで習得できるのかと思われるかと思いますが、スポーツでも料理でも、できている人のまねをして身につけていきますよね。

プログラムも同じです。実際に出来上がっているプログラムをコピペして、その内容をプログラムを実行しながら学んでいくのです。

とりあえず、プログラムをコピペして現状を把握する

まずは、気になるプログラムを見つけたら、コピペします。それから、じっくりとプログラムを読み込みます。

そのときに、どういうことを実現しているプログラムなのかを知っておいたほうが理解が早いです。

考えてみてください。何の料理を作るのかを知らされてない状況で、何でこの作業をやっているのか、わからないですよね?何の料理を作るのかを知っていると、なぜ、この作業をするのかが理解できますね。

これと同じで、プログラムもこういうことを実現させているというものがわかっていると、こういう処理があって、こういう流れになっているんだな。ということが理解しやすくなります。

私は、今ではエレベーターのプログラムを開発するプログラマーですが、学生時代は、数理情報という分野でしたが、もうそれはそれは、プログラムが苦手でどうしようもありませんでした。

プログラムの課題は、友人にコピーさせてもらって、提出しているありさまでした。もちろん、内容を理解しているはずありません。

転機が訪れたのは、大学院に行ってからです。というのも、卒業論文は複数人の共同作業だったので、苦手なプログラムは共同作業者に任せて、私は机上の計算ばかりすることができましたが、修士論文のときには一人ですべてをやらなくてはならない状況になったため、プログラムをやらないわけにはいきませんでした。

まさに追い込まれた状況だったのです。

結局、今までコピペで作っていたプログラムを、まじめに理解し、修士論文で必要なプログラムの要素は身につけられたので、なんとか論文を完成させることができました。

このことから、コピペばっかりしていては、自分でプログラムを作るという力はつきません。
つきませんが、よほどのジャンル違いのプログラムを新たに作るということがない限り、今まで作り上げてきたプログラムが、何の参考にもならないということはないということもわかったのです。

したがって、始めのうちは、プログラムをコピペして、内容を理解するということでいいと思うのです。

プログラムに書いてあることが理解できなければ、実行して理解する。

プログラムをコピペして、内容を理解できれば、それでいいのですが、どうしても人の書いたプログラムなので、すべてを理解することは難しいと思います。

こういうときの解決策は、実際にプログラムを実行させてみて、どの処理がどのように作用するかを見るのが早いです。「百聞は一見に如かず」ということです。

動かしてみてもわからなければ、デバッガというものを用いて、プログラムを1ステップずつ実行させてみて、処理の流れを見ることもできます。

デバッガが使えないなら、要所要所にprintf文を盛り込んで、その出力を追いかけるということもできます。

この2つの方法を用いれば、大抵のプログラムの内容は理解できるはず。前提にC言語の文法を把握しているというのはありますよ。
わからなければ、書籍やネットで調べれば、出てくるはずです。当サイトでも最低限の文法は解説しています。

それでもわからないというのなら、コピペ元の作成者に教えてもらうことです。
開発者は頼られるとうれしいものなので、喜んで教えてくれます。

開発者は黙々と作業をしていることが多いので、だれかと話したいなと思うときもあるのです。私なんか、下手したら、だれとも話さずに1日が終わるなんてこともありますよ。これは、忙しすぎる日本社会のせいなのかもしれませんが…

プログラムの内容が理解できたら、今度はいよいよ、自分でプログラムを書いてみる番です。

プログラムを変更してみて、動作を確認する

プログラムをコピペして、内容を理解したあとは、そのプログラムを自分でアレンジして、実際に作ってみましょう。

うまく作れなくてもいいです。プログラムを書いてみるということに意味があります。プログラムを書いて、コンパイルして、エラーが出たら修正し、再度コンパイルする。という作業の繰り返しなります。

これは、始めのうちは仕方のないことです。エラーなく、プログラムを書くこと自体が難しいからです。

プログラムにエラーがなくなったら、ここでも、先ほど書いた実際に動かしてみて、自分の思い通りになっているか確認します。

また、最終目的まで、いきなり作る必要はありません。まずは、最低限やりたいことができているかを確認するべきです。そうしなければ、結果的に、プログラムの修正箇所が多くて、完成までに時間がかかってしまうことがあるからです。

いきなり与えられた課題を完璧にプログラムできることは、まずありません。

なので、ある程度イメージで作って、実際に動作させます。そこで、自分が思っていた動作と違っていたら、プログラムを修正し、また動作確認をするということの繰り返しです。

そうやって、一つの課題をクリアしていきます。これは、私が現在やっている手法です。机上であれこれ考えても、限界がありますし、机上考えていても、プログラムが正しく動作するなんてわかりませんから。

まさに行動することです。スポーツにしろ、料理にしろ同じだと思うのです。野球だったら、バッターに対して、このコースのこの球種だったら、打たれないだろうけど、コントロールミスしたら、打たれてしまうかも、どうしよう。とか考えていても仕方ないじゃないですか。

実際にどうなるかなんて、投げてみないとわからないですよね。結果、打たれたなら、次打たれないように対策する。打たれなかったら、この選択は正しかった。ということですよね。

料理でも、「あーしようかな、こーしようかな」って考えているだけじゃ、料理は出来上がらないですよね。実際に手を動かしていかないと、料理は完成しないですよね。

プログラムも一緒です。動かしてみないとわからないのです。自分では完璧だと思っても、実際に動かしてみると、この場合はダメだなとかいうのはよくあります。

したがって、まずはいいとこ50%ほどの完成度で、動かしてみるというのが、結局早く完成する近道だと私は思います。実際、私はこの方法でやってきて、残業したことがほとんどありません。数年に1回あるかどうかです。

確かに、考えることも必要ですが、考えすぎても時間ばかり過ぎて行って、結局、何も進んでいないということになってしまいます。周りを見ていると、考えすぎているんじゃないかなと個人的には思います。不必要に会議が長かったりしていますしね。

だから、あなたは、50%程度の完成度で、どんどん動作確認していきましょう。

まとめ

私が、C言語のプログラミングを習得するために、実際に行ってきた方法をお話ししました。

コピペからやれば、いいんだなと思えば、楽じゃないですか?

もちろん、ずっとコピペだけで、実現したいプログラムは完成させられません。やはり、コピペした内容を理解することで、そこから派生したり、手直ししたり、追加したりすることができると思うのです。

新規に何もない状態からプログラムを作るという機会は、ほとんどないと思います。現状、エレベーターのプログラムを作っていますが、流用できるところが非常に多いので、流用して作っています。

これはどういうことかというと、コピペの方法が使えるということです。限られた時間内にプログラムを完成させるというプレッシャーの中で、やっていくにはそれが最善だと思います。

したがって、参考にできるプログラムをそのままコピペして流用し、それを編集していって新たなプログラムを作るというやり方が、今の忙しい世の中でやっていく効率の良い方法だと、私は思います。

  • このエントリーをはてなブックマークに追加

コメントを残す

*