Clojure
[Wikipedia|▼Menu]

ClojureClojureのロゴ
パラダイム関数型言語, マルチパラダイム
登場時期2007年 (2007)
設計者Rich Hickey
最新リリース1.11.3 / 2024年4月24日[1]
型付け動的型付け, 強い型付け
影響を受けた言語LISP, ML, Haskell, Erlang[2]
プラットフォームJava仮想マシン
ライセンスEclipse Public License
ウェブサイトclojure.org
テンプレートを表示

ClojureCLR登場時期2010年 (2010)
設計者Rich Hickey
最新リリース1.11.0/ 2022年8月22日 (20か月前) (2022-08-22)
プラットフォーム.NET
ライセンスEclipse Public License
ウェブサイトgithub.com/clojure/clojure-clr
テンプレートを表示

Clojure (発音は/'klou??r/[3], クロージャー)は、関数型プログラミング言語であり、LISP系の言語の方言の一つである。関数型プログラミングのプログラミングスタイルでのインタラクティブな開発を支援し、マルチスレッドプログラムの開発を容易化する汎用言語である。Clojure言語のプログラムはJava仮想マシンで動作する。.NETで動作するClojureCLRも開発されている。Clojure言語は「データとしてのプログラムコード」 (英語:「code as data」) という思想で設計されており、洗練されたマクロ機構を持つ。
設計思想

リッチ・ヒッキー (Rich Hickey)がClojure言語を設計した目的は、既存のJavaプラットフォーム上で動作して、並行コンピューティングができる、関数型LISP系の言語を作ることである。[4][5]

Clojure言語が並行コンピューティングを実現する手法は、不変(イミュータブル)な状態の連鎖という概念によって特徴づけられる。[6]状態が不変であるため、ひとつの状態に対して複数の操作を並列に行うことができ、並列性という問題が「状態遷移の管理」になる。そのため、Clojure言語には、状態遷移に関して明確な定義をもつ可変な参照型がいくつか用意されている。
文法

他のLISP系言語と同様、Clojure言語のプログラムはS式で表現する。プログラムコードはコンパイルされる前に、リーダーによって解析され、内部データ構造に変換される。Clojure言語のリーダーは、リストの他に配列ハッシュテーブル集合リテラル表現として扱うことができ、そのままコンパイラに渡される。言いかえると、Clojureのコンパイラはリストだけでなく、上に挙げた全てのデータ構造を直接扱うことができるということである。Clojure言語はLisp-1であり、関数名と変数名は同一名前空間にある。また、他のLISP系言語とのコードの互換性は考慮されていない。
マクロ

Clojure言語のマクロ機構は、Common Lispのそれによく似ている。ただし、Clojure言語のバッククオート(「シンタクス・クオート」と呼ばれる)では、個々の記号が局所的な名前空間によって区別されるという点で、Common Lispのマクロとは異なっている。この仕組みによって、マクロ展開時の変数の捕獲(= マクロが展開された環境に同名の変数があると、その変数の値が変更されてしまうこと)を避けている。マクロ展開時の変数の捕獲を許容するように強制することもできるが、それは明示的に行わなければならない。また、Clojure言語では、現在の名前空間にインポートされた別の名前空間の大域名を変更することは許容されていない。
言語の特徴

対話型評価環境
(REPL)による動的な開発ができる。

関数が第一級のオブジェクトであり、副作用に基いたループを使わずに、再帰呼び出しを動作原理とするものであること。

遅延シーケンス (英語: lazy sequence)

イミュータブル永続なたくさんのデータ構造

ソフトウェアトランザクショナルメモリ、agentシステム、動的varシステムを使った並行コンピューティング

Java仮想マシンバイトコードを生成するコンパイラ言語であること。

マルチメソッドにより、複数の引数の型の組み合わせで実行される処理内容を変更することができる。(普通のオブジェクト指向言語のポリモーフィズムでは、ただ1つの引数によって決定される)

Javaとの密接な統合: Java仮想マシンのバイトコードにコンパイルされるため、Clojure言語で作られたアプリケーションソフトは、Javaの既存のシステムを生かすことができる。そのため、アプリケーションのパッケージ化やアプリケーションサーバーへの配備も容易に行える。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:24 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef