初心者にものを教えるには、効率的にやるよりも、失敗経験を積ませよう
初心者にプログラミングを教えるには?
最近、初心者向けにプログラミングを教えることを考えています。サンプルプログラムを作ってみたのですが、それを説明しようとすると難しい。なんでこういった作りになってるの? と聞かれたら説明が長くなってしまいます。すると初心者にとってはどんどん分かりにくくなってしまうのです。
そこで私は、自分が初めてプログラミングをしたときのことを思い出してみました。
最初は4行のポケットポケットコンピューター
私が初めてプログラミングを行ったのは大学生のころでした。理系とはいえ化学科だったので、コンピュータープログラム関連の授業を受けたことはありません。でも実験などで必要かと思い、SHARPのポケットコンピュータを購入しました。4行表示で幅が20センチ程度、厚さが2センチ程度あり、かなり重たいものでした。3万円くらいしたでしょうか。ちなみに当時はまだWindows95 も出ていない時代です。ポケットコンピュータのオプションの増設メモリは500MBとかで5000円くらいしたと思いました。メモリーも高価だった時代です。
そのポケットコンピュータは、BASICでプログラムを作って実行できるものでした。私はプログラミングを習ったわけではありません。インターネットでググるような時代ではありませんからポケットコンピュータの附属のコマンドのマニュアルだけが頼りです。読んで自己流でプログラムを作ってみました。でも私はプログラミングの基礎を知りません。たくさんあるコマンドの中での使い道が分からないものがたくさんあります。使い方がわかるコマンドだけを使っていました。
最初に作ったのは実験のデータ整理に必要な、最小二乗法という計算のプログラムでした。これは多数のデータを入力して、グラフにプロットしたときに最も近い直線の式を求めるというものです。計算方法は実験のテキストに書いてあったので、データを繰り返して入力して変数に取り込むところを作ればすぐにできました。
どんどん進化した野球ゲーム
その後、野球ゲームを作り始めました。最初はサイコロを転がしてヒットとかホームランとかが出るようなイメージの簡単なものだったのですが、ランナーと得点機能がつき、打順によりヒットとホームランの確率が変わるようになり、代打機能がつき、プロ野球3球団(メモリー不足で3球団が精一杯でした)の選手名とデータを反映し、さらには三球勝負のピッチャーとバッターの対戦モードまでつけました。対戦モードではストレート、カーブ、フォーク、チェンジアップの球種を o で表示した球を動かして投げさせました。ずいぶん進化したものです。
自己流でプログラミングしたので、最初は下手くそなプログラムでした。ですが改良を加えるうちに私は賢くなってきました。サブルーチンを使った方が便利だ。変数名を個別に定義するよりも配列変数にした方が便利だ。メンテナンスしやすい作りにしないとあとで苦労する。ドキュメント(ただのメモ)を残しておかないとあとで分からなくなる。そういった、プログラミング教室に行っていれば必ずならうであろう常識を知らずに作って失敗し、身をもって大切さを知りました。そうやって作り上げた野球ゲームは私にとっては大きな価値があるものでした。こういった経験って大切ですよね。
ポンコツなプログラムを作らせよう!
自分の初めてのプログラミング体験を思い出して私は方針を変えました。初心者に教えるときは最初から完成形のプログラムを見せない。サブルーチンや便利機能を使わずにまずはベタでやることを書かせる。自分が最初に作ったポンコツのプログラムをまず作らせる。そこまでなら初心者でもなんとかいけるはず。
そのあとで便利機能を一つづつ教えていく。最初から王道を目指さない。まずは難しいことは考えずに、効率とかメンテナンス性とか考えずにベタなポンコツプログラムを作ってみる。その方が分かりやすいしおもしろいんじゃないかな、と私は思いました。みなさんはどう思いますか?
7月29日に東京で、初心者の親子にエクセルVBAプログラミングを教えるイベントを開催する予定です。ただいま計画中。
あべっかんでした。
※「初めてのプログラミング体験 -簡単だった野球ゲームが進化した!」
コメント
仲澤@失業者
SHARPのプログラム電卓というとピタゴラスですかね(うろおぼえ)。
自分が使ってたFx-502P(CASIO)よりはBASICが使える分だけマシだったかも。
ほどなく各社から8bitパソコンが出始めたので一気に興味はそっちに持ってかれましたけど。
結局FM-7を買っちゃいましたし。
初心者には、プログラムを教える前に読解力を養ってもらわないといけないかもしれません。
質問の意味が通じない場合が多いですからね。
abekkan
>仲澤さん
ピタゴラスという名前ではなかったですね。特に愛称はなかったような。
それが一度盗まれたんです。入れていたポーチごと。泣く泣く買いなおしました。上位機種にアップグレードして。
プログラムを読める読解力が一番必要なのかもしれませんね。私にはありませんが!