今日はかずひこくんが講師。安心して見てられる。 本人の印象は「ふぇみにん日記」を参照のこと。
昨日も書いたけど、今回は本当の初心者という人はいなくて、 「Rubyのことは知らないけどプログラミングは結構分かる」人の集まりなので、 教えやすい。が、ギークというほどではないので、あんまり難しい話をしてもなあ。 我々も教えるプロではないし、なかなか難しいところはある。
午前中は座学というか、クラスの一通りの説明を行い、 午後は実習主体。例題の選定が難しい。
夕方まで教え切ったかずひこくんは昨日の私同様非常に疲れていた。 そうなんだよ、くたびれるんだよ。
今度は今週末浜田で「体験コース」が開かれる。 定員(12名)近くまで応募があったようだ。
Logoといえば分からないことがある。
たとえば、
reverse butfirst :a
は
(reverse (butfirst :a))
と解釈され(reverse, butfirstは1引数の関数)
(reverse butfirst :a)
とは解釈されない。一方、
fput first :a butfirst :b
は
(fput (first :a) (butfirst :b))
と解釈される(first, butfirstは1引数、fputは2引数)。ということは、アレか、 構文解釈のときに関数定義から引数の数を引っ張ってきてるってことか?
それはどうなんだろう。関数を再定義しちゃう(もちろんLogoでは許されている)と プログラムの解釈が変わっちゃうってことだよね。たしか、Rebolもそんな感じだったと思うけど。
Logoといえば「初心者に優しい」というのが宣伝文句だったような気がするけど、 実際には「優しい」のはインタラクティブな環境(とタートルグラフィックス)であって、 言語仕様はちっとも優しくないのね。
言語にとっつきやすいかどうかは、「簡単にいろいろ試すことができるか」で決まり、 言語仕様では決まらない。どんな(良くない)言語でも、慣れ親しむことができれば(忠実な)ユーザが獲得できる。
なんだか言語仕様にこだわり続ける私のような人間にはがっかりするような結論だが、 どうやら世の中はそういうものらしい。とはいえ、逆に考えればそういう条件を満たしていれば、 「良い(言語仕様の)言語」であっても構わないわけだから、 言語屋にも希望はあるのだろうか。
いや、待てよ。
世の中にはいろいろ悪口を言われながらも使われ続けている言語はたくさんある。 というか、広まっている言語は必ずといって悪口を言われている。 逆にさほど嫌われてはいない言語はあまり広まっていない言語に目立つ。
ということは、実は「好ききらいがはっきりするような言語の方が広まる」という仮説は成り立たないだろうか。 広まることを第一に考えると、総花的に八方美人な言語よりも少々「悪い言語」の方が見込みがあると。 それは言語オタクにとっては嬉しくない世界観だな。
「どんな言語でも広まれば悪口を言われるものだ」という考え方もある。 むしろ、こっちであって欲しいと願う、心から。