最近はプログラミング学習をコースに取り入れている塾が増えてきました。
僕もプログラマーの端くれですので、今回はプログラミングとはどんなものなのかを説明すると同時に、なぜ、「理解すると1つの答えが導き出される」のかを説明したいと思います。
プログラミングは人間が「どのように考えて答えを出しているのか」を正確にコードに書かなければなりません。
「どのように考えて答えを出すか」というのは「情報処理」という言葉で置き換えることが出来ます。
このような情報処理のもっとも小さな塊を「関数」と言います。
一度「関数」を書くと、次からはこの「関数」に「値」を放りこむだけで次からはプログラムが絶対に間違えることなく同様の処理を行って答えを出してくれます。
前回の「関係代名詞並び替え」という「関数」を作ってみましょう。日本語ではエラーになりますので、プログラミングらしく関数名はkankeidaimeishi_narabikaeにしたいと思います。ただし、関数の中身は分かりやすいように日本語にします。
kankeidaimeishi_narabikae(引数){
・
・
・
}
これで、関数の出来上がりです。
answer=kankeidaimeishi_narabikae(引数);
この関数の引数と書かれているところに、並び替えする単語を代入するとanswerという変数に戻り値として答えを代入してくれる訳です。
answer=kankeidaimeishi_narabikae(引数);
今後はkankeidaimeishi_narabikae(引数);という関数の引数にいろいろな単語を入れるだけで、答えを出してくれるようになります。
人間が物事を考えて答えを出している過程はこのような情報処理をして答えを出しているのです。プログラミングとはそれを文法に従って、可視化しているだけに過ぎません。もちろん、プログラミングはここまで単純ではありませんが、基本的な考えは変わりません。
ここで重要なのは「答えを覚えることに何の意味もない」ということです。
地頭の良い人は、この「関数」のコードをより良くしていきます。例えば、関数の中にエラーの処理を作れば、主語が無かったり、動詞が無い場合にはエラーを吐くように出来ます。必要以上に単語がある場合にも、その単語を特定して排除するコードも書くことが出来るでしょう。この関数を良くすることによって、どんな単語を入れても完璧な答えが導けるものにしていくのです。
勉強とは関数をアップデートしていく作業なのかもしれません。
ちょっと、プログラマー的な感覚ですが、面白い話だったのではないかと思います。
僕は本当に手作業でデータ入力するときに、「あーー、馬鹿馬鹿しいなぁ」と「どうかして、この作業を自動化出来ないか?」とよく考えます。
勉強が出来ない子はひたすら単純なデータ入力をし続ける。
地頭の良い子はそれを処理するための「関数」を作ろうとする。
関数に必要な情報というのが「記憶の幹」「核心にあたる情報」なのです。