2 年前くらいに Gauche を勉強したいなーと思ったんだけど、いろいろあって途中でやめてしまってたのを再開した。
Scheme は SICP を Streams くらいまではやったので、簡単なプログラミングクイズみたいなのは解けたりするけど、普段使いできるレベルじゃない感じ。
目標は、
- 普段のちょっとしたスクリプトを Gauche で書けるようになる。
という実務的なところと、
- Lambda 式は、「レキシカルな環境を保持した手続き」(クロージャ)へと評価される
- 手続き呼び出しは継続を伴った引数つき goto である
と本に書かれていた意味を理解できるようになる、という興味的なところかな。 まあ、現時点でもひとつ目はなんとなく理解できるけど。
理由
言語を勉強する時って「Hoge を勉強する理由」みたいな話になりがちだけど、Scheme に関しては「単純に興味があるから」くらいしか理由はない。
ここ数年はキャリアに効きそうなことを重視して勉強していたけど、単純に興味あることに少しは時間を費やしてもいいかなーと思ったのもある。 プロゲーマーのウメハラが「最近、なんとなく昔使ってたキャラをメインに使い始めたら、なんとなく人生が楽しくなってきたんですよね。昔、ゲーム始めた頃に持ってた感覚というか、そーゆーのが戻ってきた。」みたいなこと言ってたのに少し影響を受けた。
別に俺は昔 Scheme 使ってたわけじゃないけど、学生の頃に Lisp ってできるハッカーが使いこなしてるイメージがあっていつか使いこなしたいなーと思って。自分の興味あることを勉強する単純な楽しさみたいなものがここにある気がする。
キーバインド
あと Emacs の Scheme 用のキーバインドをちゃんと使いながらコード書こうとしてるんだけど、ぜんぜんうまくできないのがそれはそれで結構楽しい。 身体と頭が一致しない感じは子供の頃にキーボードの配置覚えた頃を思い出させる。外側の S 式に行こうとして、キーを押したら内側の S 式いっちゃったり。四苦八苦。
でも、頑張って練習してると昨日よりちょっとうまくカーソル動かせたりするとこれが嬉しかったりするんだよなー。
2歳半になる息子が、毎日できないことにもがきながらもどんどん成長している姿を見て、歳をとってもそういう姿勢は持っておきたいなーと感じた。