門外漢のためのプログラミング言語

Twitterのタイムラインを読んでいて、ふっと頭の中を「門外漢のためのプログラミング言語」という言葉がよぎりました。
初心者のためのプログラミング言語については、ブログブームのころに何度か激論が交わされました*1。初心者用言語については、その後、対象がプログラミング言語およびプログラミングに関する理解を深め、目の前に広がる豊かなコンピューティングの大地を自由に歩き回ることができるように、という目標がはっきりしていたと思います。その上、で、コンピューティングの基礎を教えるよい言語を探すことが目的でした。
さて、門外漢のためのプログラミング言語です。ぱっと思いつく利用方法は二つほどです。

  • その日一日、プログラミングを通して楽しんでもらう
  • なんらかの対象に対してシステマティックなアプローチを提供することで新しい視点を開いてもらう

前者は純粋娯楽ですね。ここでアルゴリズムの楽しさを覚えてもらおうなんて言うのは手前みそでしょう。あるいは後者に属することかもしれません。
その日一日楽しめばいい、というのであれば、Hello Worldをはじめとする「テキスト出力から始めるプログラミング言語学習」は適切ではありません。文法に厳格であるか、野放図であるかは別として、プログラミング結果が音や光で出てくるほうがずっと楽しいでしょう。DSPのプログラミング入門のようなプロを対象としたセッションですら、LED点滅で声があがります。
2番目の目的というと、真っ先に思い出すのはLogo言語です。児童心理学者のパパートは子供が何かをいじりながら学習している過程に注目して、子供に、画面上の「亀」を操作させる英語に似たプログラミング言語Logoを開発しました。この言語を使って子供は画面上の「亀」をプログラムし、その足跡の軌跡を図形として見ることができます。異なるプログラムを与えれば、異なる軌跡を得ることができます。タートル・グラフィックスというやつです。
バベッジがジャカード式織り機をヒントに「パンチカードで機能を変えることのできる計算装置」の開発を行ったことは有名ですが、逆に織機や編み機をダイレクトに制御するプログラミング言語も面白いかもしれません。母親がリウマチを患う前は、息を呑むようなアラン編みのセーターを作ってくれたものですが、あの編み棒は奇術的な見た目に反して、綿密に作図・計算された結果に基づいて動いています。
かつてMIT AIラボの面々は中華料理店の中国語メニューに深遠な規則を見出して、その独自解釈に基づいて作り出した中国語による新料理を注文したそうです*2
構造主義の発祥は文化人類学と抽象数学の出会いだったわけです。この世のすべてに構造があるならば、その構造を記述するプログラミング言語があるはずです。過激で愉快なものがたくさん生まれるといいですね。

*1:いわく「俺の使っている言語を教えるべき」

*2:すげぇまずかったらしい