プログラミング教育について、ちょっと考えるきっかけとなったこの記事。
やまもといちろうさんの記事で、彼の場合は「やりたいこと」が先にあって、それを実現するために、人に聞いたり独学したりしてプログラミングを覚えていったということ。
それはとても美しい話。
かたや私は、(小6の時に本を見ながらMSXにBASICのプログラミングを打ち込んで、書かれた通りに出力されることに喜んでいた時期を除いては)大学(情報工学科)に入ってからプログラミングを「習った」。
でもそれなりに、楽しかった。アルゴリズムを考えるのも、ソースコードを書くのも、デバッグするのも(ときどき時間がかかりすぎて辟易したけど)、それなりに楽しめた。
やまもといちろうさんが書くように最初に目的があった方がいいのはもちろんなんだけど、私の大学時代のように「何ができるかよくわかんないんだけどとりあえず組んでみなされ」的な学び方でも、楽しくなる人はいる。
なぜ楽しくないのか
先日ある若い女性(リケジョ)と話していて、彼女は大学時代にプログラミングが苦手だったという。
「電卓でやった方が早いようなことをプログラミングしろって言われても」
と、言っていた。
その時はなるほどねーと思ったけど、自分を振り返ると、それでも楽しいような気がする。
アウトプットという概念
小6でBASICを入力したときにどんなことを感じたのか。わざわざ言語化はしなかったけど必死に思い出してみるに、アウトプットというのは大きな壁だということ。
中でぐるぐる計算して、結果は出ているのに、それだけでは確認する術がない。コンピュータが何をしたのか、結果をアウトプットしなくてはいけない。
こんなにたくさんの文字(ソースコード)を書いたのに、目に見える結果(アウトプット)はほんの少し。そこには少しがっかりした。
見た目はしょぼいなと思ったけどそこは子どもの想像力で、美しいインタフェースを心の中で補完した。
大学で再度学んで感じたのは、プログラミングには明確な出口があって、「アウトプット」という、「中での計算」と別の世界がある。いくら計算ができても、アウトプットするためのコマンドを知らないと、何も意味を成さない。
Excelの関数では、これを感じないと思う。計算だけしておけば、勝手に出力してくれるから。
一方で、動かしているだけの人からすると、アウトプットが全てだ。
自分のコントロール下でアウトプットできる
プログラミングの勉強をし始めた頃、私はその「アウトプット」のコマンドに、ロマンを覚えたような気がするのだ。
水面下でやっていたものが、ぽろっと出てきた、という喜び。中の世界と外の世界がつながったような感覚。自分のコントロールで、出力できるんだ、ってことが、嬉しかった気がする。
それは、物を作って「見えるもの」にするのと似ているんじゃないか。
私は今でも、つい作りたくなってしまうものがある。ちょっとしたラクガキとか、消しゴムはんことか。昔だったらビーズとか、編み物とか。
形にすることで、自分と外界がつながる。妄想がリアルになる、という感じ。
そんな風にプログラミングを好きになる人もいるんだってことを、ちょっと書いてみたくなったのでした。