初めてのプログラミング自学自習
プログラミングを始めてみようという人が自学自習するにはどうしたらいいだろうかと思ったので少し書いておく。
ファイルを操作したり、フリーソフトを自分で使ってみたりという基本的なコンピューターユーザーとしてのスキルと、Web での検索ができることを前提としておく。
■準備
作りたいものを考える
できるだけ早い段階で、作りたいものをイメージすること。勉強中にそのプログラムに必要な情報を仕入れることができると助かるからだ。
流行っている言語から入る
まず、プログラミング言語を選ぶ。簡単かどうかよりも、流行っているかどうかを基準にした方が後々楽になる。流行っていない言語は資料もFAQも少なくて苦労する。
プログラミングを学ぶときの苦労は、 文法の理解と資料を探すことに費やされる。資料の絶対数は個人の力で変わるものではないので、言語を選択する場合にはこの点を注意すること。
開発環境を手に入れる
次に、開発環境を手に入れる。最近はただで手に入るものが結構あるので、それを使う。開発環境が複数ある場合には、言語と同様メジャーなものを選んでおくこと。
資料を探しておく
言語の名前で検索し、まとまった内容をもったweb サイトをいくつか探しておくこと。同時に、資料をスクラップしておけるソフトを持っておくこと。ツリー型メモ(アウトラインプロセッサ)や、その他メモ整理用のソフトが適任である。書籍は欲しければ買ってもよいが、web から収集した方が手っ取り早い。
■文法を理解するとき
最近のプログラムを学ぶときは、二つの部分がある。一つは文法で、残りは定義済みの命令の集まりであるライブラリだ。簡単なプログラムを作りながら、文法を学んでいって、ライブラリやサンプルプログラムを読めるようにしておこう。
このときには二つの側面について注意しながら進める。
一つは、意味である。プログラムを見ると、その意味がすぐ出てくるように、プログラムの意味を自分の言葉に翻訳すること。
もう一つは、どんな細部に対しても、それは何かということをはっきりさせること。点一つであってもそれが何かチェックすること。
例を見てみよう。
変数があるとする。それはどのような型か。その変数の有効範囲はどこか。アクセスレベルはどうか、などをしっかり確かめること。
C++,C#,Javaなどのプログラム中の関数名やクラス名などは、初心者には似たようなものに見える。どちらも前に型名がきて、後ろにブロックを表す{}がくる。どの括弧がどの種類のブロックを表すか分かるようになること。
.NET framework などのクラスライブラリを使用する場合は、ドットが沢山出てくる。.NET の例であれば、
System.Windows.Forms.Form.Text
を見て、どれがクラスを表し、どれが名前空間を表し、どれがプロパティを表すのか区別できるようになること。
これらを推し進めて、可能な限りおまじない-意味も分からず書いておくような部分-を極力減らすこと。
不自然な書き方で理解しづらいと思ったら、なぜこんなことをしなければならないんだろうという疑問を持ち、そこからプログラムの設計者の意図を読んで、その言語でのプロクラムの書き方の作法を知ること。
■アルゴリズムについて
自分がしようとしていることをくどいといえるほどに細部に分割してゆくこと。そして、どういう条件で繰り返したり分岐するかに腐心すること。
また、どのような変数が必要になるか、どのような関数が必要になるかを想像してはプログラムを組むということを繰り返して、必要な変数はどのようなものになるか自然と分かるようにすること。
■ライブラリについて
文法を把握した後、どのような検索語でライブラリに関する情報が得られるのかいろいろと検索してみること。
目当ての命令を探し出したならば、それを使って似たようなプログラムをいくつか作って、その命令を使いこなしていくこと。
ライブラリ関数は他人が作ったものなので、どのように動くか把握しづらい。リファレンスをにらんで、どのような条件下でどのような動作をして何をアウトプットするのか確認すること。また、その関数の主たる使用法にあわせて、副作用について知っておくこと。
■デバッグについて
よくあるエラーとエラーメッセージが何をいわんとしているかを知ること。またどのようにエラーを起こしてしまいがちか体験し記憶すること。文法エラーを克服したら、作ったプログラムが意図した動作をするかどうかに焦点を合わせ、プログラムを修正すること。変数の挙動がおかしいときには、途中で変数値がどのような変遷をするかを表示させて、原因を探ること。