プログラム初心者って何だろう?

この間からだいぶ話題になっている初心者向け言語とPHPの話で(というより、その周辺で騒いでいる私のような人の間で(^^;))、微妙にずれている前提があると思います。
当のMatzさんは当初よりかなり意識的だったようですが、分散するうちにいろんな言葉が一人歩きしてるなぁ、と。

  • たまたまプログラムに手を出してみようと思った人の総称
  • 技術が足りないまま実務に入っている人

元々のPHPの話の意味合いでは後者ですね。その上で、PHPを使っている後者の人は技術に対する意識が少ないので、その原因はPHPという言語にあるのではないかという話でした。
私は元から前者で、後者は前者の部分集合だろうという立場です。
後者の立場の人を量産してしまうからPHPはちょっとという意見に関しては何もコメントしていません。
むしろ、後者の存在はこの際無視してハッカーハッカーだけで狭いコミュニティに籠もって研鑽した方がいろんな意味で幸せになれるだろう、という意見のみ表明しました。


教育としては、前者を後者にさせないためにいろいろ細工をしなくてはいけないと常々思っています。
前者はたくさん居た方がハッカーである私たちの立場からするとうれしいですし、後者に関しては、居ない方がありがたいです。
このためには、前者に対しては間口を広くとり、なおかつ後者になるくらいならさくさくあきらめさせるような手段をとる必要があると思います。純粋に、ハッカーの幸せを願うのなら。
PHPという言語は厳密さのかけらもないし(===演算子ができるまでは、引数をあらかじめチェックしてからじゃないと怖くて何もできなかったっけ)、処理に付随する面倒な何かはことごとく環境内に隠蔽されています。これは確かに、前者の敷居をひどく下げ、後者の向上心を奪います。
ただ、このイージーさ加減は、元々はハッカーの人たちが手抜き実装をしてもそこそこうまく行くようにするために、利便性を追求していったらこんなになっちゃったという事情はあると思います。
たまたまPHPで話をしていますが、PHP以外のすべての環境でこの傾向はあります。極端なところではDirectXは環境の差異やバージョン間コントロールをいろいろ極めていった結果あんなになっちゃったわけで、お便利関数群であるD3DXは本来ならば意識すべきいろんなことを意識しないようにさせています。
この辺の利便性の高さは、どれくらい人間にすり寄るかという意味での環境の高級さと同等と見なすこともできますので、PHPが使い捨てられる環境なのは、使い捨て手もさほど困らない言語の高級さがそこにはあると考えられます。
判っている人が楽をするために作ったツールをなにも知らない人が楽をするために使っても、問題は作り込まれます。問題は、なにも知らない人は、楽をしなくてもやっぱり問題を作り込み、そのかわり難しい環境ではそもそも問題すらも作り込めないというだけです。
高級な環境であればあるほど、スキルの低い人間を引き寄せたがり、スキルの低い人間でを現場に組み込んでからのていたらくはみなさんご存じの通り。
環境の所為ではない、とは、もう人の傾向としては言いづらいです。
まぁ、開き直られさえしなければ、人間、大概のことは習得できるんですけどね。どんな初心者でも。そういう意味では純粋な初心者である期間は決して長くない……はずなんだけどなぁ(^^;)。