Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2011-02-28

オブジェクト指向コンピューティング

| 18:20 | オブジェクト指向コンピューティング - わだばLisperになる を含むブックマーク はてなブックマーク - オブジェクト指向コンピューティング - わだばLisperになる

昨年に復刊して驚いた「Common Lisp オブジェクトシステム」もCLOSを知る上では良いかなと思うのですが「CLOSCLOS MOPを知るには良い本」的な紹介を良く耳にする気がしています。

この本についての個人的な感想は以前にも書いたのですが、

どちらかというと言語の実装者向けかなあと思っています。

それでタイトルの本なのですが、オブジェクト指向のシステムの解説の一つとして40ページ程のボリュームでCLOS MOPが取り上げられていて、実際にコードの例も示されているという、日本語の本にしては珍しい本です。

また、オブジェクト指向を解説する本としても、かなりマニアックで、Smalltalkあり、リフレクションあり、並列分散オブジェクト指向言語のABCLなども取り上げられつつ、という感じです。

先日の米澤教授の最終講義で並列分散オブジェクト指向のABCLって面白そう!と思った方にもお勧めかなと思います。

それで現在この本は絶版のようなのですが、以前からAmazonでウォッチしているところでは、何十円だったり一万円を越えたりという感じです。(現在衝撃の48円)

2009-06-06

bit別冊Common Lispオブジェクトシステム-CLOSとその周辺

| 21:38 | bit別冊Common Lispオブジェクトシステム-CLOSとその周辺 - わだばLisperになる を含むブックマーク はてなブックマーク - bit別冊Common Lispオブジェクトシステム-CLOSとその周辺 - わだばLisperになる

書評というよりメモです。

この本は、復刊ドットコムでも100票以上を獲得していたりするのですが、

果して復刊したりするのか!、古本屋で見付けた方は保護して愛読するか、Amazonのマーケットプレイスにでも是非出品を!

自分は幸運なことに近所の図書館で借りられるのですが、ひさびさに借りたついでにちょっとエントリにすることにしました。

とりあえず、この本の大体の構成ですが、

※(3章はMOPについて(X3J13 88-003)で含まれていない。)

という感じです。内容が翻訳でかつPDFでネットから入手可能なものはリンクをつけてみました。

333ページの本書ですが、第II部と、5章 共通例題による他の言語との比較+実装のソースコードで約250ページを占めています。

その第II部の CLOSの仕様 CLOS仕様書(X3J13 88-002R)ですが、これは、CLtL2日本語訳の28章の元となっていて、若干違うもの中身は大体一緒。

CLOSメタオブジェクトカーネル現状報告」も英語の元の論文はPDFで入手可能です。

「5章 共通例題による他の言語との比較」は面白い企画で、

にある例題Grapherを様々な言語で実装してみせるという内容。

TAOや、CommonObjects、Flavors、ESP等レアな言語での実装が載っています。

1〜3はCLOSの情報をググったり当時メジャーだった大元の論文を読んだりすれば大体カバーできるんじゃないかと思います。

まとめ

言語のオブジェクトシステムを設計するような方には参考になるかもしれませんが、普通のユーザがCLOSを知りたくて読んでも、実装やその仕様が決まってゆくプロセスを報告している割合が大き過ぎてなんだか良く分からない本である気がしないでもありません。

CLOSや、MOPについては、日本語に限らず書籍は少ないようなのですが、個人的には、本書や、Amazon CAPTCHAあたりの内容をカバーするような本を新刊で黒田さんが書いてくれたりしたら最高なのになあと思ったりしています。

CLOS MOPだけだと市場的に厳しいかもしれませんが、「MOP全般を元祖CLOS MOPを軸に解説」みたいな感じで実際のところはCLOSの本という感じならどうにかならないだろうか…(´▽`*)…ならないか…。

2009-02-23

書評:Common Lisp: the Reference

| 00:41 | 書評:Common Lisp: the Reference - わだばLisperになる を含むブックマーク はてなブックマーク - 書評:Common Lisp: the Reference - わだばLisperになる

今回は最近買った、Common Lisp: the ReferenceというCLtL1時代のリファレンスです。

当時は、CLtLのように、CLtRと略されていたようです。

Common Lisp: The Reference

LISP処理系CLtL1 ※ANSI Common Lispではありません

Amazonで900ページの本が980円だったので何となく特する気がしてしまい、いらないのに買ってしまいました。

今、4500円位みたいですが、マニアでもない限り4500円で買う価値はないかなと思います。CLtL1の本ですので精々1000円位ではないでしょうか。

特長としては、アルファベット順に並んでいるところがあるかと思います。

適当にページを開いて適当に眺めていると、こんな関数があったのかという発見があったりします。

また、各項目には殆どコードの例が付いているのですが、気の効いた例が多くて感心することが多いです。

さらに、formatや、defstructのオプションでは、オプションごとに解説が載っていたりして、なかなか行き届いた作りになっています。

残念なところは、やはり、CLtL1というところで、「おお!、こんな関数があったのか!」と思ってHyperSpecを引くとANSIでは廃止されたものだったりします。(例えば、commonpなど)

かなり前から出版予告がされているにもかかわらず、さっぱり出る気配のないDavid Margolies氏のThe ANSI Common Lisp Reference Bookですが、CLtRの様な体裁ならば、なかなか面白いものになるのではないかと思いました。

ちなみに、このCLtRですが、昔のAllegro CLには電子版が付属していて、clmanと呼ばれ、Emacsからも簡単に引けるようになっていたようです。

clmanでちょっと古いサイトを調べたところ、この電子版もみつけることができました。これは、UNIXのmanページのような体裁になっていて、大体CLtRと同じ内容のものが、ぱっと引けて便利です。

またEmacsから引けるようなelispですが、元は、ELIのもので、こちらもちょっと手直ししたところ使えるようになりました。

しかし、ライセンス的にどうなんだろうというところがありますので紹介は控えておきます。

clmanでググればすぐ見付けられると思います。

2009-02-07

書評:Lispプログラミング入門 (KE養成講座)

| 09:59 | 書評:Lispプログラミング入門 (KE養成講座) - わだばLisperになる を含むブックマーク はてなブックマーク - 書評:Lispプログラミング入門 (KE養成講座) - わだばLisperになる

そういえば自分はこのブログに書評とか書いたことが無いことに気付きました。

考えてみるにLISP関係の本は絶版になることも多く、一体どんな本なのかがamazonでレビューされることも少ないと思うので、どんなものであれ書評があると少しは役に立つのかなと思えてきました。

ということで、昨日、図書館から借りた「Lispプログラミング入門 (KE養成講座)」を読み終えたので感想を書いてみます。

Lispプログラミング入門 (KE養成講座)

LISP処理系CLtL1 ※ANSI Common Lispではありません

著者の白川洋充氏は、70年代からLISPをのスタンフォード大でAI研究もされていた方のようで、CLについて考察が、それまでのLISPとの比較から語られていたりして面白いです。

また、内容が現在の一般的な入門書からするとちょっと変っていて、アレイについて:displaced-to とかの使い方がそれなりに詳しく解説されていたり、継続渡しの解説(関数を渡すのではなくラムダ式を組み立ててゆく方式)があったり、それを利用して、探索、バックトラッキングの説明へと続いたりします。

面白かったところ

あまり本文とは関係のないところなのですが、setfにapplyを適用できない代わりの方法として、setfでapplyを使う方法が紹介されていました。

(let ((a #2a((1 2 3) (4 5 6) (7 8 9)))
      (pos '(1 1)))
  (setf (apply #'aref a pos) 'foo)
  a)
;=> #2A((1 2 3) (4 FOO 6) (7 8 9))

なるほど、これは知りませんでした。

そもそもの発端を考えると、setfにapplyを適用したかったということなのですが、ANSI Common Lispだと

(let ((a #2a((1 2 3) (4 5 6) (7 8 9)))
      (pos '(1 1)))
  (apply #'(setf aref) 'foo a pos)
  a)
;=> #2A((1 2 3) (4 FOO 6) (7 8 9))

とも書けますね。しかし、上のものの方が分かり易いと思います。

それと、まったくどうでも良いところなのですが、本著作中では、LAMBDAの引数に、Uや、Vが使われています。

(lambda (u v) (list u v ..))

どういう由来なのかは分からないのですが、昔のコードを眺めると、MITのLISPだと、XとかYなのですが、スタンフォードのLISPだと、UとかVなんですよね。

そんなところにスタンフォード大の香りを感じました(笑)

絶版ですが、ヤフオクや古本屋で見かけたら保護したい本です。