JVM上新Lisp Clojureのこと, Scalaも ― 2009年03月11日 22時14分44秒
ASAHIネット(http://www.asahi-net.or.jp)のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
http://iiyu.asablo.jp/blog/2009/02/27/4141043
JavaVM上新Lisp Clojure, Scalaのこと、なぜかキース・ジャレットも。^^;
の続き。
やっとこ、ちょっと時間ができたので、Clojureのサイト
http://clojure.org/
に行って、つらつら眺めました。
これ、なかなかよさげにみえるなあ。
データは変更不可(immutable)が基本。ErlangのようなActorモデルじゃない
けど、
http://iiyu.asablo.jp/blog/2008/04/17/3164685
読むべし!「ビューティフルコード」
http://iiyu.asablo.jp/blog/2008/02/29/2672473
注目のコンピュータサイエンス本
で、名前を出したSTM(Software Transactional Memory, ソフトウェア・トラ
ンザクショナル・メモリ)を使って、データのバージョンコントロールもする
のね。だから、ロックなしで実行できると。
RDBでは、FirebirdやInterBaseやPostgreSQLが、MVCC(Multiversion
Concurrency Control)を昔からやってますよね。Clojureはメモリ上でやって、
それをpersistent data structuresだといってますね。persistentというとデ
ィスクなど電源を切っても消えないところにデータが残るものと理解されてい
るので、誤解されるかも。
MVCCについては、
http://en.wikipedia.org/wiki/Multiversion_concurrency_control
をどうぞ。
変数は、変更不可(数学的な変数)。オプションとして変更可能なメモリセル
があるというのは、Mozart/Ozもそうですね。Concurrent Cleanもそうだし、
大体、関数型プログラミングをサポートするものは、これが可能ですね。
Mozart/Ozについては、
http://iiyu.asablo.jp/blog/2008/08/30/3723146
CTM, Mozart, Oz情報
をはじめ、いっぱい書いてます。
CTMでは、最初に関数型で変数の書き換え不可のプログラミングの世界を教
えます。そして、変数の書き換えができないことが、言語に並行性・並列性を
付加したときにいかに有利かを教えます。関数型じゃなくて、並行・並列論理
型プログラミングもその流れでやったと思う。
で、やっと状態(state)あり、メモリを書き換えていいプログラミング、い
わゆる命令型、手続き型プログラミングの世界、C/C++, Java, Perl, Python,
Rubyなどの世界をやる。
さらに、オブジェクト指向は状態ありのプログラミングモデルだということ
を教えて、状態をもつと表現力は上がるけれど、並行性・並列性を持ち込もう
としたら、いかに大変かを教えてます。
Clojureの作者Rich Hickeyさんの講演ビデオがあります。
http://www.infoq.com/presentations/hickey-clojure
Clojure
http://clojure.blip.tv/file/982823/
Clojure for Java Programmers
しかし、ちんたら動画をみてるより、Java屋向けの
http://clojure.googlegroups.com/web/clojureforjava.pdf
An Introduction for Java Programmers
と、Lisp屋向けの
http://clojure.googlegroups.com/web/clojureforlispers.pdf
An Introduction for Lisp Programmers
を読むほうが、話が早い。
この2つを見比べると、テイストがずいぶん違っていて面白い。Lisp屋には、
けっこう詳しく説明してる。
ほかにも、
http://www.infoq.com/jp/news/2009/02/clojure-interview-halloway
ClojureがSTMとLISPをJVMにもたらす
http://www.infoq.com/jp/news/2009/02/jruby-clojure
JRubyとClojureは好相性?
をどうぞ。この関連項目である並行性を扱った
http://www.infoq.com/jp/concurrency
にある記事は、どれも興味深いね。
Rubyには、Fiber, NeverBlock, Revactorなんてのがあるのね。でも、I/Oだ
けの話みたいね。それだと、言語自体が状態ありだから、軽量スレッド100万
個なんて世界で何かやろうとすると難しいと思うんだけど。
それから、Clojureの情報を探して、あれこれうろうろしてたら、
http://lambda-the-ultimate.org/
というすごいドメイン名のサイトがあるのを発見。\(^O^)/
ここ、ドメイン名もすごいだけあって、中身もすごいね。
そんなこんなで、
http://www.amazon.co.jp/exec/obidos/ASIN/1934356336/showshotcorne-22/
Programming Clojure (ペーパーバック)
Stuart Halloway (著)
は、買ってみようかなと思ってます。
http://iiyu.asablo.jp/blog/2009/02/27/4141043
JavaVM上新Lisp Clojure, Scalaのこと、なぜかキース・ジャレットも。^^;
を書いたときには、3月に出る予定だったのが、いま、4月に出る予定になっ
てる。大丈夫か。^^;
それから、Scala。これまで紹介してなかったScalaの日本語ページがあった
ので、ちょっと紹介。
http://itpro.nikkeibp.co.jp/article/COLUMN/20080613/308019/
刺激を求める技術者に捧げるScala講座
http://www29.atwiki.jp/tmiya/
プログラミング言語 Scala Wiki
面白かったのは、
http://inforno.net/articles/2008/03/04/japanese-language-programing-in-scala
日本語プログラミング言語Scala
同じ人の
http://inforno.net/articles/2008/05/17/simple-stack-oriented-language-implemented-using-scala
Scalaでスタック指向言語をサクッと実装する
は、まじめ。パーサコンビネータなんて入ってるのね。
すでに紹介したのは、
http://iiyu.asablo.jp/blog/2008/04/15/3111218
JavaScript, Ruby, Lisp, Scala, Java
http://iiyu.asablo.jp/blog/2008/05/31/3553747
プログラミング言語Scalaのネタ
からたどってね。
http://iiyu.asablo.jp/blog/2009/02/27/4141043
JavaVM上新Lisp Clojure, Scalaのこと、なぜかキース・ジャレットも。^^;
で名前を出したScalaの本は、あの時点で出ていた
http://www.amazon.co.jp/exec/obidos/ASIN/0981531601/showshotcorne-22/
Programming in Scala: A Comprehensive Step-by-step Guide (ペーパーバック)
Martin Odersky (著), Lex Spoon (著), Bill Venners (著)
以外は、まだ出ていませんね。
http://www.amazon.co.jp/exec/obidos/ASIN/193435631X/showshotcorne-22/
Programming Scala: Tackle Multi-core Complexity on the Java Virtual Machine
(ペーパーバック)
Venkat Subramaniam (著)
は、3月だから、そろそろ出ていていいんだけど。
ちなみに、「Programming in Scala」の著者Martin Oderskyさんは、Scala
の作者で、スイス連邦工科大学ローザンヌ校(EPFLの訳のつもりだけど、これ
でいい?)の教授ですね。
「Programming Clojure」を買うついでに、「Programming in Scala」と
「Programming Scala」は、買ってみようと思っています。
おーい。早く、定額給付金くれ!\(^O^)/
お前、アマゾンで買ったら、地元の商店にお金が落ちないじゃん。
げっ。^^;
===
標題: Re: JVM上新Lisp Clojureのこと, Scalaも
---
出版社のサイトだと、
http://www.pragprog.com/titles/shcloj/programming-clojure
Programming Clojure
http://www.artima.com/shop/programming_in_scala
Programming in Scala
http://pragprog.com/titles/vsscala/programming-scala
Programming Scala
http://www.apress.com/book/view/9781430219897
Beginning Scala
ですね。
驚きがいくつかある。
どれもPDFでも売ってるのね。
「Programming in Scala: A Comprehensive Step-by-step Guide」は、PDF
と印刷本とのコンボが59.99ドル。印刷本だけは49.99ドル。PDFだけは、27.50
ドル。
PDFだと、検索できるし、索引がちゃんとしていると、すぐ飛べるのがいい
んだが、コンピュータのディスプレイで読んでいる目が疲れるからね。でも、
コードはたぶんPDFからすぐコピペできるんだろうし。それともテキストのコ
ピーできないようにしてあるのかも。
つまりは、PDFと印刷の両方を買えば、目も疲れないし、必要ならすぐ検索
できるってことか。
面白いのが、
754 pages (eBook)
XL,736 pages (Paper Book)
となってるから、eBook(PDF)だと、754ページなのに、印刷本だと736ページと
ページ数が違うのね。何が違うんだろう。
「Programming Clojure」は、まだ印刷本が出来上がってない。しかし、PDF
は、ベータ版なのに、もう売ってる。\(^O^)/
いま買えば、あとで正式版になったら、正式版のPDFがダウンロードできる
といってる。印刷本も出来上がったら送ると。
印刷本の出来上がりがApril 23, 2009になってますね。
ベータ版のPDFと印刷本で41.35ドル。印刷本だけというのはなくて、ベータ
のPDFが21.00ドル。
あれ、eBookをPDFと決めつけたけど、大丈夫?
あ、The eBook version of this book is a DRM-free PDF.と書いてあるか
ら、PDFで、テキストのコピーもできるのね。コードは、すでに、
http://www.pragprog.com/titles/shcloj/source_code
にあるけど。
200ページだから、この手の本としては、薄い本なのね。
「Programming Scala: Tackle Multi-core Complexity on the Java
Virtual Machine」は、まだ、PDFも印刷本も売ってない。
This title will be available on or about May 10, 2009.
だそうです。
えーっ、アマゾンの
http://www.amazon.co.jp/exec/obidos/ASIN/193435631X/showshotcorne-22/
には、2009/03と書いてあったから、そろそろ出てもいいと書いたのに。信用
できないなあ。
あ、本家のデータだと、
http://www.amazon.com/exec/obidos/ASIN/193435631X/
をみると、May 28, 2009になってるね。
本家アマゾンのデータも、出版社のデータと違うし、日本のアマゾンのデー
タは、全然、更新されてない感じだなあ。大丈夫か、これ。
250ページだから、これも、この手の本としては、薄い本なのね。
出版日もだけど、ページ数もどうなるか怪しいよね。
実際に出版されたら、もっとページが減ってたりしてね。
あり得るぞ、これ。出版が遅れに遅れて、もう書いてるところだけで出しち
ゃえなんてね。
「Beginning Scala」は、もっとすごいぞ。
This book is part of the Alpha Program. There are currently 8 chapters
available to purchase.
だって。
まだアルファ版の出来で、8章分しか出来てないのに、もうPDF版は、売っ
てる!\(^O^)/
これも予定では、300ページの本になるかのように書いてあるけど、めちゃ
くちゃ怪しいよね。
結局、すでに書いた8章分でそのまま「できた!」とかいったりしてね。
すごい、商売ですよね。
恐るべし、アメリカの出版社。恐るべし、電子出版。
注文するのは、すでに出ている
http://www.amazon.co.jp/exec/obidos/ASIN/0981531601/showshotcorne-22/
Programming in Scala: A Comprehensive Step-by-step Guide (ペーパーバッ
ク)
Martin Odersky (著), Lex Spoon (著), Bill Venners (著)
だけにしておいたほうがよさそうな気がしてきた。
それか、
http://www.amazon.co.jp/exec/obidos/ASIN/1934356336/showshotcorne-22/
Programming Clojure (ペーパーバック)
Stuart Halloway (著)
が出てから、この2冊を注文するか。
そういえば、これらじゃなくて、どの本か忘れたけど、洋書だと本家アマゾ
ンの電子ブックリーダーのなんとかという機械用のフォーマットで売ってるの
も、以前、見かけましたね。
PDFなどで本が売られるのは、うれしいはうれしい。場所も取らないし、検
索したくなることは多いもん。小説でも、長編小説、特にミステリなどは、あ
の人物が初めて出てきた場面はどこ?などと、検索したくなるときが多い。
しかし、コンピュータの画面で読むつらさというのがある。特におれみたい
に年を取ってくると、長時間、仕事でコンピュータの画面を見つめているのに、
余暇の本までコンピュータの画面だと疲れちゃう。
それに、携帯電話やiPhoneクラスの画面は論外として、ネットブック程度の
画面でも、本など、長い文章は読む気がしない。目が疲れるし、電池切れにも
なるし。
そうそう。マンガも読みたくない。小さい画面だと、絵自体がしょぼくなっ
て、つまらないもん。動画だって、テレビだってそう。ウォークマンにワンセ
グ入ってるけど、観る気しないもん。ニュースくらいだね。スポーツは、野球
でもサッカーでもボールがどこに行ったかわからないこともあるし、迫力がな
くて、つまらない。
データ処理的に、読み捨て、見捨てでいいものは、小さい画面でいいが、読
み込みたいもの、鑑賞したいものは、大きな紙や画面で読んだり、観たりしな
いと、やはり頭と身体に入ってきませんね。
---
http://iiyu.asablo.jp/blog/2009/02/27/4141043
JavaVM上新Lisp Clojure, Scalaのこと、なぜかキース・ジャレットも。^^;
の続き。
やっとこ、ちょっと時間ができたので、Clojureのサイト
http://clojure.org/
に行って、つらつら眺めました。
これ、なかなかよさげにみえるなあ。
データは変更不可(immutable)が基本。ErlangのようなActorモデルじゃない
けど、
http://iiyu.asablo.jp/blog/2008/04/17/3164685
読むべし!「ビューティフルコード」
http://iiyu.asablo.jp/blog/2008/02/29/2672473
注目のコンピュータサイエンス本
で、名前を出したSTM(Software Transactional Memory, ソフトウェア・トラ
ンザクショナル・メモリ)を使って、データのバージョンコントロールもする
のね。だから、ロックなしで実行できると。
RDBでは、FirebirdやInterBaseやPostgreSQLが、MVCC(Multiversion
Concurrency Control)を昔からやってますよね。Clojureはメモリ上でやって、
それをpersistent data structuresだといってますね。persistentというとデ
ィスクなど電源を切っても消えないところにデータが残るものと理解されてい
るので、誤解されるかも。
MVCCについては、
http://en.wikipedia.org/wiki/Multiversion_concurrency_control
をどうぞ。
変数は、変更不可(数学的な変数)。オプションとして変更可能なメモリセル
があるというのは、Mozart/Ozもそうですね。Concurrent Cleanもそうだし、
大体、関数型プログラミングをサポートするものは、これが可能ですね。
Mozart/Ozについては、
http://iiyu.asablo.jp/blog/2008/08/30/3723146
CTM, Mozart, Oz情報
をはじめ、いっぱい書いてます。
CTMでは、最初に関数型で変数の書き換え不可のプログラミングの世界を教
えます。そして、変数の書き換えができないことが、言語に並行性・並列性を
付加したときにいかに有利かを教えます。関数型じゃなくて、並行・並列論理
型プログラミングもその流れでやったと思う。
で、やっと状態(state)あり、メモリを書き換えていいプログラミング、い
わゆる命令型、手続き型プログラミングの世界、C/C++, Java, Perl, Python,
Rubyなどの世界をやる。
さらに、オブジェクト指向は状態ありのプログラミングモデルだということ
を教えて、状態をもつと表現力は上がるけれど、並行性・並列性を持ち込もう
としたら、いかに大変かを教えてます。
Clojureの作者Rich Hickeyさんの講演ビデオがあります。
http://www.infoq.com/presentations/hickey-clojure
Clojure
http://clojure.blip.tv/file/982823/
Clojure for Java Programmers
しかし、ちんたら動画をみてるより、Java屋向けの
http://clojure.googlegroups.com/web/clojureforjava.pdf
An Introduction for Java Programmers
と、Lisp屋向けの
http://clojure.googlegroups.com/web/clojureforlispers.pdf
An Introduction for Lisp Programmers
を読むほうが、話が早い。
この2つを見比べると、テイストがずいぶん違っていて面白い。Lisp屋には、
けっこう詳しく説明してる。
ほかにも、
http://www.infoq.com/jp/news/2009/02/clojure-interview-halloway
ClojureがSTMとLISPをJVMにもたらす
http://www.infoq.com/jp/news/2009/02/jruby-clojure
JRubyとClojureは好相性?
をどうぞ。この関連項目である並行性を扱った
http://www.infoq.com/jp/concurrency
にある記事は、どれも興味深いね。
Rubyには、Fiber, NeverBlock, Revactorなんてのがあるのね。でも、I/Oだ
けの話みたいね。それだと、言語自体が状態ありだから、軽量スレッド100万
個なんて世界で何かやろうとすると難しいと思うんだけど。
それから、Clojureの情報を探して、あれこれうろうろしてたら、
http://lambda-the-ultimate.org/
というすごいドメイン名のサイトがあるのを発見。\(^O^)/
ここ、ドメイン名もすごいだけあって、中身もすごいね。
そんなこんなで、
http://www.amazon.co.jp/exec/obidos/ASIN/1934356336/showshotcorne-22/
Programming Clojure (ペーパーバック)
Stuart Halloway (著)
は、買ってみようかなと思ってます。
http://iiyu.asablo.jp/blog/2009/02/27/4141043
JavaVM上新Lisp Clojure, Scalaのこと、なぜかキース・ジャレットも。^^;
を書いたときには、3月に出る予定だったのが、いま、4月に出る予定になっ
てる。大丈夫か。^^;
それから、Scala。これまで紹介してなかったScalaの日本語ページがあった
ので、ちょっと紹介。
http://itpro.nikkeibp.co.jp/article/COLUMN/20080613/308019/
刺激を求める技術者に捧げるScala講座
http://www29.atwiki.jp/tmiya/
プログラミング言語 Scala Wiki
面白かったのは、
http://inforno.net/articles/2008/03/04/japanese-language-programing-in-scala
日本語プログラミング言語Scala
同じ人の
http://inforno.net/articles/2008/05/17/simple-stack-oriented-language-implemented-using-scala
Scalaでスタック指向言語をサクッと実装する
は、まじめ。パーサコンビネータなんて入ってるのね。
すでに紹介したのは、
http://iiyu.asablo.jp/blog/2008/04/15/3111218
JavaScript, Ruby, Lisp, Scala, Java
http://iiyu.asablo.jp/blog/2008/05/31/3553747
プログラミング言語Scalaのネタ
からたどってね。
http://iiyu.asablo.jp/blog/2009/02/27/4141043
JavaVM上新Lisp Clojure, Scalaのこと、なぜかキース・ジャレットも。^^;
で名前を出したScalaの本は、あの時点で出ていた
http://www.amazon.co.jp/exec/obidos/ASIN/0981531601/showshotcorne-22/
Programming in Scala: A Comprehensive Step-by-step Guide (ペーパーバック)
Martin Odersky (著), Lex Spoon (著), Bill Venners (著)
以外は、まだ出ていませんね。
http://www.amazon.co.jp/exec/obidos/ASIN/193435631X/showshotcorne-22/
Programming Scala: Tackle Multi-core Complexity on the Java Virtual Machine
(ペーパーバック)
Venkat Subramaniam (著)
は、3月だから、そろそろ出ていていいんだけど。
ちなみに、「Programming in Scala」の著者Martin Oderskyさんは、Scala
の作者で、スイス連邦工科大学ローザンヌ校(EPFLの訳のつもりだけど、これ
でいい?)の教授ですね。
「Programming Clojure」を買うついでに、「Programming in Scala」と
「Programming Scala」は、買ってみようと思っています。
おーい。早く、定額給付金くれ!\(^O^)/
お前、アマゾンで買ったら、地元の商店にお金が落ちないじゃん。
げっ。^^;
===
標題: Re: JVM上新Lisp Clojureのこと, Scalaも
---
出版社のサイトだと、
http://www.pragprog.com/titles/shcloj/programming-clojure
Programming Clojure
http://www.artima.com/shop/programming_in_scala
Programming in Scala
http://pragprog.com/titles/vsscala/programming-scala
Programming Scala
http://www.apress.com/book/view/9781430219897
Beginning Scala
ですね。
驚きがいくつかある。
どれもPDFでも売ってるのね。
「Programming in Scala: A Comprehensive Step-by-step Guide」は、PDF
と印刷本とのコンボが59.99ドル。印刷本だけは49.99ドル。PDFだけは、27.50
ドル。
PDFだと、検索できるし、索引がちゃんとしていると、すぐ飛べるのがいい
んだが、コンピュータのディスプレイで読んでいる目が疲れるからね。でも、
コードはたぶんPDFからすぐコピペできるんだろうし。それともテキストのコ
ピーできないようにしてあるのかも。
つまりは、PDFと印刷の両方を買えば、目も疲れないし、必要ならすぐ検索
できるってことか。
面白いのが、
754 pages (eBook)
XL,736 pages (Paper Book)
となってるから、eBook(PDF)だと、754ページなのに、印刷本だと736ページと
ページ数が違うのね。何が違うんだろう。
「Programming Clojure」は、まだ印刷本が出来上がってない。しかし、PDF
は、ベータ版なのに、もう売ってる。\(^O^)/
いま買えば、あとで正式版になったら、正式版のPDFがダウンロードできる
といってる。印刷本も出来上がったら送ると。
印刷本の出来上がりがApril 23, 2009になってますね。
ベータ版のPDFと印刷本で41.35ドル。印刷本だけというのはなくて、ベータ
のPDFが21.00ドル。
あれ、eBookをPDFと決めつけたけど、大丈夫?
あ、The eBook version of this book is a DRM-free PDF.と書いてあるか
ら、PDFで、テキストのコピーもできるのね。コードは、すでに、
http://www.pragprog.com/titles/shcloj/source_code
にあるけど。
200ページだから、この手の本としては、薄い本なのね。
「Programming Scala: Tackle Multi-core Complexity on the Java
Virtual Machine」は、まだ、PDFも印刷本も売ってない。
This title will be available on or about May 10, 2009.
だそうです。
えーっ、アマゾンの
http://www.amazon.co.jp/exec/obidos/ASIN/193435631X/showshotcorne-22/
には、2009/03と書いてあったから、そろそろ出てもいいと書いたのに。信用
できないなあ。
あ、本家のデータだと、
http://www.amazon.com/exec/obidos/ASIN/193435631X/
をみると、May 28, 2009になってるね。
本家アマゾンのデータも、出版社のデータと違うし、日本のアマゾンのデー
タは、全然、更新されてない感じだなあ。大丈夫か、これ。
250ページだから、これも、この手の本としては、薄い本なのね。
出版日もだけど、ページ数もどうなるか怪しいよね。
実際に出版されたら、もっとページが減ってたりしてね。
あり得るぞ、これ。出版が遅れに遅れて、もう書いてるところだけで出しち
ゃえなんてね。
「Beginning Scala」は、もっとすごいぞ。
This book is part of the Alpha Program. There are currently 8 chapters
available to purchase.
だって。
まだアルファ版の出来で、8章分しか出来てないのに、もうPDF版は、売っ
てる!\(^O^)/
これも予定では、300ページの本になるかのように書いてあるけど、めちゃ
くちゃ怪しいよね。
結局、すでに書いた8章分でそのまま「できた!」とかいったりしてね。
すごい、商売ですよね。
恐るべし、アメリカの出版社。恐るべし、電子出版。
注文するのは、すでに出ている
http://www.amazon.co.jp/exec/obidos/ASIN/0981531601/showshotcorne-22/
Programming in Scala: A Comprehensive Step-by-step Guide (ペーパーバッ
ク)
Martin Odersky (著), Lex Spoon (著), Bill Venners (著)
だけにしておいたほうがよさそうな気がしてきた。
それか、
http://www.amazon.co.jp/exec/obidos/ASIN/1934356336/showshotcorne-22/
Programming Clojure (ペーパーバック)
Stuart Halloway (著)
が出てから、この2冊を注文するか。
そういえば、これらじゃなくて、どの本か忘れたけど、洋書だと本家アマゾ
ンの電子ブックリーダーのなんとかという機械用のフォーマットで売ってるの
も、以前、見かけましたね。
PDFなどで本が売られるのは、うれしいはうれしい。場所も取らないし、検
索したくなることは多いもん。小説でも、長編小説、特にミステリなどは、あ
の人物が初めて出てきた場面はどこ?などと、検索したくなるときが多い。
しかし、コンピュータの画面で読むつらさというのがある。特におれみたい
に年を取ってくると、長時間、仕事でコンピュータの画面を見つめているのに、
余暇の本までコンピュータの画面だと疲れちゃう。
それに、携帯電話やiPhoneクラスの画面は論外として、ネットブック程度の
画面でも、本など、長い文章は読む気がしない。目が疲れるし、電池切れにも
なるし。
そうそう。マンガも読みたくない。小さい画面だと、絵自体がしょぼくなっ
て、つまらないもん。動画だって、テレビだってそう。ウォークマンにワンセ
グ入ってるけど、観る気しないもん。ニュースくらいだね。スポーツは、野球
でもサッカーでもボールがどこに行ったかわからないこともあるし、迫力がな
くて、つまらない。
データ処理的に、読み捨て、見捨てでいいものは、小さい画面でいいが、読
み込みたいもの、鑑賞したいものは、大きな紙や画面で読んだり、観たりしな
いと、やはり頭と身体に入ってきませんね。
最近のコメント