バージョンアップ情報
Clojure情報
Clojureとは
Clojure(クロージャ)は「関数型プログラミング言語」であるLisp(リスプ)の方言の一つの汎用プログラミング言語です。2007年に開発者であるRich Hickey氏により公開され、2009年5月4日にバージョン1.0がリリースされました。
「関数型プログラミング言語」とは、関数をオブジェクトのように扱える「第一級関数」、そして、その関数を引数や戻り値のように扱える「高階関数」をサポートするプログラミング言語です。
Rich Hickey 氏によると、Clojureを作成した理由は、Lispであり、関数型プログラミング言語であり、一般的なプラットフォームに対応し、かつ並行処理が得意な言語を探したが見つからなかったためで、Clojure という名前は、他に同じものが無く、C#の「C」、Lispの「L」、Javaの「J」を使えないか考えていたところ、Googleスペースのあまりにも広大な空間の逆の意味を持つ「閉鎖」を意味する Closure という言葉を思いつき、それをもじって Clojure としたそうです。発音はClosure と同じクロージャとされています。
主な特徴
関数型プログラミング言語 |
ClojureはLispを源泉とした「関数型プログラミング言語」の一つです。Lisp同様「S式」と呼ばれる()を多用する書式で記述し、数式は「ポーランド記法」と呼ばれる書式で記述します。 |
---|---|
JavaVM言語 |
ClojureはJava仮想マシン(JavaVM)上で動作するJavaVM言語の一つであり、Clojureの本体はjarファイルです。JavaVM言語であることの利点としてJavaのクラスを使うこともできます。 |
豊富なデータ構造 |
何も無いことを表すnilを始め、数値、文字列、キャラ、キーワード、シンボル、コレクション、リスト、ベクター、マップなどの豊富なデータ型が用意されています。なお、Clojureでは変数の値は不変なものとして扱います。 |
REPL |
REPL(Read-Eval-Print-Loop)と呼ばれる対話型形式で、コードをインタラクティブの作成することが可能です。 |
コードはデータ |
コードをデータとして扱います。コードはデータ、データはコードという考え方で、ホモコニック言語とも呼ばれる思想で設計されています。 |
マクロ |
Lispから引き継いだ強力なマクロ機能を持っています。 |
マルチスレッド |
ソフトウェアトランザクションメモリシステム(SMT)、及びリアクティブエージェントシステムによるクリーンなマルチスレッドを保証します。 |
遅延シーケンス |
データが必要になった時に評価を行う遅延シーケンスが使えます。この機能により無限に続くデータも扱えます。 |
ビルドツール |
Leiningenというビルドやパッケージ管理が出来るツールが用意されています。 |
豊富なライブラリ |
コミュニティリポジトリClojars.orgには豊富なライブラリが公開されています。 |
Java以外の実装 |
ClojureはJavaVM言語ですが、JavaScript に変換して動作する ClojureScript、.NET Frameworkのネイティブ実装である、ClojureCLR も派生プロダクトとして存在しています。 |
Clojureに関連するプログラミング言語
- ClojureScript
- ClojureCLR
- Lisp
- Scheme
- Haskell
- Scala
動作環境
基本的にJavaVM上で動作するので、Mac、Linux、Windows で利用可能です。
コマンドラインツール clj のWindows版は現状ではまだα版ですが、本体はJavaのjar 形式ファイルなのでjavaコマンドで直接起動することも可能です。
現在、Java TLS リリースであるJava 8、11、17に正式に対応しています(バージョン1.11.1現在)
Clojureのライセンス
Clojureのライセンスは、Eclipse Public License 1.0で提供されています。
Eclipse Public License(EPL)はオープンソースのライセンスの1つで、EPLライセンスされたプログラムの受領者は、使用・修正・コピーや、修正したバージョンの配布が可能です。 しかし、修正したバージョンを配布する場合はソースコードの入手方法を示すなどの義務が生じます。
製品ダウンロード
入手方法およびインストール方法は下記を参照して下さい。
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。