ニューヨークのプログラミングラボ Recurse Center に滞在中、ひょんなことから 日本語の話し言葉でLispっぽいプログラムが書けるJapalisp というプログラミング言語をつくりました。 つくったからには、それを何かに活かせないかと思い下記チュートリアルを書いてみました。 興味持たれた方は、作者までご連絡ください。
 「ねぇねぇ、足し算ってどうやるの?」
          「ねぇねぇ、足し算ってどうやるの?」
        そう聞いてきたのは、よちよち歩きのプログラミング言語 Japalisp(ジャパリスプ)くん。 この記事の目的は、このジャパリスプくんに足し算の仕方を教えること。
          足し算を、小学校で最初に習ったときまで遡って考えてみよう。
          「ここに、3個のりんごがあります。
          こちらには、4個のりんごがあります。
          全部で、何個のりんごがあるでしょう?」
        

どうか 3 + 4 を思い浮かべないでほしい。 「+」という記号をあなたが思い浮かべるのは、もうあなたが足し算を知っているから。 足し算をまだ知らないJapalisp(ジャパリスプ)くんには、どうやって足し算を教えたら良いのだろう?
一つのやり方は、おそらく自分で数えやすい順に、 「1個、2個、3個...6個、7個!」という風に、一つずつ指をさしながら数えるやり方だろう。
          このやり方は要するに、
          こっちは3個、こっちは4個、と数えていたものを、
          まとめて数えるようにすること。
          ってことは、別々にあったものを「くっつける」と、足し算ができるはずだ。よしっ!
        
「Japalispくん!左のりんごと、右のりんごをくっつけて数えてごらん!」
           
          
Japalispくんは、一つずつだったら、増やしたり減らしたりできることが分かった。 なので、1つずつ、えっちらほっちらとりんごを移動させてみよう。
           
        
          これだけわかれば、もう君はJapalisp(ジャパリスプ)くんに足し算をお願いすることができる。
          次の文章が、実際に彼に「僕の足し算」をやってもらうためのお願い文。
          この文章を、Japalispくんが住む遊び場にコピペしてみよう。なにが返ってきたかな?
        
作者註:まだスマホでのコピペには対応していません。お願い文をつくるときは、パソコンのブラウザから遊んでね。
          僕の足し算っていうのは、
          こっちとあっちを使って、
          もしあっちが0ならこっちを教えてね、
          それ以外なら
          こっちで一つ増やした数と、あっちで一つ減らした数で僕の足し算をし続けるんだよ。
        
「僕の足し算だね!」と返ってきたら、とりあえずは安心して。 あなたが伝えたお願いが、Japlispくんに伝わったという合図だから。 ここからがJapalispくんのすごい所。 彼は、画面を閉じるまでは、僕の足し算の仕方を決して忘れることはない。
まずは、彼が足し算を正しくできるか確かめてみよう。 お願い文をコピペした遊び場で、「10と4で僕の足し算してみて!」って言ってみて。 なんて返ってきたかな?
          「14だよ!」って返ってきたなら、彼は僕の足し算を理解してくれているってことだ!
          やったね!
          もしかしたら、10と4で足し算ができるのは何てことないかもしれない。
          でも、「78と39で僕の足し算」は?
          「5678と1234で僕の足し算」は?
        
彼にとっては、これも同じくらい何てことない計算だ。それもこれも、君が僕の足し算のやり方を、彼に教えてあげたから。 おめでとう!
ここで一旦休憩しよう。と思ったら、興奮したJapalispくんは、次のこんなことを聞いてきた。
 「ねぇねぇ、引き算ってどうやるの?」
          「ねぇねぇ、引き算ってどうやるの?」
        ふぅ、ここから先は、読者のあなたに、Japalispくんに計算を教える役目を担ってほしい。 もしあなたのJapalispくんの遊び場で、Japalispくんに引き算のやり方がきちんと伝わったと思ったら、 「僕の引き算っていうのは、、」から始まるお願い文を、下の何らかの方法で僕に教えてほしい。
          1. Twitterで、#僕の引き算 をつけてつぶやく。
          2. Japalispくんの生みの親にメールを送る。
          3. GithubでIssueとして回答を書く(バグがあると思ったらプルリクもね!)
        
          Japalispくんはまだ足し算を習ったばかりだけど、僕たちがお願い文を正しく書きさえすれば、
          ものすごい量の計算をすぐにやってくれるようになる。
          下にあげるのはそのほんの一例。
        
          ・掛け算
          ・大小関係
          ・イコール
          ・べき乗
          ・割り算
          ・階乗
        
          ここまで読んだあなたなら、Japalispくんにお願いする方法のコツを、すぐに掴めるはず。
          計算そのものが楽しいって感覚が、すぐにやってくると思う。
          Japlispの生みの親として、あなたの解答を心待ちにしています。
        
 つづく
          つづく