書店に行くと、プログラミング入門の書籍がたくさん並んでいます。
iPhone(XCode)、Android(Java)に加え、子供がプログラミングするのに最適と言われているScratchなど様々あります。
中には、「一週間でできる」「小学生でも理解できる」と銘打ったものもありますが、実際に購読して試してみるものの、挫折することも少なくありません。
身近だけど障壁も高いプログラミング。乗り越えるには?
実は「プログラミング環境の準備」と、「プログラミングツールに慣れる」という作業で挫折することが多いのです。
実際に多くの書籍は環境設定の説明にページの大半を裂き、肝心のプログラミングのコツはほとんど説明されてないものがあるのも現状です。
現在のプログラミング言語の一つにC言語というものがあります。
C言語は文法が比較的簡単で、ツールの使い方も容易であり、実用的なプログラムを作成するには実に最適な言語でしたが、現在主流となっている、タッチパネルに様々な文字や絵を表示するプログラム(GUI)を開発するためには、更なる開発ツールの追加が必要でした。
C言語が基本的に亜流がないのに対して、GUIツールにはたくさんの種類があり、また覚えるのも実に大変です。
肝心の開発言語を覚える前に挫折してしまうことも珍しくありません。
一方、GUIツールは一度その概念を覚えてしまえば比較的簡単に使えるのも事実です。
この障壁を乗り越えるためには、教室に通ってツールの使い方をしっかり学ぶこと。
これが一番の近道と言えるでしょう。
実用的なプログラミングに必要なセンスは?
実用的なプログラミングは、言い換えれば、誰でも安心して使えるプログラムを作るためには、プログラミングのセンスを磨くことが必要です。
ここで問われるセンスは2つあります。
GUIデザインのセンスと効率の良いプログラムを作るセンスです。
1.GUIデザインのセンスについて
ヤコブ・ニールセンという方が、誰にでも使えるプログラムを作るための指針というものを1990年代に発表しており、多くのデザイナーがその教えに従って画面のデザインを行なっています。
また、最近は色彩豊かなプログラムも増えてきていますが、より良いものにするためには直感も大事ですが、色彩に関する基礎概念も重要です。
2.効率の良いプログラムを作るセンスについて
いわゆる「アルゴリズム」と呼ばれるものです。
ある処理を行うためには、どのような手順で行えば良いのか。
簡単なものであれば比較的誰でもすぐに思いつきますが、例えばデータの並び替えを高速に行いたい、平均値の計算を簡単に行いたいとなった場合、昔から使われている「枯れた」アルゴリズムというのが存在します。
実際に「アルゴリズム辞典」というものも存在し、このような処理にはこのような記述を行う、という規則が半ば決まっています。
プログラミングの8割はこの規則を思い出して羅列すること、残りの2割は独自のひらめきといって良いでしょう。
このアルゴリズムの習得も、独学で学ぶよりも教室で教わった方がよりすんなりと理解できることに違いありません。
それは、書籍に書いてあることを無理に覚えるのではなく、なぜそのような記述を採用しているのか、また他のアルゴリズムとどのような点で優れているのかを、丁寧懇切に教えてもらえるからです。
今熱い!子供向けのプログラミング教室
今、子供向けのプログラミング教室の数が勢いを増して増えてきています。
ただし、プログラミング教室といっても、キーボードを使い、講義も英語で本格的にやるものから、画面に表示されたブロック状の命令を組み合わせてロボットを目標通り動かすことでプログラミングを体験する教室まで、様々なものが存在します。
子供のうちから実用的なプログラミングを学ばせたいということであれば、キーボードを使ってアプリを作るような教室が良いと思われがちですが、実はどのような教室であっても、基本的な教育方針は同じなのです。
それは、先に述べた「アルゴリズムの基礎」をしっかりと教えてもらえるという点です。
子供は試行錯誤が得意です。
この試行錯誤が、アルゴリズムの習得には重要なのです。
先に紹介したヤコブ・ニールセンは「探査学習」という言葉で紹介していますが、その時できること、できないことを、子供は先入観なく挑戦しているのです。
子供向けの教室では、最初から決まり切ったアルゴリズムを教えることは稀です。
まずは、子供が思ったようにプログラムさせて、その結果を目の当たりにさせます。
そして、それが自分の思い通りだったかどうかを考えさせ、違っていたらその原因を考えさせます。
子供の中には説明がうまい子供もいれば、まだ自分の理解をうまく言葉で説明できない子供もいます。
しかし、アルゴリズムを組み立てる作業というのは、頭と手で行う作業ですから、たとえ言葉が拙くとも、繰り返し作業していくうちに上達してゆきます。
従って、それまでは物事を理路整然と説明することが苦手だった子供が、プログラミングを通して得意になるということは、決して珍しいことではありません。
つまり、子供向けの教室は、単なる英才教育ではなく、考えを目に見える形として表現できる一つの手段なのです。