星田さんの記事に対するコメント。
今回は一つだけ。
clojureって何だよと思ったら比較的新しいlisp系の言語らしい。
はい。
あれ、でもLand of Lispで紹介されてなかったっけ・・・・・・。
まぁ、巻末だからなぁ・・・・・・。
ええと、一応。
Clojureは2007年に登場した、21世紀産まれのLispです。
紛らわしい事に、ANSI Common Lisp処理系にはClozureと言うモノもあって、それとは違うんで、混乱しない事。また、いわゆるクロージャはClosureです。Racketユーザー的には受け取った文字列を(compose cadddr string->list)で判別するしかない(謎
それまでは、ポール・グレアムが「開発中」って言ってて期待されてて注目されてた新LispはArcだったんだけど、Clojureが登場した時点で、Arcを抜き去って人気が出ちゃった、言わばダークホースだった(笑)。衝撃的だったなぁ。
ANSI Common Lispに続いて、「実用性」に重きを置いたLisp。そしてその「実用性」はClojure内には、誤解を畏れないで言うと「無い」(笑)。
どういう事か、と言うと、このLisp、Javaで書かれてて、JVM上で動作する(Clo"j"ureのjはJavaのjだ)。
つまり、Javaの為に書かれた豊富なライブラリを使い放題、ってぇのが特徴なんだ。言わばコバンザメだ(笑)。
他のClojureの特徴は、
- 再帰が苦手(と言うのもJVMが再帰処理が苦手だから)
- Haskellみたいにかなりの部分が遅延評価ベースのLispとして再設計されている
- 破壊的変更操作にリスクが出るように設計してて、素から関数型プログラミング指向になっている
って辺りかしらん。ザックリ言うと。
んで、Lisperにもまぁ、評価はされてるんだけど、あまり出てこない「Javaのヘビーユーザー」で「Javaユーザーの中で尖ってる人たち」(Javaはそもそも「平均的なプログラマ」向けに設計されてるので、尖った人はあまりいない)に割に好意的に受け取られてるのね。新しい、CLerやSchemerとまた違った別種のLisperを産み出しています。Emacs Lisperみたいな「別カテゴリのLisper」を産み出した、と言うか。
これ、一つの理由としては、Javaって現時点、圧倒的にサーバーベースのプログラミングに使われてて、もっと簡易にプログラムが出来ないか、ってニーズがあって、それに合致してた、って事なんですよ。サーバーサイドJavaScript、なんつーのもあるんだけど、それに代わる一つの手段としてClojureの存在意義があるんじゃないかしらん。
まぁ、でも僕個人はインストールしてない・・・って言うか、初期のClojureは簡単にインストール/利用可能だったんだけど、どんどんシステマティックになって行っちゃって(笑)、それは一般ユーザーが分かりやすい、と言うよか「Javaをよく知ってる」人たちに分かりやすくなってる、カンジだったんで離れちゃったのよね。何だかその辺のインストールのシステム周りがよく分からなくなっちゃって。今はどうだか知りませんが。
なお、例によってSpacemacsでもClojure Layerってのが提供されてるくらいなんで、世界レベルでもそこそこ人気はあるんでしょう。