プログラミング学習?

記事
学び
こんにちは、こんばんは、おはようございます。

少しずつですが、このココナラブログは更新していきたいと思っています。
スマホからも更新出来れば頻度は上げられるのですが、
それまでは少しずつ少しずつと思っています。

さて、今回のタイトルにもありますプログラミング学習ですが、、、
小学生のこどももおりますが、まだ教科書も見ていない為どんなものかわかりません。
プログラミング学習を行うにあたっての見解など色々な場所で記事が書かれ、
学習に向かって不安のある方なども多いと思います。

まず、タイトルとは少しずれてしまいますが、私の出品サービスに書かれているSE(システムエンジニア)について説明させて頂きます。
簡単に要約すると、システムエンジニアはお客さんの要望に応える為に必要なシステムを作る為の設計図を書く事が主な仕事となっています。

プログラマーはシステムエンジニアが作った設計図を基にプログラミングを行っていきます。
ゲームに例えるとプログラマーの上級職がシステムエンジニアです。

なので、システムエンジニアにはプログラミングの知識が必要になります。
私自身もプログラマーから始まり、システムを理解し、システムエンジニアとして設計図が書ける様になりました。

まず、お客さんには、
「あそこをああしたい」
「ここをこうしたい」
などの要求があります。
ここでの注意点は「ああしたい」「こうしたい」がシステム化出来るものかどうかの判断が求められる所です。

システムエンジニアは「ああしたい」「こうしたい」をシステム化するにはどうすればいいかを考え、システムを動かす環境や使う為のプログラミング言語などを決めていき、設計図を作っていきます。

システムエンジニアが作った設計図を基にプログラマーが各担当部分(規模によりますが)を担当し、プログラミングしていきます。

ここでシステムエンジニアである自分でも疑問なのですが、
「プログラミング学習」
、、、、、、、、、、、、、、、、、どの部分を言っているのかまだ始まってないので何を学習させたいのかざっくりすぎて訳がわかりません。

ただ、プログラミングに関して私なりの意見を言わせていただくと、
「考え方」
という部分が大きく関わってくるかな?とは思っています。

1を2にしたい場合、1+1を行えば2になりますが、
プログラムで行うには?
となると方法はいくらでもあります。
プログラムから少し離れ算数で表現しても、
1+0.2+0.8=2
でも1が2になっています。

人間は反射的に考え、実行してしまう事があります。
1を計算式を使って2にする方法を述べよ。
の様に複雑に言われると色々と方法を考えますが、
1を2にする方法は?
と簡単にするとほぼほぼの人が1足せば2になると反射的に答えると思います。
では、プログラムを行わないシステムを相手にした場合ではどうでしょう?
1+1=2
とプログラムには書けません。
また、書いてシステムに実行させて初めてプログラムが動くので、結果だけを書いてもプログラムを書いた事にはなりません。

例としてPHPというプログラミング言語で書くと、
$kotae = 1 + 1;
と書くと$kotaeの中に1+1の答えが収納されます。
勘の良い方だとお気づきでしょうが、$kotaeに収納されただけで終わりです。
システムは頭は良いし言われた事は壊れない限り同じ事をしてくれます。
上記したPHPのプログラムを何度実行してもシステムは$kotaeに1+1の答えを収納し続けてくれます。

では、1を2にする様なプログラムとなると言語にもよって違いますが、大体以下の事が必要になります。
分かりやすく書いているつもりですが、分からなければ飛ばしてください。
システムとはプログラムされた事は出来ますが、されていない事は何も出来ません。

1.「1」をプログラムの中に用意する。
  今回の例であれば問題ありませんが、1や結果の2を変えたくなった場合、プログラム自体を書き換える必要が出てきます。
  「プログラムに書かれている数値を変えただけ」でもプログラムが変わった事になるので、バグが無いかのテストなどはまた全てやらなければならなくなります。

2.「1」に加算して「2」にします。
  $1に1が入っているとすると、以下の様にPHPでプログラムすると1を2にして$kotaeに収納してくれます。あくまでも一例です。方法はいくらでもありますし、どれも結果は同じです。

  2-1
   $kotae = $1 + 1;
   $1に1を足して$kotaeに収納する。
  2-2
   $kotae = $1++;
   2-1と同じ事をしていますが、PHPでは++とプログラムする事で数値を1つ加算してくれますので、その結果を$kotaeに収納しています。
  2-3
   $kotae = $1 + 0.2 + 0.8;
   無駄に小数点のものを2個足していますが、$kotaeに答えを収納しています。
  2-4
   $kotae = $1 * 2;
   $1の中身は1のはずなので、掛け算で2を掛けた答えを$kotaeに収納しています。

3.「2」にした結果を通知します。
  上記したプログラムで2にしても結果を通知しないとプログラム内で2になっただけで何も表示されません。画面に表示するやメールで答えを送信するやTwitterで答えをつぶやかせたりしないと人間には$kotaeの中身はわかりません。

プログラムでは1を2にするだけでこれだけ大変な事になります。
ただ、1度作れば何度でも同じ動きを間違わずやってくれます。
パソコンの中ならクリックするだけ。
モバイルならタップするだけ。
何度でも1を2にしてくれます。

ここから私個人の意見ですが、プログラミング学習は例え「1を2にする」だけでも決まったやり方は無く、どうすればいいかを自身で考えなければいけない上にシステムに実行させられる形にプログラミングする必要があります。
「考え」そして「形にする(表現する)」
を最初は大切にしてもらえればなぁと願っていたりします。
小学生の息子が辞書の引き方を宿題で出され、検索の仕方は宿題で出ない程日本はITに関してかなり遅れているのでこれを機にITに関しても上級生や中学、高校などでどんどん学ぶ機会を増やして欲しいと思います。

注意して人に聞く様に言っていますが、息子が宿題をSiriに聞いているのを目撃した時は笑ってしまいました。
言葉を辞書に出てくる順番に並べ替える方法を教えるのと、言葉の意味を正しく検索する方法を教えるの、、、、、、、どちらがいいんでしょう?

ちなみに我が家の決め事は言葉にすると1つです。
「人にされて嫌な事はしない」
です。

下の子には自分が何かをしたり言ったりする前に自分がされたらどうかを「想像」して「嫌かどうかを判断」してから何かしたり言ったりしなさいと言っています。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す