4月4日の日経夕刊生活面。「プログラミング創意工夫を育む」。この手の話は今さらなんだが、やはりちょっと違和感があるなぁ。子供でも取り組めるように、マウス操作でパーツを組み合わせてアニメーションを作ったりするのがメインのようだ。記事中で「スクラッチ」と書かれているScratchは、日経BPから本も出ていてそこそこ売れているらしい。
だから、興味のある人はいるんだろう。こういうのを否定しないし、きっかけとしてはいいと思うのだけれど、どうもそのあとのことを考えていないような気がする。
ブログ主が思うのは、子供の頃に流行った電子ブロック。アレは確かにいろいろな部品を組み合わせてラジオとかアラームとかいろいろ作れたけど、しょせんそこまでだった。もう一歩踏み込むところまで行かないと、エレクトロニクスの技術者にはなれない。
個人的な偏見で言わせてもらえれば、回路図を書いたり読んだり、ハンダごてを握ってモノを組み立てたりばらしたり、そういうことがないとその先がない。ブロックを組み合わせて何かできたね、楽しかったね、で終わってしまう。
プログラミングの場合(記事中でやっていることが果たしてプログラミングなのか?という疑問はさておき)、高度に抽象化された事柄だけを扱っていても、それは電子ブロックと同じで、プログラムのための思考法を身に付けるための訓練にはならない。
必要なのは、自分がやっていることがどのように作用して結果に結びついているのか、という理解である。想像力と言ってもいい。何だかわからないけど、パーツを組み合わせてグリグリやっていたら、何か動くものができた。楽しいな、で終わってしまう。
くどいようだが、私は幼少時の電子ブロックやスクラッチを否定しているのではないので念のため。取っかかりとしては素晴らしいし、こういうのを作っている人は尊敬する。
しかし、その先がないと、現実のソフトウェア開発とのキャズムが発生してしまう。現に、世界の一流IT企業のエンジニアは、すでに抽象化された事象を扱うというよりは、現実を逆に抽象化し、プログラムの世界に落とし込むということをやっている。
そう、プログラミングとは、いかに物事を上手に抽象化するかということなのだ。これは天性のセンスとも言えるが、育てることはもちろん可能だと思っている。そのためには、プログラミングにおける因果応報をきちんと理解する必要がある。そう、自分のやっていることがわかることが必要なのだ。
実際には、大人のプログラマでも、自分のやっていることがわかっているという人は多数派ではないだろう。何となくこう書けばこうなるようだ、といった程度の認識のプログラマが最近は多いと聞く。ならば、政府の後押しする高度なIT人材の輩出、世界のトップレベルのプログラマと渡り合える人材、そんなものは夢の夢だろう。
だからこそ子供にかけたいのだろうが、だったらもっとメカニックな部分に目を向けさせるべきだ。子供は好奇心と弾力性の塊だから、大人から見て「わかりやすい」とか「やさしい」とか「親しみやすい」というのは余計なお節介と思うのだ。
ということで、ちょっと強引だがやはりこれ(Legacy8080)は素晴らしいと思う。自分がコンピュータを操っているという感覚、それは重要だと思うからだ。幸いなことに、4月1日の発売以来、見込みとは桁違いの台数の注文が舞い込んでいるそうだ。聞けば、廉価版も出るというし、こういった「素の」コンピュータでの経験が、将来のビルゲイツやスティーブジョブスを産み出すのではないかと(受け売りだが)思っているのである。
株式会社 技術少年出版 8bitマイクロコンピュータキット Legacy8080 CP/M-80互換OS搭載、Z80上位互換CPU Z8S180 搭載
「Legacy8080」で検索すれば、多くのウェブ記事にヒットするので、深掘りしたい人はそれらを見てみるとよいと思う。