書き込みありがとうございます。正直、ちょっとびっくりです。
# ていうかここでMatzにっきにリンクしたのは一度や二度ではないのですが、
# この話題で書き込みいただけるのはびっくりというか。
>>これにはいまいち賛同しかねるんですよねえ。サンプルで見かけるプログラムで
>>「初心者向きでない機能」が使われていると、おっかなく思う初心者は大勢いそうです。
おっかなく思う初心者がいるから言語からその機能を抜くとすれば、以下の問題が
発生すると思います。
a)おっかなく思うような難しい概念を抜きにして、ゲームとかを作りたいと思う
初心者が達成したい要件を実現できるかどうか。
b)おっかなく思うような難しい概念を抜きにして、上級者の要件を満たせるかどうか。
おっかない機能を抜いても、a), b)の両方を満たしているのであれば、文句なしだと
思います。そりゃ本当の上級者は別の言語を使ったほうが「よりよい」かもしれませんが、
そういう「よりよい」言語との間に十分な「のりしろ」があるなら、初心者も
シームレスに移行できるのではないでしょうか。
>>こちらにある、「「初心者(だけ)のための言語」ってのは駄目だと思っている」
>>という意見にも賛成します。
これ↑に矛盾すると思われるかもしれませんけど、要は程度問題で、いずれツールの
移行を余儀なくされるとしても、その時の抵抗が少ないのであれば、許容されるのでは
ないでしょうか。HSPやN88BASICはこのへんが…
# と言いつつ、HSPやN88BASICで苦労した経験は、その後他の言語のありがたみを
# 理解するのに有用かもしれない、とも思ったりもします。この苦労を知らずに
# 大人になると、「グローバル変数が便利だったから、あちこちで使った。」に
# なりかねないわけで。
> * サンプルで扱おうとしている概念そのものが難しい
> * サンプルの作者が難しく表現してしまった
>
>のいずれかで、それを言語のせいにするのはどうかと思います。
たとえば、私が[719]で書いた「マウスを追いかけるボールのプログラム」には、
初心者がおっかなく思う機能はそんなにないと思います。「サンプルで扱おうと
している概念そのものが難しい」わけではないのではないでしょうか。
でも、同じことをJavaでやろうと思ったら、継承やオーバーライドやインタフェースや
スレッドを知らなければならないわけです。以下のページは、そういう意図で
書きました。
http://kmaebashi.com/zakki/zakki0027.html#lang
イベントリスナを実現するために内部クラスや匿名クラスを使うのは
「サンプルの作者が難しく表現してしまった」のかもしれませんが、それ以外の点に
ついては、Javaでは避けようがないでしょう。
>それに初心者がおっかなく思う危険のある機能を取り除いた言語っ
>てのは、結局実務に役立たずで学ぶ価値のない言語になりそうです。
まつもとさんも、Cが「実務に役立たずで学ぶ価値のない言語」とは思いませんよね?
現状でCが難しいのは、実行時のチェックがないためとんでもないバグが出ることと、
宣言の構文やポインタと配列の妙な交換性にあると私は思っています。
前者は多少効率を犠牲にすれば回避できる話ですし、後者は単なる言語のバグです。
こういう点を改良したCもどきは作れると私は思っていて、crowbarは、ある意味
その実装のひとつのつもりです(型無しだったり、プロトタイプベースだったり、
クロージャがあったりするのはアレですが)。
こちらにも、
http://www.rubyist.net/~matz/20040925.html#c05
| 文字列型が違和感なく扱えて、便利そうな関数がもっと多くて(?)、引数が常に値渡しであるC言語最強、と思う。
という意見が出ていますが、「とりあえずオブジェクト指向は要らんな。」
「構造体も要らん。」「変数は全部グローバル。」という意見には賛同しないものの、
初心者にとっておっかない機能を除きつつ、それなりに実用に使える「落としどころ」
は、どこかにあるんじゃないかと私は思っているわけです。