QCon London 2009 で録音されたこのインタビューの中で、Rich Hickey氏はClojureについて語っている。まもなく1.0がリリースされる、という頃である。
インタビューでは、Clojureに関する多くの興味深い側面、特に、その並行性のサポートに関して語られている。Rich氏はClojureのソフトウェアトランザクショナルメモリ(STM=Software Transactional Memory)モデルについて、それが、 マルチバージョンコンカレンシーコントロール(MVCC=Multiversion Concurrency Control)の概念を利用していると説明している。
しかし、STMは並行性を扱う唯一の方法ではない。Clojureは他にも多くの並行性プリミティブをサポートしている。たとえばエージェント (アクターと混同しないように - インタビューの中でその違いは説明されている)のようなものだ。
Clojureにすでに実装されている並列性プリミティブに続いて、Rich氏は新しい並列性プリミティブのアイデアについても説明しており、その新しいプリミティブで獲得順序か他のプロパティを定義できるようにすることで、ロックを使うことをより簡単にしてくれるかもしれない、と語っている。
主流派のオブジェクト指向プログラミング(OOP)言語に精通し、Clojureに興味を持つ開発者はおそらくClojureのプログラミングモデルに特に興味があるだろう。ClojureはJavaのOOPモデルをサポートし、JavaライブラリやそのOOPの概念とシームレスにやりとりすることができる。しかしながら、本来のClojureという言語らしいコードは、JavaやC#のような言語が持つOOPの概念には依存していない。実行時ポリモーフィズムはマルチメソッドを通じて実現されている。マルチメソッドはJavaのクラスシステムと統合されているが、カスタムディスパッチメソッドよりもずっと柔軟に実行時ポリモーフィズムを実現しているのだ。インタビューでは、このアプローチを採用した背後にある理由とその有利性について詳細に議論されている。
最後に、議論の中ではパフォーマンスに関する話題にも触れられている。ClojureはJavaのバイトコードにコンパイルされるため、他の動的言語よりも有利性がある。必要のないときにポリモーフィズムを避けることが出来るし、あるルールに従っていさえすれば普通のJavaコードと(すなわち、Java言語で書いた場合と)同じくらいの速さで算術演算を実行することも出来るようになるからだ。
InfoQはこれまでもClojureについて取り上げてきているし、Clojureのシステムに関する多くの側面についてはRich氏のJVM Summit 2008での講演においてうまくまとめられている。
"Rich Hickey on Clojure"を見てほしい。
InfoQ ホームページ ニュース Rich Hicky氏、Clojureの特徴と実装について語る