トップ «前日 最新 翌日» 編集
RSS feed

ただのにっき


2010-10-23(土) [長年日記]

プログラミングClojure(Stuart Halloway)

関数型言語、特にLisp族への漠然とした憧れというのがあるわけですよ。S式を操るのってなんかカッコいいし。で、7年も前にSchemeに挑戦してあっさり挫折した身としては、このClojureで再チャレンジになる。

きっかけは今年のLLTigerで、Language Updateで紹介されたのを聴いて興味をもったため。特に並行プログラミングをサポートするSTMは面白いと思ったし、プラットフォームがJVMというのも、豊富なJavaのライブラリを活用できるいい選択だと思った。JVMを要求するとなると活躍の場が限られてしまうけど、今ならAndroidもあるからね。

読み手(おれ)の側で7年前と何が大きく違うって、いまはRubyでメタプログラミングがそこそこわかっている点だ。おかげでClojureでやろうとしていることが、Rubyではどう書けばいいのかなんとなく想起できるので、ずいぶん理解が早い。つまり、手続き型言語脳をRubyを介して関数型言語脳に変換できるようになっているわけで、これがないとまた挫折したんだろうなー、と思う。やっぱRubyすごい。

登場するコードはREPLに入力して動作を確認しながら読み進めた。川合さんの訳も読みやすいし、著者にもできるだけトリッキーなコードを排す姿勢があって、けっこうサクサク読める。まぁ、「理解できたか?」と聞かれれば「だいたいわかった」という程度だけど、最後まで読み通せた自分をほめてあげたい(ただし「マクロには近寄るな」ってじっちゃが言ってたので、軽く流す程度←じっちゃじゃねぇ)。

(JVMの制限で)関数型言語のくせに末尾再帰最適化ができないとか(これは回避策がいくつかある)、Javaのライブラリを使うときのシンタックスシュガーがちょっとキモいとか、慣れるのに時間がかかりそうな要素はあるものの、基本的には素直なLisp族という印象。ロック状態に気を配らずに並行プログラミングができるSTMはすばらしいし、(動的ディスパッチ的な)マルチメソッドも面白い。使いこなしたらなかなかいい武器になりそうな言語という印象だ。

とはいえ、何か本格的なアプリを書いてみないことには、言語を習得したとは言えないわけで、そうは言っても今のところいいネタがないんだよな。とか言ってるあいだに忘れそうだが(笑)。いやAndroidアプリを書けばいいんだけどさ。

Tags: book clojure

トップ «前日 最新 翌日» 編集
RSS feed