理想的なプログラミング言語

みなさんは,「理想的なプログラミング言語」という言葉を聞いた時にどう考えるでしょうか?僕らのようにプログラミング言語を作っている人たちからすると,とても切実な,いつも頭の中で考えている話題なのですが.でも,普通の人から特に「プログラミング」をやったことのない人からすると,考えたこともないような話題ですよね.

これが例えば,「理想的な日本語」とかになるとちょっと意味が違って来ますね.「あの人の日本語は理想的だね」というのは,標準な日本語が共通概念としてあるという話です.プログラミング言語を作る方からすると,一つに決めるというより,どんどん新しいものを作ってゆく上での目標がある,みたいなものでしょうか.

似た表現だと「理想的な自動車」がいいかもしれません.事故が起きないとか,乗り心地が良いとか,燃費が良いとか,運転する人共通の目標の他に,人それぞれの好みがありますよね.運転を全部支配したいのか,極力運転から忘れたいのかとか.「私にとっての理想的な自動車」という言い方になるでしょうか?

同じように「理想的なプログラミング言語」にも,いろんなプログラミングとの接し方よって違って来ます.長距離トラックやバス・タクシー,子供の塾の送り迎えに使う車,週末のドライブ,全部理想が違うのと同じです.たとえば,ウェブのシステム,ゲーム機やスマホのゲーム,銀行のシステム,それぞれ求められているプログラミングが違います.

さて,プログラミング教育における「理想のプログラミング言語」はなんでしょうか?

これも簡単な問題じゃないのです.自動車学校だと,トラックの運転手,タクシーの運転手,自家用車,全部,教習の内容が違いますよね.受けに来る人の意識も違う.小学校のプログラミング教育の人たちが「プロを育成するわけではない」ということを何度も繰り返し説明していますが,つまり誤解が多いと言うことです.

その前に,僕は,実はプログラミング教育の為にビスケットを作ったのではないのです.「子供にとって理想的なプログラミング」の為に作りました.

「教育」の難しい,陥りやすい罠は,「できない」状態から「できる」状態への変化を強調してしまうことでしょうか.そして,ビスケット以外の子供向けプログラミング教育はほとんどが,「子供にとっての理想」を追求するより「できない状態からできる状態への変化」を追求してしまっています.きまって,どんな力が身につくのか,といいますからね.やっていることは,このツールを使うと,この教え方だと,使えるようになるよ.ということです.子どもへの理想は二の次です.そのあたりのズレが,「プロを育成するわけではない」を連呼する原因なのではないかと思ってます.

これによって2割とか半数くらいの子供はその教え方についてこれるので,できる状態に変化しちゃうんですよね.その子供や親は気分がいいでしょうし,教えている人も気分がいいですよね.ただ,確実に嫌いになる子供もでるでしょう.塾でやる分にはいいですが,公教育の中でやるのは勘弁してほしい.

もちろん,理想を追求した上で,それができるまでは待てないという状況で仕方なしにやる分にはいいかもしれません.でも,理想を追求する態度だけは持ち続けてほしいです.

で,長くなりましたがこれまでは前置きで,ここからが本題.

まず,僕が考えている,「一般的な理想的なプログラミング言語」というのは,「何かをやりたいと思って,それをこうやったらできるかもしれないというやり方が思いついて,その通り作ってみたら,思い通りに動いた」という一連の流れ.この中のストレスができるだけ少ないものだと思います.さらに,一回でうまくいかなかったときに,修正方法がすぐに思いついて,それを繰り返して,どんどん思っていたものに近づいてゆきます.理不尽なエラーで思考が中断されるのは論外です.ここで,やりたいと思うことの分野がWebなのかゲームなのか,で言語が変わって来る.

ビスケットの場合は,画面上で絵を動かす,という課題に特化してます.で,重要なのは,上の文章に「子ども」の視点がつきます.「子どもが何かやりたいと思って」「子どもがこうやったらできるかもしれないというやり方が思いついて」と.つまり,「画面上の絵を動かす課題に対して子どもの視点からみて理想的なプログラミング言語」と言えば良いでしょうか.

他のツールが理想的ではないというのは,どうしてかというと.ほとんどが「抽象化」がプログラミングの本質というところからスタートしています.抽象化は,大人向けのプログラミングでは必須ですが,子どもの発想に従ったものではない.子どもと一部の大人は,抽象的に物事を考えるのが苦手です.その人たちには具体的なもので「間接的」ではなく「直接的」に指示する方法が必要です.なので,ビスケットには変数もメソッドもないのです.でも,ちゃんとプログラミングできます.僕自身の経験では,もちろん僕はバリバリプログラムがかけますけれども,ビスケットの直接的な抽象化をしないプログラミングは楽に作れると感じます.癒しになります.

さらに,子どもはどう考えるか,ということは本を読んだって書いていませんから,実際の子どもが作ってゆく過程とか,失敗を修正する様子とかを観察して,そこから汲みとるしかありません.

ビスケットの言語仕様は,そうやって子どもの発想を最優先して少しずつ変化しています.すこしずつストレスがなくなって来ます.

ぜひ,ビスケットの「子どもがやりたいと思って,作ってみて,思い通り動いた」の中のストレスの少なさを多くの方に知っていただきたいと思います.

シェアする

  • このエントリーをはてなブックマークに追加

フォローする