Кложур
Парадигма | мультипарадигма : |
---|---|
Семья | Лисп |
Разработано | Рич Хикки |
Впервые появился | 2007 г |
Стабильная версия | 1.11.2 [8] / 8 марта 2024 г |
Дисциплина набора текста | |
Управление памятью | Сбор мусора через хост ( JVM , CLR , среда выполнения JavaScript, такая как V8 в случае ClojureScript или BEAM (см. ниже ) |
Платформа | |
Лицензия | Затмение Публичное |
Расширения имен файлов |
|
Веб-сайт | закрытие |
Диалекты | |
ClojureScript, ClojureDart | |
Под влиянием | |
Под влиянием | |
|
Clojure ( / ˈ k l oʊ ʒ ər / , как замыкание ) [17] [18] — это динамический и функциональный диалект языка программирования Lisp на платформе Java . [19] [20]
Как и большинство других Lisp, синтаксис Clojure построен на S-выражениях , которые перед компиляцией сначала преобразуются в структуры данных программой чтения. [21] [17] Clojure Программа чтения поддерживает буквальный синтаксис для карт , наборов и векторов , а также списков, и они напрямую компилируются в упомянутые структуры. [21] Clojure рассматривает код как данные и имеет макросистему Lisp . [22] Clojure — это Lisp-1 , и он не предназначен для совместимости по коду с другими диалектами Lisp, поскольку использует собственный набор структур данных, несовместимых с другими Lisp. [22]
Clojure выступает за неизменность и неизменяемые структуры данных и призывает программистов четко указывать на управление идентификацией и ее состояниями. [23] Такое внимание к программированию с неизменяемыми значениями и явными конструкциями прогресса во времени призвано облегчить разработку более надежных, особенно параллельных , простых и быстрых программ. [24] [25] [17] Хотя его система типов является полностью динамической , недавние усилия также направлены на реализацию системы зависимых типов . [26]
Язык был создан Ричем Хики в середине 2000-х годов первоначально для платформы Java; с тех пор язык был портирован на другие платформы, такие как Common Language Runtime (.NET). Хикки продолжает руководить развитием языка как его пожизненный доброжелательный диктатор .
История [ править ]
Рич Хики — создатель языка Clojure. [19] До Clojure он разработал dotLisp
, аналогичный проект на платформе .NET , [27] и три более ранние попытки обеспечить совместимость между Lisp и Java : интерфейс иностранного языка Java для Common Lisp ( jfli
), [28] Интерфейс внешних объектов для Lisp (FOIL), [29] и Lisp-дружественный интерфейс для Java-сервлетов (Lisplets). [30]
Хики провел около двух с половиной лет, работая над Clojure, прежде чем выпустить его публично в октябре 2007 года. [31] большую часть этого времени работал исключительно над Clojure без внешнего финансирования. По истечении этого времени Хики отправил электронное письмо с анонсом языка некоторым друзьям в сообществе Common Lisp.
Название Clojure, по мнению Хики, представляет собой игру слов , основанную на концепции программирования « замыкание », включающую буквы C, L и J, обозначающие C# , Lisp и Java соответственно — три языка, которые оказали большое влияние на дизайн Clojure. [18]
Дизайн [ править ]
Рич Хики разработал Clojure, потому что ему нужен был современный Lisp для функционального программирования , симбиозный с существующей платформой Java и предназначенный для параллелизма . [24] [25] [32] [17] Он также подчеркнул важность простоты проектирования языков программирования и архитектуры программного обеспечения, выступая за слабую связь , полиморфизм через протоколы и классы типов вместо наследования , функции без состояния, которые размещаются в пространстве имен вместо методов или замену синтаксиса данными . [33] [34] [35]
Подход Clojure к состоянию характеризуется концепцией идентичностей. [23] которые представлены как серия неизменяемых состояний во времени. Поскольку состояния являются неизменяемыми значениями, любое количество рабочих процессов может работать с ними параллельно, и параллелизм становится вопросом управления изменениями из одного состояния в другое. Для этой цели Clojure предоставляет несколько изменяемых ссылочных типов , каждый из которых имеет четко определенную семантику перехода между состояниями. [23]
Clojure работает на платформе Java и, как следствие, интегрируется с Java и полностью поддерживает вызов кода Java из Clojure. [36] [17] и код Clojure также можно вызывать из Java. [37] Сообщество использует такие инструменты, как интерфейс командной строки (CLI) Clojure. [38] или Лейнинген для автоматизации проектов, обеспечивая поддержку интеграции Maven . Эти инструменты управляют пакетами проектов и зависимостями и настраиваются с использованием синтаксиса Clojure.
Будучи диалектом Лиспа, Clojure поддерживает функции как первоклассные объекты , цикл чтения-оценки-печати (REPL) и систему макросов. [6] в Clojure Макросистема Lisp очень похожа на систему макросов Common Lisp , за исключением того, что версия обратной кавычки Clojure (называемая «синтаксической кавычкой») квалифицирует символы с помощью их пространства имен . Это помогает предотвратить непреднамеренный захват имен, поскольку привязка к именам, указанным в пространстве имен, запрещена. Можно принудительно расширить захват макроса, но это должно быть сделано явно. Clojure не поддерживает определяемые пользователем макросы чтения, но программа чтения поддерживает более ограниченную форму синтаксического расширения. [39] Clojure поддерживает несколько методов [40] а для интерфейсоподобных абстракций есть протокол [41] основанный на полиморфизме и системе типов данных с использованием записей , [42] обеспечение высокопроизводительного и динамического полиморфизма, призванного избежать проблем с выражением .
Clojure поддерживает ленивые последовательности и поддерживает принцип неизменяемости и постоянных структур данных . В функциональном языке упор делается на рекурсию и функции высшего порядка, а не на циклы, основанные на побочных эффектах. Автоматическая оптимизация хвостовых вызовов не поддерживается, поскольку JVM не поддерживает ее изначально; [43] [44] [45] это можно сделать явно, используя recur
ключевое слово. [46] Для параллельного и параллельного программирования Clojure предоставляет программную транзакционную память , [47] система реактивных агентов , [1] и каналов . параллельное программирование на основе [48]
В Clojure 1.7 появились условные обозначения чтения, позволив встраивать код Clojure, ClojureScript и ClojureCLR в одно и то же пространство имен. [49] [21] Преобразователи были добавлены как метод составления преобразований. Преобразователи позволяют использовать функции более высокого порядка, такие как отображение и свертывание , для обобщения любого источника входных данных. Хотя традиционно эти функции работают с последовательностями , преобразователи позволяют им работать с каналами и позволяют пользователю определять свои собственные модели для преобразования. [50] [51] [52]
данных Расширяемая нотация
Расширяемая нотация данных , или edn , [53] — это подмножество языка Clojure, предназначенное для использования в качестве формата передачи данных. Его можно использовать для сериализации и десериализации структур данных Clojure, а сам Clojure использует расширенный набор edn для представления программ.
edn используется аналогично JSON или XML , но имеет относительно большой список встроенных элементов, показанных здесь с примерами:
- логические значения:
true
,false
- струны:
"foo bar"
- персонажи:
\c
,\tab
- символы:
name
- ключевые слова:
:key
- целые числа:
123
- числа с плавающей запятой:
3.14
- списки:
(a b 42)
- векторы:
[a b 42]
- карты:
{:a 1, "foo" :bar, [1 2 3] four}
- наборы:
#{a b [1 2 3]}
- ноль:
nil
( значение , подобное нулю )
В дополнение к этим элементам он поддерживает расширяемость за счет использования тегов , которые состоят из символов #
за которым следует символ. При обнаружении тега программа чтения передает значение следующего элемента соответствующему обработчику, который возвращает значение данных. Например, это может быть тегированный элемент: #myapp/Person {:first "Fred" :last "Mertz"}
, интерпретация которого будет зависеть от соответствующего обработчика средства чтения.
Это определение элементов расширения с точки зрения других позволяет избежать использования соглашений или контекста для передачи элементов, не включенных в базовый набор.
Альтернативные платформы [ править ]
Основной платформой Clojure является Java . [20] [36] но существуют и другие целевые реализации. Наиболее заметным из них является ClojureScript. [54] который компилируется в ECMAScript 3, [55] и ClojureCLR, [56] полный порт на платформе .NET , совместимый с ее экосистемой.
Другие реализации Clojure на разных платформах включают:
- Бабашка, [57] Собственный язык сценариев Clojure, использующий собственный образ GraalVM и малый интерпретатор Clojure.
- КлджПерл, [58] Clojure на Perl
- КложурДарт, [59] Расширьте возможности Clojure для мобильных и настольных приложений, портировав Clojure на Dart и Flutter.
- Кложерль, [60] Clojure на BEAM , Erlang виртуальной машине
- базилисп, [61] Совместимый с Clojure (-ish) диалект Lisp, ориентированный на Python 3.8+.
- КложурРС, [62] Clojure на Rust
- Хорек, [63] компилируется в автономный C++11, который может работать на микроконтроллерах
- рывок, [64] Собственный Clojure, размещенный на C++ в JIT на базе LLVM.
- Джокер, [65] интерпретатор и линтер, написанные на Go
- лаз3р, [66] подмножество Clojure, работающее на виртуальной машине ActionScript (платформа Adobe Flash Player)
- Пикси, [67] Диалект Lisp, вдохновленный Clojure, написанный на RPython.
- Руж, [68] Clojure на YARV в Ruby
Инструменты [ править ]
Инструментарий для разработки Clojure за последние годы значительно улучшился. Ниже приведен список некоторых популярных IDE и текстовых редакторов с плагинами, которые добавляют поддержку программирования на Clojure: [69]
- Emacs с CIDER [70]
- IntelliJ IDEA с курсивом [71] (бесплатная лицензия доступна для некоммерческого использования)
- Sublime Text с Clojure Sublimed, [72] или Радар, [73]
- Вим , с камином.vim, [74] [75] вим-элин, [76] или Заклинание (только для Neovim) [77] [78]
- Код Visual Studio с Calva [79] или Клевер [80]
- Независимость от IDE (с использованием протокола языкового сервера для статического анализа и/или проверки ): clj-kondo [81] или Clojure-LSP [82]
В дополнение к инструментам, предоставляемым сообществом, официальные инструменты интерфейса командной строки (CLI) Clojure [38] также стали доступны в Linux , macOS и Windows начиная с Clojure 1.9. [83]
Развитие [ править ]
Процесс разработки ограничен основной командой Clojure, хотя проблемы публично видны на странице проекта Clojure JIRA . [84] Любой может задавать вопросы или предлагать проблемы и идеи на сайте Ask.clojure.org. [85] Если будет установлено, что новая проблема требует заявки JIRA, основной член команды проверит ее и добавит. Проблемы JIRA обрабатываются командой проверяющих и окончательно утверждаются Ричем Хики. [86] [87]
Влияние [ править ]
Благодаря постоянному интересу к функциональному программированию, внедрение Clojure разработчиками программного обеспечения, использующими платформу Java, продолжает расти. Этот язык также рекомендовали такие разработчики программного обеспечения, как Брайан Гетц. [88] [89] [90] Эрик Эванс, [91] [92] Джеймс Гослинг , [93] Пол Грэм , [94] и Роберт К. Мартин . [95] [96] [97] [98] Компания ThoughtWorks , оценивая языки функционального программирования для своего технологического радара, [99] описал Clojure как «простую и элегантную реализацию Lisp на JVM» в 2010 году и повысил его статус до «ADOPT» в 2012 году. [100]
В «Отчете об экосистеме JVM 2018» (который был назван «крупнейшим опросом разработчиков Java за всю историю»), подготовленном в сотрудничестве Snyk и журналом Java Magazine, Clojure назван вторым наиболее часто используемым языком программирования в JVM по « Основные приложения». [101] Clojure используется в промышленности фирмами [102] такие как Apple , [103] [104] Атласиан , [105] Круг финансирования , [106] Нетфликс , [107] Нубанк , [108] Марионетка , [109] и Уолмарт [110] а также правительственные учреждения, такие как НАСА . [111] Он также использовался для творческих вычислений, включая визуальное искусство, музыку, игры и поэзию. [112]
за 2023 год В опросе разработчиков Stack Overflow Clojure занял четвертое место по популярности в категории языков программирования и сценариев: 68,51% респондентов, которые работали с ним в прошлом году, заявили, что хотели бы продолжать его использовать. Однако в желаемой категории его отметили как таковой только 2,2% опрошенных, тогда как JavaScript 40,15 с наивысшей оценкой желали % разработчиков, участвовавших в опросе. [113] Возможно, это можно объяснить ограниченными профессиональными возможностями для разработчиков Clojure: в американском разделе Indeed было чуть более 50 результатов поиска по запросу «разработчик Clojure». по состоянию на май 2024 года [114]
История выпусков [ править ]
Версия | Дата выпуска | Основные функции, улучшения |
---|---|---|
17 октября 2007 г. [31] | Первоначальный публичный выпуск | |
1.0 | 4 мая 2009 г. [115] | Первый стабильный выпуск |
1.1 | 31 декабря 2009 г. [116] | Фьючерсы |
1.2 | 19 августа 2010 г. [117] | Протоколы |
1.3 | 23 сентября 2011 г. [118] | Расширенная поддержка примитивов |
1.4 | 15 апреля 2012 г. [119] | Литералы чтения |
1.5 | 1 марта 2013 г. [120] | Редукторы |
1.5.1 | 10 марта 2013 г. [121] | Исправление утечки памяти |
1.6 | 25 марта 2014 г. [122] | Java API, улучшенные алгоритмы хеширования |
1.7 | 30 июня 2015 г. [49] | Преобразователи, условные обозначения считывателей |
1.8 | 19 января 2016 г. [123] | Дополнительные строковые функции, прямая связь, сервер сокетов |
1.9 | 8 декабря 2017 г. [124] | Интеграция со спецификациями и инструментами командной строки |
1.10 | 17 декабря 2018 г. [125] | Улучшенный отчет об ошибках, совместимость с Java. |
1.10.1 | 6 июня 2019 г. [126] | Обход снижения производительности Java и улучшение отчетов об ошибках clojure.main |
1.10.2 | 26 января 2021 г. [127] | Улучшения взаимодействия/совместимости Java и другие важные исправления языка. |
1.10.3 | 4 марта 2021 г. [128] | поддержка prepl для условных операторов чтения |
1.11.0 | 22 марта 2022 г. [129] | Новый синтаксис для вызова аргумента ключевого слова, новый clojure.math пространство имен, псевдонимы пространства имен без загрузки и новые вспомогательные функции, добавленные в clojure.core |
1.11.1 | 5 апреля 2022 г. [130] | Откат непреднамеренного изменения в двоичной сериализации объектов типов clojure.lang.Keyword и clojure.lang.ArraySeq . |
1.11.2. | 8 марта 2024 г. [8] | Исправление CVE-2024-22871, связанной с отказом в обслуживании. уязвимости |
Последняя версия |
См. также [ править ]
Ссылки [ править ]
- ^ Перейти обратно: а б «Агенты и асинхронные действия» . Сайт Clojure.org . Проверено 7 июля 2019 г.
- ^ «Параллельное программирование» . Сайт Clojure.org . Проверено 7 июля 2019 г.
- ^ Хикки, Рич; участники. "core.async" . Гитхаб . Проверено 7 июля 2019 г.
- ^ «Функциональное программирование» . Сайт Clojure.org . Проверено 7 июля 2019 г.
- ^ Нолен, Дэвид; Хикки, Рич. "core.logic" . Гитхаб . Проверено 7 июля 2019 г.
- ^ Перейти обратно: а б «Макросы» . Сайт Clojure.org . Проверено 7 июля 2019 г.
- ^ Эстерхази, Паулюс. «Руководство по потоковым макросам» . Сайт Clojure.org . Проверено 7 июля 2019 г.
- ^ Перейти обратно: а б Миллер, Алекс (08 марта 2024 г.). «Выпуск Clojure 1.11.2» . Сайт Clojure.org .
- ^ Фогус, Майкл (2011). «Вопросы и ответы Рича Хики» . CodeQuarterly.com . Архивировано из оригинала 11 января 2017 г.
- ^ Хикки, Рич (2011). «Простое, легкое» . Ютуб .
{{cite web}}
: Неизвестный параметр|note=
игнорируется ( помогите ) - ^ Боннер-сержант Амброуз (2012 г.). Практическая дополнительная система типов для Clojure (Диссертация). Университет Западной Австралии.
- ^ «Программирование на Clojure» (PDF) . OReilly.com . Проверено 30 апреля 2013 г.
- ^ Хикки, Рич. «Книжная полка Clojure» . Amazon.com . Архивировано из оригинала 3 октября 2017 г. Проверено 7 июля 2019 г.
- ^ Роуз, Кальвин; участники. «Язык Джанет» . Джанет-Ланг.org . Проверено 18 февраля 2023 г.
- ^ Болдридж, Тимоти. «Пикси» . PixieLang.org . Проверено 7 июля 2019 г.
- ^ Рамачандра, Рамкумар. «Рейн» . Гитхаб . Проверено 7 июля 2019 г.
- ^ Перейти обратно: а б с д и Эдвардс, Кэтрин (10 августа 2009 г.). «А-Я языков программирования: Clojure» . Computerworld.com.au . Архивировано из оригинала 26 августа 2019 г.
- ^ Перейти обратно: а б Хики, Рич (5 января 2009 г.). «Значение и произношение Clojure» . Google.com .
- ^ Перейти обратно: а б Крил, Пол (22 марта 2012 г.). «Изобретатель Clojure Хики теперь нацелен на Android» . InfoWorld.com .
- ^ Перейти обратно: а б «Кложур» . Сайт Clojure.org . Проверено 7 июля 2019 г.
- ^ Перейти обратно: а б с «Читатель» . Сайт Clojure.org . Проверено 7 июля 2019 г.
- ^ Перейти обратно: а б «Отличия от других Лиспов» . Сайт Clojure.org . Проверено 7 июля 2019 г.
- ^ Перейти обратно: а б с «Ценности и изменения: подход Clojure к идентичности и состоянию» . Сайт Clojure.org . Проверено 7 июля 2019 г.
- ^ Перейти обратно: а б Хикки, Рич. «Обоснование» . Сайт Clojure.org . Проверено 7 июля 2019 г.
- ^ Перейти обратно: а б Торре, Чарльз (6 октября 2009 г.). «Эксперт эксперту: Рич Хики и Брайан Бекман – изнутри Clojure» . MSDN.com .
- ^ "clojure/spec.alpha" . Гитхаб . 26 апреля 2017 г.
- ^ Хики, Рич (16 октября 2002 г.). «[ANN] dotLisp: диалект Лиспа для .Net» . Google.com .
- ^ Хики, Рич (15 апреля 2013 г.). "джфли" . SourceForge.net .
- ^ Хики, Рич (3 апреля 2013 г.). «фольга: интерфейс внешних объектов для Lisp» . SourceForge.net .
- ^ Хики, Рич (7 марта 2013 г.). «Лисплеты» . SourceForge.net .
- ^ Перейти обратно: а б Хики, Рич (12 июня 2020 г.). «История Clojure» . Труды ACM по языкам программирования . 4 (ХОПЛ): 1–46. дои : 10.1145/3386321 . S2CID 219603760 .
- ^ Эльмендорф, Дирк (01 апреля 2010 г.). «Компьютерщик по размеру экономики — интервью с Ричем Хики, создателем Clojure» . LinuxJournal.com .
- ^ «Простое, легкое» . ИнфоQ . Проверено 2 мая 2024 г.
- ^ «(повторить мысли): преимущества программирования, ориентированного на данные» . yogthos.net . Проверено 2 мая 2024 г.
- ^ "talk-transcripts/Hickey_Rich/EffectivePrograms.md в мастере · matthiasn/talk-transcripts" . Гитхаб . Проверено 2 мая 2024 г.
- ^ Перейти обратно: а б «Размещено на JVM» . Сайт Clojure.org . Проверено 7 июля 2019 г.
- ^ «Взаимодействие с Java» . Сайт Clojure.org . Проверено 7 июля 2019 г.
- ^ Перейти обратно: а б Миллер, Алекс. «Руководство по Deps и CLI» . Сайт Clojure.org . Проверено 8 июля 2019 г.
- ^ Хикки, Рич. "эдн" . Гитхаб . Проверено 7 июля 2019 г.
- ^ «Мультиметоды и иерархии» . Сайт Clojure.org . Проверено 7 июля 2019 г.
- ^ «Протоколы» . Сайт Clojure.org . Проверено 7 июля 2019 г.
- ^ «Типы данных: deftype, defrecord и reify» . Сайт Clojure.org . Проверено 7 июля 2019 г.
- ^ Гетц, Брайан (20 ноября 2014 г.). «Управление: отрезвляющие части» . YouTube.com .
- ^ Роуз, Джон (12 июля 2007 г.). «хвостовые вызовы в виртуальной машине» . Oracle.com .
- ^ Роуз, Джон (11 февраля 2009 г.). «Некоторые языки должны иметь возможность выполнять хвостовые вызовы» . Java.net .
- ^ «Специальные формы» . Сайт Clojure.org . Проверено 7 июля 2019 г.
- ^ «Рефы и транзакции» . Сайт Clojure.org . Проверено 7 июля 2019 г.
- ^ Хики, Рич (28 июня 2013 г.). «Каналы Clojure core.async» . Сайт Clojure.org .
- ^ Перейти обратно: а б Миллер, Алекс (30 июня 2015 г.). «Clojure 1.7 теперь доступен» . Сайт Clojure.org .
- ^ Хики, Рич (17 сентября 2014 г.). «Преобразователи» . YouTube.com .
- ^ Хики, Рич (6 августа 2014 г.). «Преобразователи приходят» . Когнитект.com .
- ^ Хики, Рич (20 ноября 2014 г.). «Внутренние преобразователи» . YouTube.com .
- ^ «Официальная спецификация EDN» . edn-format.org . 27 апреля 2022 г.
- ^ «Кложурскрипт» . ClojureScript.org . Проверено 06 июля 2019 г.
- ^ «ClojureScript – Часто задаваемые вопросы (для разработчиков JavaScript)» . ClojureScript.org . Проверено 4 февраля 2018 г.
- ^ «КложуреCLR» . Гитхаб . Проверено 28 июня 2012 г.
- ^ Боркент, Михель. «Бабашка» . Бабашка.орг . Проверено 19 августа 2019 г.
- ^ Ху, Вэй. «Лисп на Perl» . MetaCPAN.org . Проверено 06 июля 2019 г.
- ^ «Что такое ClojureDart?» , GitHub , Tensegritics, 16 декабря 2022 г. , получено 16 декабря 2022 г.
- ^ Факорро, Хуан. «Кложерль» . Гитхаб . Проверено 06 июля 2019 г.
- ^ «Вазилисп» . Гитхаб . Проверено 13 мая 2024 г.
- ^ «КложурРС» . Гитхаб . Проверено 17 марта 2022 г.
- ^ Аккая, Нурулла. «Хорек» . Ferret-Lang.org . Проверено 06 июля 2019 г.
- ^ Вилкерсон, Джи. "джанк" . Jank-Lang.org . Проверено 17 августа 2022 г.
- ^ Батаев Роман. «Джокер» . Joker-Lang.org . Проверено 06 июля 2019 г.
- ^ Кэннон, Эймон. «Лаз3р» . Гитхаб . Проверено 06 июля 2019 г.
- ^ Болдридж, Тимоти. «Пикси» . PixieLang.org . Проверено 06 июля 2019 г.
- ^ Коннор, Эш. «Руж» . Гитхаб . Проверено 06 июля 2019 г.
- ^ Миллер, Алекс (04 февраля 2019 г.). « Результаты «Состояния Clojure 2019»» . Сайт Clojure.org .
- ^ Бацов, Божидар; участники. «CIDER: потрясающая интерактивная среда разработки Clojure» . СИДЕР.mx . Проверено 5 июля 2019 г.
- ^ Флеминг, Колин. «Cursive: обеспечивает полную поддержку языков Clojure и ClojureScript» . JetBrains.com . Проверено 5 июля 2019 г.
- ^ Прокопов, Никита. «Clojure Sublimed» . PackageControl.io . Проверено 18 февраля 2023 г.
- ^ Хелениус, Ээро. «Радар» . FlowThing.me . Проверено 18 февраля 2023 г.
- ^ Поуп, Тим. «fireplace.vim: поддержка Clojure REPL» . ВИМ.орг . Проверено 5 июля 2019 г.
- ^ Монро, Доминик (13 декабря 2016 г.). «Clojure и Vim: обзор – это вполне возможно» . JUXT.pro .
- ^ Масаси, Иидзука (29 апреля 2024 г.). «vim-elin: среда разработки Clojure для Vim/Neovim, написанная в основном на Babashka» . Гитхаб . Архивировано из оригинала 2 мая 2024 г. Проверено 2 мая 2024 г.
- ^ Колдуэлл, Оливер. «Инструменты Neovim Clojure (Script) поверх prepl» . Гитхаб . Проверено 9 ноября 2019 г.
- ^ Колдуэлл, Оливер (6 ноября 2019 г.). «Начало работы с Clojure, Neovim и Conjure за считанные минуты» . oli.me.uk.
- ^ Стрёмберг, Питер. «Кальва: интерактивное программирование на Clojure и ClojureScript» . VisualStudio.com . Проверено 5 июля 2019 г.
- ^ Сабо, Маурисио. «Клевер» . VisualStudio.com . Проверено 28 января 2021 г.
- ^ clj-kondo/clj-kondo , clj-kondo, 30 апреля 2024 г. , получено 2 мая 2024 г.
- ^ «Обзор — Clojure LSP» . Clojure-lsp.io . Проверено 2 мая 2024 г.
- ^ Миллер, Алекс (08 декабря 2017 г.). «Кложур 1.9» . Когнитект.com .
- ^ «Кложур» . Атласиан.нет . Проверено 7 июля 2019 г.
- ^ «Форум Клоджюра» . Clojure.org . Проверено 20 марта 2020 г.
- ^ Хикки, Рич (26 ноября 2018 г.). «Открытый исходный код — это не про вас» . Гитхаб .
- ^ «Рабочий процесс» . Сайт Clojure.org . Проверено 7 июля 2019 г.
- ^ Гетц, Брайан (24 мая 2020 г.). «Любимый JVM-язык Брайана Гетца, не являющийся Java (часть 1 из 3)» . Twitch.tv .
- ^ Гетц, Брайан (24 мая 2020 г.). «Любимый JVM-язык Брайана Гетца, не являющийся Java (часть 2 из 3)» . Twitch.tv .
- ^ Гетц, Брайан (24 мая 2020 г.). «Любимый JVM-язык Брайана Гетца, не являющийся Java (часть 3 из 3)» . Twitch.tv .
- ^ Эванс, Эрик (14 августа 2018 г.). «Время моделирования: Эрик Эванс: Европа, ориентированная на предметную область дизайна, 2018» . YouTube.com .
- ^ Эванс, Эрик (21 ноября 2014 г.). «Эрик Эванс в Твиттере» . Twitter.com .
- ^ «Встреча Джеймса Гослинга с лондонским Java-сообществом» . YouTube.com . 11 октября 2016 г.
- ^ Грэм, Пол (6 мая 2016 г.). «Пол Грэм в Твиттере» . Twitter.com .
- ^ Мартин, Роберт (22 августа 2019 г.). «Почему Clojure?» . CleanCoder.com .
- ^ Мартин, Роберт (29 ноября 2018 г.). «Дядя Боб Мартин в Твиттере» . Twitter.com .
- ^ Мартин, Роберт (01 августа 2018 г.). «Введение в функциональное программирование» . CleanCoders.com .
- ^ Мартин, Роберт (11 июля 2017 г.). «Прагматическое функциональное программирование» . CleanCoder.com .
- ^ «Технологический радар | Убежденный путеводитель по сегодняшнему технологическому ландшафту» . Мыслительные работы . Проверено 20 мая 2024 г.
- ^ «Технологический радар: Clojure» . Сайт ThoughtWorks.com . Проверено 10 февраля 2019 г.
- ^ Клен, Саймон; Бинсток, Эндрю (17 октября 2018 г.). «Отчет об экосистеме JVM 2018» . Сник.io.
- ^ «Истории успеха» . Сайт Clojure.org . Проверено 27 октября 2018 г.
- ^ Лютиков, Роман (17 декабря 2017 г.). «Роман Лютиков в Твиттере» . Twitter.com .
- ^ «Работа в Apple» . Apple.com . Проверено 06 июля 2019 г.
- ^ Борхес, Леонардо (07 июля 2015 г.). «Сотрудничество в реальном времени с Clojure» . YouTube.com .
- ^ Питер, Джон (4 октября 2016 г.). «Clojure в Лондоне: Круг финансирования – кредитование Clojure» . JUXT.pro .
- ^ Уильямс, Алекс (3 августа 2014 г.). «Новые создатели стека: Адриан Кокрофт о Sun, Netflix, Clojure, Go, Docker и других» . TheNewStack.io .
- ^ «Nubank приобретает американскую технологическую компанию Cognitect» . 23 июля 2020 г.
- ^ Прайс, Крис (11 апреля 2014 г.). «Новая эра сервисов приложений в Puppet Labs» . Puppet.com . Проверено 6 августа 2020 г.
- ^ Филлипс, Марк (14 июля 2015 г.). «Walmart использует Clojure в больших масштабах» . Когнитект.com .
- ^ «Общий репозиторий метаданных» . Гитхаб . Проверено 06 июля 2019 г.
- ^ Мейер, Карин (06 мая 2015 г.). «Творческие вычисления с Clojure» . OReilly.com .
- ^ «Опрос разработчиков Stack Overflow, 2023 г.» . Переполнение стека . Проверено 2 мая 2024 г.
- ^ « Результаты поиска «Разработчик Clojure» на Indeed.com [Архивировано из-за изменчивости источника]» . Архив.is . 2 мая 2024 г. Проверено 2 мая 2024 г.
- ^ Хики, Рич (4 мая 2009 г.). «Кложур 1.0» . БлогСпот.com .
- ^ Хики, Рич (31 декабря 2009 г.). «Выпуск Clojure 1.1» . БлогСпот.com .
- ^ Хики, Рич (19 августа 2010 г.). «Выпуск Clojure 1.2» . Google.com .
- ^ Редингер, Кристофер (23 сентября 2011 г.). «[ANN] Clojure 1.3 выпущен» . Google.com .
- ^ Диперт, Алан (17 апреля 2012 г.). «[ANN] Clojure 1.4 выпущен» . Google.com .
- ^ Хэллоуэй, Стюарт (01 марта 2013 г.). «ANN: Clojure 1.5» . Google.com .
- ^ Хэллоуэй, Стюарт (10 марта 2013 г.). «Кложур 1.5.1» . Google.com .
- ^ Миллер, Алекс (25 марта 2014 г.). «[ANN] Clojure 1.6» . Google.com .
- ^ Миллер, Алекс (19 января 2016 г.). «Clojure 1.8 теперь доступен» . Сайт Clojure.org .
- ^ Миллер, Алекс (08 декабря 2017 г.). «Clojure 1.9 теперь доступен» . Сайт Clojure.org .
- ^ Миллер, Алекс (17 декабря 2018 г.). «Выпуск Clojure 1.10» . Сайт Clojure.org .
- ^ Миллер, Алекс (6 июня 2019 г.). «Выпуск Clojure 1.10.1» . Сайт Clojure.org .
- ^ Миллер, Алекс (26 января 2021 г.). «Выпуск Clojure 1.10.2» . Сайт Clojure.org .
- ^ Миллер, Алекс (04 марта 2021 г.). «Выпуск Clojure 1.10.3» . Сайт Clojure.org .
- ^ Миллер, Алекс (22 марта 2022 г.). «Выпуск Clojure 1.11.0» . Сайт Clojure.org .
- ^ Миллер, Алекс (05 апреля 2022 г.). «Выпуск Clojure 1.11.1» . Сайт Clojure.org .
Дальнейшее чтение [ править ]
- Сотников, Дмитрий (2020). Веб-разработка с использованием Clojure (3-е изд.). Прагматичная книжная полка . ISBN 978-1-68050-682-2 .
- Олсен, Расс (2018). Получение Clojure . Прагматичная книжная полка . ISBN 978-1-68050-300-5 .
- Миллер, Алекс; Хэллоуэй, Стюарт; Бедра, Аарон (2018). Программирование Clojure (3-е изд.). Прагматичная книжная полка . ISBN 978-1-68050-246-6 .
- Мейер, Карин (2015). Живой Clojure: введение и план обучения для разработчиков (1-е изд.). О'Рейли Медиа . ISBN 978-1-491-90904-1 .
- Ратор, Амит; Авила, Фрэнсис (2015). Clojure в действии (2-е изд.). Публикации Мэннинга . ISBN 978-1-61729-152-4 .
- Хиггинботэм, Дэниел (2015). Clojure для смелых и истинных . Пресс без крахмала . ISBN 978-1-59327-591-4 .
- Гэмбл, Джулиан (2015). Рецепты Clojure . Издательство Пирсон . ISBN 978-0-32192-773-6 .
- Вандгрифт, Бен; Миллер, Алекс (2015). Применен Clojure . Прагматичная книжная полка . ISBN 978-1-68050-074-5 .
- Рочестер, Эрик (2015). Справочник по анализу данных Clojure (2-е изд.). Пакт Паблишинг . ISBN 978-1-78439-029-7 .
- Фогус, Майкл; Хаузер, Крис (2014). Радость Clojure (2-е изд.). Публикации Мэннинга . ISBN 978-1-617291-41-8 . Архивировано из оригинала 23 октября 2018 г. Проверено 5 ноября 2018 г.
- Келкер, Райан (2013). Clojure для предметно-ориентированных языков . Пакт Паблишинг . ISBN 978-1-78216-650-4 .
- Рочестер, Эрик (2014). Освоение анализа данных Clojure . Пакт Паблишинг . ISBN 978-1-78328-413-9 .
- Эмерик, Час; Карпер, Брайан; Гранд, Кристоф (19 апреля 2012 г.). Программирование на Clojure . О'Рейли Медиа . ISBN 978-1-4493-9470-7 .
- ВандерХарт, Люк; Сьерра, Стюарт (7 июня 2010 г.). Практический Clojure . Апресс . ISBN 978-1-4302-7231-1 .
Внешние ссылки [ править ]
1958 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2020 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ЛИСП 1, 1.5, ЛИСП 2 (заброшенный) | |||||||||||||||
Маклисп | |||||||||||||||
Интерлисп | |||||||||||||||
леев | |||||||||||||||
Лисп-машина Лисп | |||||||||||||||
Схема | Р5РС | Р6РС | R7RS маленький | ||||||||||||
НОЛЬ | |||||||||||||||
ЗИЛ (язык реализации Zork) | |||||||||||||||
Франц Лисп | |||||||||||||||
Общий Лисп | стандарт ANSI | ||||||||||||||
Лисп | |||||||||||||||
Схема СО | |||||||||||||||
XLISP | |||||||||||||||
Т | |||||||||||||||
На схеме | |||||||||||||||
Эмакс Лисп | |||||||||||||||
АвтоЛИСП | |||||||||||||||
ПикоЛисп | |||||||||||||||
Гамбит | |||||||||||||||
EuLisp | |||||||||||||||
ИСЛИСП | |||||||||||||||
ОпенЛисп | |||||||||||||||
Схема PLT | Ракетка | ||||||||||||||
новыйЛИСП | |||||||||||||||
GNU Коварство | |||||||||||||||
Визуальный ЛИСП | |||||||||||||||
Кложур | |||||||||||||||
Дуга | |||||||||||||||
ЛФЭ | |||||||||||||||
Он | |||||||||||||||
Хиалисп |
- программное обеспечение 2007 года
- Кроссплатформенное бесплатное программное обеспечение
- Кроссплатформенное программное обеспечение
- Динамические языки программирования
- Динамически типизированные языки программирования
- Языки программирования с расширяемым синтаксисом
- Функциональные языки
- Языки программирования высокого уровня
- Языки программирования JVM
- Лисп (язык программирования)
- Семейство языков программирования Лисп
- Мультипарадигмальные языки программирования
- Языки программирования
- Языки программирования, созданные в 2007 году.
- Языки сценариев
- Программное обеспечение, использующее лицензию Eclipse
- Компиляторы исходного кода