Wait a moment...

人類にプログラミングは早すぎる

34767
和泉
nem19.35xem (4)
282
10
2019-11-17 15:41:39
人類にプログラミングは早すぎる

 

そもそも最近の子どもはパソコンやるの? 小学生が? ニンテンドースイッチとかスマホぽちぽちが関の山じゃないのん?

というか今、子どもがいる家庭にパソコンがあるの? ニューカマーはスマホですべてやっちゃうんじゃない?

僕の会社の新人は家に自分のパソコンがなかったりしていたよ?

 

なんてことはともかくとして、必修科目となるプログラミング。

僕も子どもがいる身としていずれ考えなきゃいけないことなんだろう。

 

「パパ―、プログラミングってどうやるの?」

 

「知らん! 先生に聞いてくれ!」

 

 

そんなわけでちくぽかさんのイベント参加記事です! よろしくお願いします!

 

 

なにをしたいか?

 

小学校でやるプログラミング教室っていうのがどういうものなのかはわからないのだけれど、

おそらくは「理屈」を教えるんだよね?

 

まさかコードを書くわけでもないし、COBOLとかFORTRANがどうとかいうわけでもないよね?

 

僕みたいな凡夫がプログラミングの話をするだなんていっても、特にむつかしいことはわかんない。

たぶん、グラフィカルに楽しく学べる教材(スクラッチ等)は誰かが紹介しそうな気がするし。

 

僕が紹介できる面白いことっていったらこういう話ぐらいかな。

 

そんな冗談はさておき。

 

プログラミング教育っていう意味ではわからないけれど、

プログラミングをするうえで僕が思う、「こういう考えをしているといいことがあるかもなぁ」なんて話をしようと思う。

 

小学生の教育では「プログラマー」を育てたいわけじゃないよね? あれ、どうなんだろう。

 

 

僕はコンピュータみたいなものである

 

プログラムってどんなんかっていうと、

「こういう風にこうしちゃってよー! ほら、ね? よろちく☆ミ」

で動く。

 

意味が分からないね。

 

 

人間っていう僕らの体も、プログラムで動いている。

 

以下の図を見てほしい。

 

おわかりいただけただろうか?

 

上記の図は、僕がかわいこちゃんを見たことにより、日記を書こうと思ったという図である。

おわかりいただけないね?

 

上記の図は流れが悪いから、以下のように書き直します。

 

 

これは言い換えると、こういうことになる。

 

かわいこちゃんの光景を、

僕に入力すると、

僕が日記を出力する。

 

これが、これこそが、プログラミングである。

 

なにかというと工場のようなもので、

「もとの何か」を材料に「求める形」に変更する。

そのプロセスをコンピュータ上で実現するのがプログラミング、というやつである。

 

 

もっとほかの例を挙げれば、

お腹が空いているという感覚と、家系ラーメンを

僕に入力すると、

僕はラーメンに関する日記を出力する。

 

でも、

お腹がいっぱいの感覚と、家系ラーメンを

僕に入力すると、

僕は何も出力しないわけである。

だって、食べたくないからね? 日記だって書きたくならないわけで。

 

そういった形で「なにがしかの情報をあたえて」「なにかを出力したりする」のだけれど、

その間に条件を付けるのがプログラミングだったりするわけです。くどいね。

 

 

ふるまい

 

さきの例では

美少女を僕に入力すると日記を出力する

なんて挙げたけれど。

 

コンピュータはそんなことわかんないんですよ。

コンピュータに「僕が美少女を見るとね~」なんて話しかけても、なんだこのクソチンパンは? って顔されるのがオチです。仕方ないね。

 

僕ら人間は利口だから言語化しなくてもわかるのだけれど、クソコンピュータどもはクソ無能だから、事前にふるまいを決めてやる必要があるわけです。

 

上でいう

美少女は美少女というモノで、

日記は日記という主産物ですね。

ふるまいというのは、「僕」の行動です。ラーメンの話も同じ。

 

そんなわけで、ふるまいを事前に決めてやる必要があります。段取り、と呼んでもいい。

 

また、伝わらないたとえ話になってしまうのだけれど、

 

湘南の生まれの、腹痛の波に乗ってばっかりいるサーファーである僕としては、いつもトイレの位置を気にしてしまうわけなんですよね。

 

僕の頭が空っぽだとします。

 

そうだとしたら、猛烈な便意に襲われた場合、そのまま垂れ流してしまうわけですよ。

 

便意→出力

 

としてね。

 

でも僕も人間の端くれ。抗いたいわけです。では、どうするか?

 

/************************************************/

 

便意を入力

 

自宅にいる  → トイレ

電車内    → 次の駅へ待つ → 次の行へ

駅にいる   → トイレ

会社     → トイレ

その他    → トイレを探す → 見つかった → トイレ

                → 見つからなかった → 次の行へ

 

出力

 

/************************************************/

 

こんな感じになるわけです。雑ですが。

その他の場所にいて、トイレが見つからなかった場合のみ、無残な出力をするわけですね。

 

 

もうちょっと真面目にね。

 

小学生からしたら「こいつ、クソの話しかしてねーじゃねーか!」とか言われそうなので。

そもそも「プログラミング=楽しい」といった感覚を子どもに思ってもらえるんだろうか? 興味も。

 

僕はプログラミングは楽しいと思っているのだけれども。

 

プログラミングは正直言って、大して意味がなくても面白いものだとは思う。

ピタゴラスイッチって面白くない? コンピュータ上でそれが再現できるんだよ? みたいな。

 

さて、ここまで挙げた例は特に何の用も為さない。

 

プログラミングって具体的に、どういうことが出来るようになればいいの?

というと、つまらない例だけれど、こういうことかな。

 

例えば、僕は毎月のお小遣いをコンビニとか遊びとかで使っていたりするのだけれど、

ふと「あれ、毎月いくらぐらい、何に使っているんだろう?」と思う事もあるかもしれない。

 

そのときはほら、プログラミングだよ。困ったときはプログラミングよ。

あ、Excelなら簡単だよ? っていうのはなしね。。。。

 

僕が先月使ったお金が以下の通りだったとしようかな。

 

2019/10/1 小遣い支給 30000
2019/10/1 ランチ -500
2019/10/1 飲料 -160
2019/10/2 ランチ -620
2019/10/2 飲料 -160
2019/10/3 ランチ -300
2019/10/3 飲料 -160
2019/10/3 服飾費 -3000
2019/10/4 ランチ -980
2019/10/5 ランチ -658
2019/10/5 飲料 -160
2019/10/6 ランチ -192
2019/10/7 ランチ -58
2019/10/8 ランチ -885
2019/10/1 飲料 -160
2019/10/9 ランチ -2000
2019/10/10 ランチ -420
2019/10/11 ランチ -600
2019/10/11 ゲーム購入 -5980
2019/10/11 飲料 -160
2019/10/12 ランチ -800
2019/10/13 ランチ -654
2019/10/14 ランチ -582
2019/10/14 携帯 -1600
2019/10/14 飲料 -160
2019/10/15 ランチ -548
2019/10/16 ランチ -548
2019/10/17 ランチ -621
2019/10/17 ゲーム購入 -5980
2019/10/18 ランチ -980
2019/10/19 ランチ -658
2019/10/19 服飾費 -3000
2019/10/20 ランチ -192
2019/10/20 飲料 -160
2019/10/21 ランチ -58
2019/10/22 ランチ -885
2019/10/22 ゲーム購入 -32800
2019/10/23 ランチ -2000
2019/10/23 飲料 -160
2019/10/24 ランチ -420
2019/10/25 ランチ -600
2019/10/25 ゲーム購入 -5980
2019/10/26 ランチ -800
2019/10/27 ランチ -654
2019/10/28 ランチ -582
2019/10/28 服飾費 -3000
2019/10/29 ランチ -548
2019/10/29 飲料 -160
2019/10/30 ランチ -621
2019/10/31 ランチ -980

 

こうやって張られたところで何よって話なのだけれど、

これを何に使ったごとに集計するにはどうすればいいかな?

 

例えば人力で計算しようとする。できなくもないからね。

 

そうすると上記のデータは日付ごとに並んでいるから、

ランチ、飲料、ランチ、飲料……って集計先を変えていく必要がある。

面倒だよね。面倒じゃない? あっちこっちに加算して回ることになるのよ。数字も一律じゃないしね。

 

というわけで、自動的に計算しちゃおうぜ! 的なものを以下。

 

#define C_COL_INIT "99999999"
#define C_VAL_INIT 0

notesel data

// ファイルの読み込み
noteload "F:\kodukaidemo.txt"

// 集計結果保持用
dim Columns, 8
dim Values, 8

// 集計結果保持用の初期化
repeat length(Columns)
	Columns(cnt) = C_COL_INIT
	Values(cnt) = C_VAL_INIT
loop

// ファイル内容を全て取り込み
repeat noteinfo(0)
	noteget record, cnt
	records(cnt) = record
loop

// 内容の集計
repeat length(records)
	dim date
	dim col
	dim val
	dim useColumnIndex
	dim loopCount

	split records(cnt), " ", date, col, val

	loopCount = 0

	repeat length(Columns)

		if (Columns(loopCount) = C_COL_INIT) {
			Columns(loopCount) = col
			useColumnIndex = cnt
			break
		}

		if (Columns(loopCount) = col) {

			useColumnIndex = cnt
			break
		}
		loopCount += 1
	loop

	Values(useColumnIndex) += val
	
loop

// 集計結果の出力
repeat length(Columns)
	if (Columns(cnt) = C_COL_INIT) : break
	mes Columns(cnt) + ":" + Values(cnt)
	total += Values(cnt)
loop

mes "-------------------"

mes "total:" + total

 

伝わるかはわからないけど、謎のクソコードです。さらに謎の言語ですね。

今何かと話題のHSPじゃないほうのHSPだよ。Highly sensitive personじゃなくて、Hot Soup Processor。知らないね、ごめんね。

 

これの結果はこうなります。

 

 

 

見事なトータルマイナスですね。

 

さっきの1か月の使用金額は50件程度? なのだけれど、

それが100件どころか1万件でも、ファイルにして保存してしまえばプログラムを実行するだけで計算できちゃいます。

初めは面倒だけれど、あとは楽。

 

こういう風に用意しておけば、二度と手動で集計なんてしなくて済む。最高だぜ!

 

たぶん、プログラミングで大切だと思う事

 

小学生にプログラミングを習わせる目的と、大切なものとしては、別にコードなんてどうでもよいんだろうと思う。

 

プログラミングなんて枠じゃなくて、どちらかというと「段取り」ができる・想像できるようにするというところが大事なんじゃないかな? って。

 

しょうもないことをグダグダと書いている記事なのだけれど、

少なくともこの記事を書くにあたって「どういうことを書こうかな。それにはこういうことが必要かな」ということを先に考えていて。

(それが上手か、さらには伝わるかは僕の技量の問題なので、大変申し訳ない点なのだけれど)

 

記事自体の内容を組み立てるうえで

・プログラミング教育を考える

・無駄でもコードがあるといいよね

・しょうもない例を文章で示せるといいよね

・あとは冒頭の文章どうするかな

ということをまず考えて、この記事の段取りとなっている。

 

結果、プログラミング教育は全体を表しているから除いたとして、

 

・冒頭文

・しょうもない例

・コード

 

なんて構成になる。

この段取りを揃えることができるようになれば(あとは根気)でプログラミングなんて、なんとかなるんでないかな? 小学生の間は。

 

先ほどのコードも内容なんてどうでもよくて、大事なのはコメント部分(//で文頭が始まっている行)。

// ファイルの読み込み

// 集計結果保持用

// 集計結果保持用の初期化

// ファイル内容を全て取り込み

// 内容の集計

// 集計結果の出力

みたいな、何をどういう順番で、というのを先に想定することが大事なんだなって。

 

そして別にこれはプログラミングに限った話でもなくて。

 

どんなことでも、目的に対してどんな段取りでやろうか? って考えるのは非常に大事なことだと思うんです。

x+y=10なんだとしたら、xとyには何がはいるのか? 何を入れればいいのか? ということを考える力をつける。そういったところ。

 

社会人になってたまに思うのは……まれに、そういうことを考えない人がいたりとか。わかんないけどね。僕が感づいてあげられないだけなのかもしれないけれど。

 

「あれをやんないとなー」というところから、それを実現するために「どうすればよいのか?」を組み立てる。

たぶん、それが小学生レベルでのプログラミング教育なんじゃないかな、と思ってるんですよねー、僕は。

 

僕が子どもにプログラミング教育をするのであれば、そういうことをしたい。

 

とはいえ、

 

人類にプログラミングは早すぎる

 

というよりも人類にプログラミングなんて無理だ。

 

そもそも教育自体がプログラミングなわけですよ。

 

子どもに

「お前はきょうからカレーしか食べるなよ!」

なんて意味不明なことを言ったところでカレー以外も食べるにきまってるし、

 

「うちではゲームは禁止だよ!」

といったところで、一人暮らしでもしようものならゲーム狂になるかもしれない。

 

「毎日1時間は勉強して!」

なんて話をしても勉強するとも限らない。

 

子どもは好きなことに興味をもって、そればっかりやるし、思った通りに育つわけじゃない。

※もちろん親の影響がまったくないわけでもないけれど。

 

親はさらに親からプログラミングを受けていて、それが完全に守られているかなんていうと、そんなわけじゃない。

何を、どうするかは結局、子どもが自分で興味をもって、手を出して、選択していっての結果なわけで。

 

せいぜい、一緒にオセロでもやって、

「ここで取ったらどれだけ取れる?」

「ここが一番取れそうだね」

「でもほら、そうすると次の人はここに置くと思うよ。それでぜんぶ、ひっくり返っちゃうもの」

なんていうのが関の山よ。

 

だからせいぜい、「想像力を養え」ぐらいしか、まぁ、ないよね。

常々、そう思っています。

 

それよか、僕はできないけれど、

料理でも覚えさせたほうがいい気がする。

 

何を作りたいか?

そのために必要な食材、準備、できればレシピを書けるといい。

たぶんその想像力のほうが、なんにでも役に立つ。

 

 

Comment
和泉
和泉
2019-11-19 08:29:37ID:160011

>>ほなねむ@魔眼のほなコロ::さん
太宰治は素敵ですね!

ほなねむ
ほなねむ
2019-11-19 07:27:03ID:159991

太宰治は言った
「日常の生活に直接役に立たないような勉強こそ、将来、君たちの人格を完成させるのだ。何も自分の知識を誇る必要はない。
勉強して、それから、けろりと忘れてもいいんだ。覚えるということが大事なのではなくて、大事なのは、カルチベートされるということなんだ。
カルチュアというのは、公式や単語をたくさん暗記あんきしている事でなくて、心を広く持つという事なんだ。
つまり、愛するという事を知る事だ。
学生時代に不勉強だった人は、社会に出てからも、かならずむごいエゴイストだ。
学問なんて、覚えると同時に忘れてしまってもいいものなんだ。
けれども、全部忘れてしまっても、その勉強の訓練の底に一つかみの砂金が残っているものだ。
これだ。これが貴いのだ。」

和泉
和泉
2019-11-18 08:23:07ID:159823

>>ちくぽか::さん
ありがとうございます!
コードはたぶん酷いものなので、内容は当てになりません。
あと、もしプログラミング全般であれば、HSPよりもいい言語はたくさんありますからね!
この言語が教育に適しているかはわかりません。作る環境が貧弱ですし。

目的までの段取りを組むっていうのは、少なくとも僕はそう思っています。
もちろんオシゴトではそれだけじゃなく、もっと他にも難しいことはありますが、子どもに教育という話ならそこかなーなんて。

教育は大事ですが、その通りには行かないですよね。

将来の夢が魔法少女、いいと思います! 
僕もなりたい!

和泉
和泉
2019-11-18 08:14:23ID:159820

>>matsuno::さん
媒体!? やり取りしてナンボってことかしら……。
だとしたらその通りかな、と思います。

ちくぽか
ちくぽか
2019-11-18 01:38:02ID:159805

最後まで変なおじさんのクソの話で来るかと思ったら結構マジな奴やった!
しかもコードまで載せてくれてて、かっこいいっす!!

プログラミングのイメージから具体的に何がどうなるのかまでよくわかりました。
目的までの段取りを組むんですね。
HSPのサイトも見てきました。ご紹介ありがとうございます。
子供向けの入門講座などもされているようなので、何が起きているのかチェックしたいと思います!

でも学校でも家庭でも、「教育」自体がナンセンスというのは、すごくわかります。
良かれと思って、与えようとして損ないそうなので
うちの場合では、魔法少女になっていくのを静観しています(*^_^*)

ちくぽか
ちくぽか
2019-11-17 21:49:09ID:159762

和泉さんが来てくれて嬉しい~!😆
先に参加賞投げます!
後でまたコメントします~

matsuno
matsuno
2019-11-17 19:41:33ID:159739

>>和泉::さん
言葉の本質は媒体だなと思いました。

和泉
和泉
2019-11-17 19:33:17ID:159738

記事に書き忘れたんですが、プログラマーには三大美徳というものがあります。
https://moneyforward.com/engineers_blog/2016/02/08/engineers-virtue/

怠慢、短気、傲慢
これを教育するとなったら、だいぶ悪い子になりそうですけどね。

和泉
和泉
2019-11-17 19:31:14ID:159736

>>matsuno::さん
ありがとうございます! 長くなってしまいました。

matsuno
matsuno
2019-11-17 17:52:08ID:159732

わかりやすい!

この記事を書いた人
湘南のポエマーを目指しているおじさん。 「実行力のあるやつはプレイヤーだ。実行力がないから、ポエマーなのだ」 ポケットの中の少ないNEMと共に、未来を見つめたいと思っています。