プログラムとはなんぞや(序章)2019年07月21日 13時06分57秒

何でも小学校でプログラミングが教えられるようになるらしい。

何でも人材が足りないから小さいときから仕込んでおこうということらしいけど、実際の所、そういう事を職業にしている人間から見ると、本当に人が足りていないのかどうかはわかりにくい。なぜなら、確かに私のやっているiPhone向けアプリの開発者はなかなか出てこない。でも、客は経費削減からそもそも開発人員を切り詰めようとしてくるから必要数が増えない。だからわかりにくいのだけど、少なくとも代わりになる人間が居ないので私がやっていけてるということも多少あるとは思う。

いきなり脱線したけど、そんな市場状況はどうでも良くて、プログラムを組むということ、そういう思考ができるということはとても大切なことだと思う。なので、それを子供の頃から叩き込んでおくことは、単にプログラムを作れるということだけでなく、物頃を理路整然と話できる能力が身につくという意味で、非常に重要なのだ。

それが出来ると、感情だけで暴走する連中が減るのではないかと思う。韓国のアホ大統領なんて全く論理思考がないし、京都アニメーションを襲ったキチガイもそうだ。

また脱線。

プログラミングを理解する上で、いちばん大切なこと。
プログラムを作れるということは、決してプログラム言語を覚えることではない。それは、仮に英語なり日本語なりのすべての単語と文法を覚えても文章が書けないのと同じ。

そこんところを勘違いしてて、他業種にいた人が、なんか今プログラマーが人手不足らしいからちょっと本を読んでやってみよう、と来る人もいるのだけど、はっきり行って全く使い物にならない。

プログラムを組む;もっと正確に言えばプログラムを設計できるということは、「ある目的を達成するために、必要手順を論理的に組み上げていく」ことである。

それは1冊の小説を書くのにも似ている。だからプログラムは理系よりむしろ文系の方が向いていると思う。

・・・

最初なんで、まずはわかりやすい喩えから。

例えば、大阪から京都に行くのを目的とする。じゃあそのためにはどういう道筋をたどるべきか。

殆どの場合、ここに1つまたは複数の条件が加わる。
例えば第1条件を「鉄道を使って」として、第2は「最速で」とか「最安で」とかだ。「最安で最長で」というのもありかもしれない。

例えば最速なら新幹線、最安なら阪急だろうか。
それをプログラム風に書くとこうなる

大阪 
 ↓
if (最速) { [新幹線] }
else
if (最安) { [阪急] }
 ↓
京都

if ()はその条件、{}内はその条件が成り立ったときにすること、[]内は存在するものを使うと考えてほしい。
elseは2つ以上の条件が同時には成り立たないという印だ。

こういうふうに目的と解決手段を考えるのがプログラミングの基本である。

しかし、実際にはもっと細かく考える必要がある。
「京都」「大阪」とは書いたが、それを細かく設定すると変わってくる。
例えばこうだ。今度は新幹線を除いておこう。

switch (京都)
case 京都御所
 if (最安) { [阪急] }
else
if (最速) { [JR]}
[京都市営地下鉄]

case 四条烏丸
 [阪急]
// [JR」[京都市営地下鉄]と比較すること

case 出町柳
[京阪」

switchはその詳細がいくつかに分かれるときを示し、caseはそれぞれの場所と考えてほしい。//より後はコメントだ。注意すべきこととかを書いておく。

異常事態への対処もプログラミングの重要な要素だ。
例えば途中で列車が止められた時、回避策はどうすべきか。

if (JR止まる) {
if (高槻より大阪寄り) {
  大阪に戻って阪急に乗る
} else {
// 高槻より京都寄りである
  高槻に戻って阪急に乗る
}
}

などなど、プログラミングをするということは、どんどん細かいところまで考えていって、最終的に誰がそれを読んでも出発地から目的地まで行けるような手順書を作ることなのである。

それでも、昔に比べれば最近のプログラム環境は非常に良くなっている。さっきの例で言うなら、今はもう新幹線や阪急はあるものとして考えれば良い。昔は、その交通手段、さらにはそのレール、走る車両まで全部一から作らなければならなかった。いやまあ、その分行ける距離も短かったと言えるけど。すべてを一から作るのは面白いし、すべてを理解できるのは喜びなんだけど、とても大変だ。あるものを使うというのは、どうしても冗長になるので遅くなったりするのだけど、今はもうそれらは環境を取り替えることでなんとかする時代になった。
PCの速度にどんどん早くなったのはそのせいだ。プログラミングは楽になったけどその分譲調整の為遅くなるから、それはマシン側で補おうと。昔のプログラムでは最適化や高速化というのは必須課題だったんだけどね。

っちゅうことで、プログラミングとはなんぞやということの基本中の基本がわかってもらえただろうか。

もしこの記事に反響があるようならもっと深淵を書くかもしれない。

プログラムミングは、最初こそ思考の仕方を変える必要があるため苦労を伴うかもしれないが、一旦それが出来るようになればそれほど難しいことではない。


まあ、実際には言語だけで動くものはなにもないので、その環境とかについても知らなきゃいけないんだけど、それはずっと先の話。

言語を覚える前に思考方法を覚えよ。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
今年は西暦何年?(全角で2022)←更新しました

コメント:

トラックバック

このエントリのトラックバックURL: http://otakura.asablo.jp/blog/2019/07/21/9131549/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。

(C)おたくら編集局