小学校でのプログラミング教育必修化を検討 文科省
http://www.asahi.com/articles/ASJ4M5D4GJ4MUTIL044.html
とか
プログラミング 必修化を創造力育てる一助に
http://www.yomiuri.co.jp/editorial/20160516-OYT1T50131.html
このプログラミング教育って、多分、手続型言語を教えるんだろう・・・
2020年なんて言ったら、人工知能でプログラミングが自動化できてるだろう。
あと4年もあるんだから。
そんなとき、手続型言語は意味がない。人工知能がやってくれるから。
そうではなく、目標を定義することが重要。それに近い宣言型言語のほうがいい。
■AIで自動プログラム生成する方法
人工知能でプログラミングさせるとすると、
ゴールを指定して、それを自動生成させるはず。
こんなかんじ。
【基本的考え方】
(1)今、あるゴールがあり、それを満たすプログラムを作りたいとする
そして、入力データと、出力結果となるゴールのデータセット
(JUnitにおける入力データとアサーションするデータ)
は簡単に作れて、作ってあるモノとする。
(2)ここで仮にゴールを満たすプログラムは存在するとする。
(3)そして、(2)で利用可能なクラス、メソッド、変数、定数とDB項目、演算子すべてに番号を振る。
(4)ここで、(3)のプログラムの「クラス、メソッド、変数、定数とDB項目、演算子」
を(3)で振った番号で表現する
(5)すると、数字の列がちりばめられる
(例 a=10*5;
定数10000まではそのままの数字、
変数aは10001
演算子は+が20001,-が20002,*は20003とすると、
100001 10 20003 5 と変形できる)
そこで、上から順とか、何か決まりをつけて、上記で降った番号を一列に並べる
→そうすると、遺伝的アルゴリズムでやった「遺伝子」に相当するものができる
(6)ゴールのデータセットを大量に用意し、それを満たしたら、得点を与えるようにする。
→これが遺伝的アルゴリズムでやった評価関数になる。
(7)よって、大量のデータセットと正しい「遺伝子」があれば、人工知能(遺伝的アルゴリズム)で
プログラムが自動生成できる。
【方法】
(あ)乱数で適当に数字を並べる→遺伝子
(い)大量の入力と出力結果を用意する
(う)遺伝子を(3)の番号→変数表に対応させてプログラム生成
(え)それを大量の入力と出力を使って評価
(お)評価の結果、有利になったものを残して、遺伝子を作る
→遺伝的アルゴリズム
できそうでしょ!
ここまできたら、あとはやるだけ。
人工知能学会の雑誌の来月号に
人工知能(遺伝的アルゴリズム)でプログラムができた!
という論文が載ってたとしても、ひとつも不思議ではない。
つまり、必要なのはゴール時のデータ、イメージなのですよ
(これは要求工学などでも同じ)
それがあれば、あとは乱数で適当に遺伝子を組んで、
自動生成まで持っていける。
で、話を元に戻すと
小学校で、自動生成できるような手続き型プログラミングの技能を教えても意味がない。
ってことになる