Clojure
Clojureは、堅牢で実用的、そして高速なプログラミング言語であり、それらが組み合わさってシンプルで一貫性があり、強力なツールを形成する便利な機能群を備えています。

Clojureプログラミング言語

Clojureは、動的な汎用プログラミング言語であり、スクリプト言語の親しみやすさとインタラクティブな開発と、マルチスレッドプログラミングのための効率的で堅牢なインフラストラクチャを兼ね備えています。Clojureはコンパイル言語ですが、完全に動的であり、Clojureでサポートされているすべての機能はランタイムでサポートされています。Clojureは、Javaフレームワークへの簡単なアクセスを提供し、Javaへの呼び出しがリフレクションを回避できるように、オプションの型ヒントと型推論を備えています。

ClojureはLispの方言であり、コードをデータとして扱う哲学と強力なマクロシステムをLispと共有しています。Clojureは主に関数型プログラミング言語であり、豊富なイミュータブル(不変)で永続的なデータ構造を備えています。可変状態が必要な場合、Clojureは、クリーンで正確なマルチスレッド設計を保証するソフトウェアトランザクショナルメモリシステムとリアクティブなAgentシステムを提供します。

Clojureの機能の組み合わせが、エレガントで、強力で、実用的で、そして使うのが楽しいものであると願っています。

Rich Hickey
Clojureの作者

Clojureで成功している企業

「私たちのClojureシステムは、最初のウォルマートのブラックフライデーを無傷で乗り切りました。」
Anthony Marcar, シニアアーキテクト
Walmart Labs
「Clojureは、最初から最後まで関数型プログラミング言語です。これは、Clojureで書かれたコードが非常にモジュール化され、構成可能で、再利用可能であり、推論しやすいことを意味します。」
Chris Price, ソフトウェアエンジニア
Puppet Labs
「既存のClojureコミュニティ、言語自体の成熟度、そして業界で見られる勢いについて話し合いました。企業は、Clojureに基づいて市場投入までのスピードを実現しています。」
Dave Elliman, テクノロジー責任者
ThoughtWorks

Clojureの成功事例コミュニティがClojureをどのように使用しているか、およびClojureを使用している企業について詳しくお読みください。

特徴

Clojureには、シンプルで一貫性があり、強力なツールを形成する便利な機能群があります。

動的開発

Clojureは、インタラクトできる動的な環境です。言語構造のほぼすべてが具体化されており、したがって、検査および変更できます。データがロードされた状態でプログラムを成長させ、機能を追加し、バグを修正し、テストを中断することなく、継続的なストリームで行えます。

関数型プログラミング

Clojureは、可変状態を回避するためのツールを提供し、関数を第一級オブジェクトとして提供し、副作用に基づくループの代わりに再帰的な反復を重視します。Clojureは不純ですが、より関数的なプログラムはより堅牢であるという哲学を支持しています。

LISP

ClojureはLisp言語ファミリーの一員です。Lispの機能の多くは他の言語に取り入れられてきましたが、コードをデータとして扱うというLispのアプローチとマクロシステムは、依然として他とは一線を画しています。さらに、Clojureのマップ、セット、およびベクターは、Lispのリストと同様に、Clojureで第一級です。

ランタイムポリモーフィズム

ランタイムポリモーフィズムを利用するシステムは、変更と拡張が容易です。Clojureは、ランタイムポリモーフィズムのためのシンプルで強力かつ柔軟なメカニズムを提供します。Clojureのプロトコルとデータ型の機能は、ホストプラットフォームの機能と妥協することなく、抽象化とデータ構造定義のためのメカニズムを追加します。

並行プログラミング

Clojureは、いくつかの方法でマルチスレッドプログラミングを簡素化します。コアデータ構造はイミュータブルであるため、スレッド間で簡単に共有できます。Clojureは実用的な言語であるため、状態の変更を許可しますが、その際、ロックなどを使用して手動で競合を回避する必要がなく、一貫性が維持されるようにするメカニズムを提供します。

JVMでホスト

Clojureは、JVMの型システム、GC、スレッドなどを共有するホスト言語として設計されています。すべての関数はJVMバイトコードにコンパイルされます。Clojureは、Javaライブラリの優れたコンシューマーであり、Javaへの呼び出しにはドットターゲットメンバー表記法を提供します。Clojureは、Javaインターフェースとクラスの動的な実装をサポートしています。

今後のイベント

Nubank

Nubankは、ブラジル、メキシコ、コロンビアで6,500万人以上の顧客にサービスを提供する、世界最大のデジタルバンキングプラットフォームの1つです。創業当初から、NuはClojureで目覚ましい成功を収めており、ミッションクリティカルなソフトウェアを大規模に運用しています。2020年、同社はClojureとDatomicデータベースの背後にあるコンサルタント会社であるCognitectを買収しました。

この買収を通じて、NubankはClojureのアイデアをビジネスの俊敏性に変換し、複雑さと戦い、人々をエンパワーするという会社の使命を活用する上で、開発者を支援するワールドクラスのチームを統合しました。現在、NuはClojureとClojureScriptの主要な企業スポンサーです。

Nubankが製品とチームを構築する方法の詳細については、building.nubank.com.brをご覧ください。