Clojure
Clojure jest solidnym, praktycznym i szybkim językiem programowania z zestawem użytecznych cech, które tworzą proste, spójne i wydajne narzędzie.

Język programowania Clojure

Clojure to dynamiczny, uniwersalny język programowania ogólnego przeznaczenia łączący przystępność i pracę interaktywną języka skryptowego z wydajną i solidną infrastrukturą programowania wielowątkowego. Clojure jest językiem kompilowanym lecz pozostaje całkowicie dynamiczny - każda funkcja obsługiwana przez Clojure jest obsługiwana w czasie wykonania. Clojure zapewnia łatwy dostęp do frameworków Java z opcjonalnymi podpowiedziami i wnioskowaniem typów, aby móc odwoływać się do Javy unikając refleksji.

Clojure jest dialektem języka Lisp i współdzieli z Lispem filozofię "code-as-data" oraz system makr. Clojure jest przede wszystkim funkcyjnym językiem programowania i posiada bogaty zestaw niezmiennych, trwałych struktur danych. Gdy wymagana jest zmiana stanu Clojure oferuje pamięć transakcyjną oraz system agentów reaktywnych zapewniających czyste, poprawne, wielowątkowe wzorce projektowe.

Mam nadzieję, że posługiwanie się Clojure jest eleganckie, użyteczne, praktyczne i zabawne.

Rich Hickey
autor języka Clojure i CTO spółki Cognitect

Cechy

Clojure posiada zestaw użytecznych cech, które razem tworzą proste, spójne i silne narzędzie.

Dynamiczny rozwój

Clojure is a dynamic environment you can interact with. Almost all of the language constructs are reified, and thus can be examined and changed. You can grow your program, with data loaded, adding features, fixing bugs, testing, in an unbroken stream.

Programowanie funkcyjne

Clojure provides the tools to avoid mutable state, provides functions as first-class objects, and emphasizes recursive iteration instead of side-effect based looping. Clojure is impure, yet stands behind the philosophy that programs that are more functional are more robust.

LISP

Clojure is a member of the Lisp family of languages. Many of the features of Lisp have made it into other languages, but Lisp's approach to code-as-data and its macro system still set it apart. Additionally, Clojure’s maps, sets, and vectors are as first class in Clojure as lists are in Lisp.

Polimorfizm czasu wykonania

Systems that utilize runtime polymorphism are easier to change and extend. Clojure offers simple, powerful and flexible mechanisms for runtime polymorphism. Clojure’s protocols and datatypes features add mechanisms for abstraction and data structure definition with no compromises vs the facilities of the host platform.

Programowanie współbieżne

Clojure simplifies multi-threaded programming in several ways. Because the core data structures are immutable, they can be shared readily between threads. Clojure, being a practical language, allows state to change but provides mechanism to ensure that, when it does so, it remains consistent, while alleviating developers from having to avoid conflicts manually using locks etc.

Hostowanie na JVM

Clojure is designed to be a hosted language, sharing the JVM type system, GC, threads etc. All functions are compiled to JVM bytecode. Clojure is a great Java library consumer, offering the dot-target-member notation for calls to Java. Clojure supports the dynamic implementation of Java interfaces and classes.

Wsparcie

Spółka Cognitect, opiekunowie Clojure, oferuje wsparcie komercyjne dla Clojure. Bez względu na stopień, w jakim zaadoptowałeś Clojure lub jesteś do tego gotowy - możesz                         oprzeć się na wsparciu 24x7 Cognitect.

Cognitect oferuje wsparcie rozwojowe, produkcyjne, oraz usługi przeglądu architektonicznego dla firm i zespołów wdrażających Clojure i ClojureScript.

“Stworzyliśmy jedno z najlepszych narzędzi w branży. Uważamy, że platforma ta jest lepszym sposobem na tworzenie oprogramowania i chcemy byś miał zaufanie do niej i używał ją. Open source nie oznacza, że jesteś zostawiony sam sobie.” – cognitect.com

Spółki używające Clojure

“Nasz system zbudowany na Clojure właśnie obsłużył pierwszy czarny piątek i przeszedł przez to bez problemu.”
Anthony Marcar, Senior Architect
Walmart Labs
“Clojure jest funkcjonalnym językiem programowania od góry do dołu. Oznacza to, że kod napisany w języku Clojure jest modułowy, reużywalny i łatwy do zrozumienia.”
Chris Price, Software Engineer
Puppet Labs
“Rozmawialiśmy o istniejącej społeczności Clojure, o dojrzałości samego języka i o tempie rozwoju branży. Firmy dostrzegają szybkość dostarczania rozwiązań na rynek... z wykorzystaniem Clojure.”
Dave Elliman, Head of Technology
ThoughtWorks