JVM上新Lisp Clojureのこと, Scalaも
2009-03-11


ASAHIネット([URL]のjouwa/salonからホットコーナー([URL] )に転載したものから。
---
[URL]
JavaVM上新Lisp Clojure, Scalaのこと、なぜかキース・ジャレットも。^^;
の続き。

 やっとこ、ちょっと時間ができたので、Clojureのサイト
[URL]
に行って、つらつら眺めました。
 これ、なかなかよさげにみえるなあ。
 データは変更不可(immutable)が基本。ErlangのようなActorモデルじゃない
けど、
[URL]
読むべし!「ビューティフルコード」
[URL]
注目のコンピュータサイエンス本
で、名前を出したSTM(Software Transactional Memory, ソフトウェア・トラ
ンザクショナル・メモリ)を使って、データのバージョンコントロールもする
のね。だから、ロックなしで実行できると。
 RDBでは、FirebirdやInterBaseやPostgreSQLが、MVCC(Multiversion
Concurrency Control)を昔からやってますよね。Clojureはメモリ上でやって、
それをpersistent data structuresだといってますね。persistentというとデ
ィスクなど電源を切っても消えないところにデータが残るものと理解されてい
るので、誤解されるかも。
 MVCCについては、
[URL]
をどうぞ。

 変数は、変更不可(数学的な変数)。オプションとして変更可能なメモリセル
があるというのは、Mozart/Ozもそうですね。Concurrent Cleanもそうだし、
大体、関数型プログラミングをサポートするものは、これが可能ですね。
Mozart/Ozについては、
[URL]
CTM, Mozart, Oz情報
をはじめ、いっぱい書いてます。
 CTMでは、最初に関数型で変数の書き換え不可のプログラミングの世界を教
えます。そして、変数の書き換えができないことが、言語に並行性・並列性を
付加したときにいかに有利かを教えます。関数型じゃなくて、並行・並列論理
型プログラミングもその流れでやったと思う。
 で、やっと状態(state)あり、メモリを書き換えていいプログラミング、い
わゆる命令型、手続き型プログラミングの世界、C/C++, Java, Perl, Python,
Rubyなどの世界をやる。
 さらに、オブジェクト指向は状態ありのプログラミングモデルだということ
を教えて、状態をもつと表現力は上がるけれど、並行性・並列性を持ち込もう
としたら、いかに大変かを教えてます。

 Clojureの作者Rich Hickeyさんの講演ビデオがあります。
[URL]
Clojure
[URL]
Clojure for Java Programmers

 しかし、ちんたら動画をみてるより、Java屋向けの
[URL]
An Introduction for Java Programmers
と、Lisp屋向けの
[URL]
An Introduction for Lisp Programmers
を読むほうが、話が早い。
 この2つを見比べると、テイストがずいぶん違っていて面白い。Lisp屋には、
けっこう詳しく説明してる。
 ほかにも、
[URL]
ClojureがSTMとLISPをJVMにもたらす
[URL]
JRubyとClojureは好相性?
をどうぞ。この関連項目である並行性を扱った
[URL]
にある記事は、どれも興味深いね。
 Rubyには、Fiber, NeverBlock, Revactorなんてのがあるのね。でも、I/Oだ

続きを読む


コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット