Context Free Artは教育用途にむいているか?

id:TAKESAKO programming, cg 教育用に向いてる言語かな?

一言でいうと「NO」ですね。プログラミング言語を教える教材というより、どちらかというと「フラクタルジェネレータでパラメータをいじっていたらなんかかっこいい画像ができた!」に近いです。「コードを書くと面白いものができる」という経験が全くない人に興味を持たせるとっかかりとしてはいいかもしれませんが、その後の発展性がなさすぎます。

Context Free Artは結局のところ樹木曲線なんかのような「再起呼び出しを使うと自然に書ける図形」を記述するための、とても表現力の限られたDSLにすぎません。長所としては

  • 再起呼び出しの終了条件を明示的に書く必要がない(十分小さくなると自動的に停止する)ので無限ループになってしまうありがちなミスをさけられる
  • 自動的に適切なサイズにスケールする
  • 直接カンバスに描きながら再起呼び出しをするだけではなく、Zオーダーでソートしてから描き直す処理を自動でやってくれる。
  • アンチエイリアスしているのできれい(おそらく一度大きなカンバスに描いてから縮めている)
  • 回転、スケール、色などのコンテキストのpushとpopを明示的に書かなくてもやってくれる

というあたり。一方短所としては

  • 変数がないのでマジックナンバーの嵐
  • 加減乗除がないので「360の7分の1」も51.4などとマジックナンバーで記述
  • ルールが引数を取れないので、同じ螺旋でも縮まり速度の違うものを作りたかったらルールをコピペしてマジックナンバーを書き換えなければいけない
  • 「5個おきに何かをする」というコードが書きたかったら5個のほぼ同じ内容のルールを書くことになる
  • アルファベット1文字の命令などとても可読性が低い

というあたりかな。おすすめのユースケースとしては中学か高校の情報の時間に30分くらい学生にいじらせてみて、強い関心を示した子をNodeBoxなりProcessingなりActionScriptなりへ誘導するとかじゃないでしょうか。