Gauche で Land Of Lisp (1〜5章)

2013-03-04 21:42:16

目次

先月末あたりに発売した、Land Of Lisp 翻訳版 を買った。
オライリーらしからぬ表紙で、話題になってた模様。

Land of Lisp
Land of Lisp
posted with amazlet at 13.03.03
M.D. Conrad Barski
オライリージャパン
売り上げランキング: 3,246

ブログでLispのことを書くのは初めてだが、
だいたい一年半ぐらい前から少しづつLispをやってる。

中でも僕はSchemeが大好きなので、
Little Schemer から入り、
プログラミング Gauche を一通り読み、
色々書いたりしながら勉強してる(亀の歩みのような速度だが。。。)

そんなときに、Land Of Lisp の翻訳本がオライリーから発売されると知り、
意気揚々と買ったわけだ。

翻訳者は、shiroこと、川合史朗さん
この方はScheme処理系 Gaucheの作者。
ブログ Island Lifeでも有名な方だ。
この本も、以下の記事を見て知った。
Island Life - Land of Lisp

何を隠そう、僕のブログのデザインも、Island Lifeを参考にさせてもらった。
(こういうのって、ちゃんと言わなきゃダメなのかな?)

shiroさんの本といえば、

  • ハッカーと画家
  • プログラミング Gauche

と読んでるので、今回の翻訳でも読み易い訳になってるだろうと思って、安心して買えた。

1〜5章

さて、早速1章から5章までを読みつつ、手を動かしてみた。
といっても、実際にモノを作るのは、2章と5章だけなんだけど。

2章は、数当てゲーム
5章は、簡単なテキストアドベンチャー
なんだけど、できるモノ自体はそこまで楽しくはない。
まあ、簡単なものだしね。

なお、この本ではCommonLispを採用しており、Schemeではないのだけれど、
でも、CommonLispを知らない僕でも、Gaucheで書けるかなーと思い、
とりあえず、進めてみたわけだ。

2章、5章は内容的にも難しくないせいか、
わりとすんなりGaucheで書けた。
当然リファレンスは参照したけど。

こう簡単なものだと、Schemeのプログラムが非常に綺麗に書けて楽しい。
functionオペレータとして、関数の前に #’つけたりしなくていいし(笑)

と、ここまで書いてなんだが、
実はshiroさんが、Gaucheで書いたものをすでに公開しているので、
はっきり言って、僕の試みは二番煎じでしかないのだけれど、
まあ、自分の勉強のためのものだし、別にかまわない。
だから、なるべくshiroさんのGithubは見ない方向で!

shirok/Gauche-LoL

まとめ

いきなり最初にグローバル変数や破壊的代入がさらっとでてきたのは、
Little Schemerから入った僕にとっては、結構衝撃的だったのだが、
一番の感想は、楽しい!ってことに尽きる。
ゲームという取っ付き易く、成果がすぐ分かるものが題材なのがとてもいい。

CommonLispとSchemeの違いは、なかなか面白く、
いつかCommonLispもやってみたいなと思わせてくれる。

面白すぎて、今度受けるLPIC Level 1の試験勉強がおろそかになるのが玉に瑕(笑)

と、まあ、こんな感じで読み進めていこうと思う。
5章までは一気にいったけど、
次の章からは、一つの章につき、ブログ記事も書いていくということで。(そうすれば続けられるよねーw)

一応Githubにもアップしてる。
ryotakato/land-of-lisp

汚いソースでごめんなさい。
ちゃんと単体テストも書きたいね。

P.S

そういえば、SICPこと、計算機プログラムの構造と解釈 を読むのも、2013年の目標。
英語版はPDFで無料で公開されているので、そっちを読めばいいんだけど、
難しいと聞くので、日本語版を買おうかどうか検討中。

さらに、今僕の中で、Kindle Paperwhiteが欲しい物リストのTOPに君臨してるので、
電子版として日本語版買って、英語版のPDFと同時に読み進めるのも悪くない。

「オレ、LPIC Level 1 受かったら、Kindle Paperwhite 買って、SICP読むんだ・・・」
それなんてフラグw




Comments

There are currently no comments on this article, be the first to add one below

Add a Comment

Note that I may remove comments for any reason, so try to be civil. If you are looking for a response to your comment, either leave your email address or check back on this page periodically.