初心者向け と 素人向け

なんでもかんでも「スキルの低い人」を「初心者」と呼ぶのは良くないんじゃないかと思い始めました。学ぶ気もなくそのままの自分でプログラムを作りたい人たちは「初心者」ではなくって、たぶんただの「素人」です。


まつもとさんの「初心者向け言語」に対する反論の中には、実は初心者ではなく素人を前提として話をしている風に感じるモノがあります*1。初心者がいつまでも初心者でいることは良くない事ですが、素人がずっと素人でいることは別に良くも悪くもありません。両方「初心者」にしてしまうと「後者いくない」に導出されてしまうため、そこで議論の前提が大きく変わってしまうと思うから、分けた方が良いんじゃないかな、と思ったわけです。

例えば、「素人向け開発環境」をつかって素人がヘマをしたら、それは環境側の責任(不備)ということで良いと思います。でも 初心者の失敗は(想定すべき事とはいえ)開発環境に責任を負わせるのは間違いです。「そもそも初心者はヘマをするものだから」と言うならば、そんなクリティカルなところを 初心者にやらせるなよ、という話だと思います。



さて、具体的な言語について考えてみると、「ひまわり」「なでしこ」は素人向け としてよく考えていると思います。特に「ひまわり」は素人向けだと私は思っています(なでしこはいろいろ「ちゃんと」しちゃったからなぁ)*2。抽象化機能を避ける*3というのもありますが、これら言語の代名詞になってしまっている「日本語風」というのも素人向けの施策の一つです。

素人向けの行き着く先にはツクール系も控えています。でも猫的には「ツクール」ではなく(ホームページビルダーに対する)Wiki や blog の位置づけの何かに向かうんじゃないかなぁと思っています。

一方「初心者向け」については、初心者専用言語みたいなのはあんまり出てこないような気がします。「間口が広い」なんていわれるようになるというか。ここら辺の位置づけには、スクリプト言語がもっともリーチを書けている、という認識なのですがホントの所はどうなんでしょう?

もちろん実際の所そうきれいにカテゴライズできるものではないので、単なる言葉遊びに成ってしまうかもしれませんが、「素人向け」という視点はあっても良いのじゃないかな、と思います。ただ、素人向け言語という呼び回しはたぶんあんまり良い印象を受けないので、イイ呼び名を考えないと定着しないと思います。

余談

Squeak eToys や Logo、(かつての) Smalltalk はこれらとは根本で違いプログラミングそのものを覚えることで、自身の思考をデバッグする力を身につける のを目的としていて、素人に容易にプログラムが作れるようにすることは目的ではありません。(モチベーションを落とさせないための手段でしかありません)ここらへんは、パパート博士の 「マインドストーム」を読むとよろしです。

これらは、学習向け言語と呼ぶべき?

*1:本文で「真の」とか「自称」とか断っているにも関わらず

*2:実は猫は ひまわり のほうが なでしこ より気に入っている...というのは秘密です

*3:ひまわりは、関数をサポートするのをズーーっと避けてきたし、なでしこの OOP 機能もなんとか難しくしないように気を配っている(クラスをグループと呼ぶなどなど)