ちょっと釣りみたいなタイトルでごめんなさい。実は言語についての比較を行っている記事ではありません。「〜どの言語が良いか?」という設問に自体に対する考察です。
「〜どの言語が良いか?」これはプログラミング教育についてしばしば語られる論点です。「小学校段階におけるプログラミング教育の在り方について(議論の取りまとめ)」ではプログラミング言語を学ぶのではなく、プログラミング的思考を学ぶのだとしていて、そもそも言語論は展開されていません。しかし、実際の教育では何らかのプログラミング言語や環境をつかって教育する事が必要になるわけで、どうしてもそういう論点になってしまうわけです。
意味があると言えばあるし、意味が無いと言えば意味がない議論だと思います。
そもそもプログラミング的思考を学ぶという目的のためならば、どんな言語でも良いんですね。中にはグリコードの様なプログラミング言語の記号化をお菓子とその置き方にまで昇華?させたものもあります。それでもプログラミング的思考は学習できると思います。だから、言語論は意味がない。
しかし、プログラミング的思考がなぜ必要か?それは世の中のあらゆる商品・サービスがプログラミングと何らかの関わりをもって生まれ・運用されている時代を生きなければならない子供達に、その生きる術を身に着けさせる目的だったはずです。だとするならば、そのサービス・商品を開発するロールプレイを体験できる方が好ましいわけで、そのような発展のあるプログラミング言語・環境の方が好ましいということになります。そうするとプログラミング言語毎に実現できる範囲が違うわけで、プログラミング言語を選定することに意味があるということになります。
それでは発展性のあるプログラミング言語を見つける為に、言語を比較して一番良いものを選びましょう!・・・という訳にはいかないんですね。プログラミング言語・環境は道具です。なので、やりたいことによって使い分ける必要があるわけです。決して一つには絞れない。それぞれの特徴を理解して使い分けなければいけないと思います。
ビジュアルプログラミング言語、特にパズル型のHour of Codeなんかは、その開発者達が公言している通り、最初の体験に最適化されているので、クリエイティブに何かを作るものではありません。計算ドリルのプログラミング的思考版です。よりクリエイティブなビジュアルプログラミング環境としてはScrachが有名です。ところがScratchでロボットやセンサーの制御をやらせようとすると、結構ごちゃごちゃした操作になるわけです。そうするとIchigoJamをつかってBASICでプログラミングしたほうが実は教えやすいと思う面も多々あります。GoogleのMoonBlockの開発者達が今更BASICなんてレガシーな言語で教育するのはナンセンスだなんて叫んだりするわけですが、だからと言って大人でさえ本気で理解している人の少い最新のオブジェクト指向言語なるものを教育の現場でどう展開するのかなんて、ちょっと考えられなかったりする訳です。賢い子供にだけ教育すればよいのなら別ですけどね。BASICでじっくり学んだ後に、オブジェクト指向言語等のモダンな言語に進むほうが、スムーズにいく可能性は高いと思います。
私達プロの世界でも、ひとつの言語だけで飯が食えるなんて時代は遠い昔の話。バイリンガル、マルチリンガルは当たり前。新しいプロジェクト毎に数週間で新言語の習得なってこともザラに発生します。参考までに一介のシステムエンジニアである私がコレまでの仕事で使ったプログラミング言語をざっと思いつき限りあげると・・・
更にありますが、これ以上はマニアック過ぎるので止めましょう・・・
とにかく、プログラミング言語は道具なので、道具は適材適所で使っていかなきゃマーケットで勝ち抜く生産性は確保できないんですね。従って、未来を生きる子供達には目的に応じて道具(プログラミング言語・環境)を選択しなければならないことを、肌感覚として感じる事は非常に重要。だから一つじゃダメ。
実は色々なプログラミング言語やITツールを上手く選択・組み合わせる事自体もプログラミング的思考なんですよね。まず、私達大人がそれをできるようにならないといけないですよね。そして新しいものが生まれたら、柔軟に受け入れる。だって、今のプログラミン言語だって子供達が大きくなる頃には無くなって新しい物に変ってしまっているかもしれませんから。予測不能な時代に生きる力って大変です。