Jump to content

Кложур

Кложур
Парадигма мультипарадигма :
Семья Лисп
Разработано Рич Хикки
Впервые появился 2007 г .; 17 лет назад ( 2007 )
Стабильная версия
1.11.2 [8] / 8 марта 2024 г .; 3 месяца назад ( 08.03.2024 )
Дисциплина набора текста
Управление памятью Сбор мусора через хост ( JVM , CLR , среда выполнения JavaScript, такая как V8 в случае ClojureScript или BEAM (см. ниже )
Платформа
Лицензия Затмение Публичное
Расширения имен файлов
  • .clj
  • .cljs
  • .cljr
  • .cljc
  • .cljd
  • .edn
Веб-сайт закрытие .org
Диалекты
ClojureScript, ClojureDart
Под влиянием
Под влиянием

Clojure ( / ˈ k l ʒ ə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

Рич Хики — создатель языка 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]

В дополнение к инструментам, предоставляемым сообществом, официальные инструменты интерфейса командной строки (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 г. ( 17.10.2007 ) [31] Первоначальный публичный выпуск
1.0 4 мая 2009 г. ( 04.05.2009 ) [115] Первый стабильный выпуск
1.1 31 декабря 2009 г. ( 31 декабря 2009 г. ) [116] Фьючерсы
1.2 19 августа 2010 г. ( 19.08.2010 ) [117] Протоколы
1.3 23 сентября 2011 г. ( 23 сентября 2011 г. ) [118] Расширенная поддержка примитивов
1.4 15 апреля 2012 г. ( 15 апреля 2012 г. ) [119] Литералы чтения
1.5 1 марта 2013 г. ( 01.03.2013 ) [120] Редукторы
1.5.1 10 марта 2013 г. ( 10.03.2013 ) [121] Исправление утечки памяти
1.6 25 марта 2014 г. ( 25 марта 2014 г. ) [122] Java API, улучшенные алгоритмы хеширования
1.7 30 июня 2015 г. ( 30.06.2015 ) [49] Преобразователи, условные обозначения считывателей
1.8 19 января 2016 г. ( 19.01.2016 ) [123] Дополнительные строковые функции, прямая связь, сервер сокетов
1.9 8 декабря 2017 г. ( 08.12.2017 ) [124] Интеграция со спецификациями и инструментами командной строки
1.10 17 декабря 2018 г. ( 17.12.2018 ) [125] Улучшенный отчет об ошибках, совместимость с Java.
1.10.1 6 июня 2019 г. ( 06.06.2019 ) [126] Обход снижения производительности Java и улучшение отчетов об ошибках clojure.main
1.10.2 26 января 2021 г. ( 26 января 2021 г. ) [127] Улучшения взаимодействия/совместимости Java и другие важные исправления языка.
1.10.3 4 марта 2021 г. ( 04.03.2021 ) [128] поддержка prepl для условных операторов чтения
1.11.0 22 марта 2022 г. ( 22 марта 2022 г. ) [129] Новый синтаксис для вызова аргумента ключевого слова, новый clojure.math пространство имен, псевдонимы пространства имен без загрузки и новые вспомогательные функции, добавленные в clojure.core
1.11.1 5 апреля 2022 г. ( 05.04.2022 ) [130] Откат непреднамеренного изменения в двоичной сериализации объектов типов clojure.lang.Keyword и clojure.lang.ArraySeq.
Текущая стабильная версия: 1.11.2. 8 марта 2024 г. ( 08.03.2024 ) [8] Исправление CVE-2024-22871, связанной с отказом в обслуживании. уязвимости
Legend:
Old version
Older version, still maintained
Последняя версия
Latest preview version
Future release

См. также [ править ]

Ссылки [ править ]

  1. ^ Перейти обратно: а б «Агенты и асинхронные действия» . Сайт Clojure.org . Проверено 7 июля 2019 г.
  2. ^ «Параллельное программирование» . Сайт Clojure.org . Проверено 7 июля 2019 г.
  3. ^ Хикки, Рич; участники. "core.async" . Гитхаб . Проверено 7 июля 2019 г.
  4. ^ «Функциональное программирование» . Сайт Clojure.org . Проверено 7 июля 2019 г.
  5. ^ Нолен, Дэвид; Хикки, Рич. "core.logic" . Гитхаб . Проверено 7 июля 2019 г.
  6. ^ Перейти обратно: а б «Макросы» . Сайт Clojure.org . Проверено 7 июля 2019 г.
  7. ^ Эстерхази, Паулюс. «Руководство по потоковым макросам» . Сайт Clojure.org . Проверено 7 июля 2019 г.
  8. ^ Перейти обратно: а б Миллер, Алекс (08 марта 2024 г.). «Выпуск Clojure 1.11.2» . Сайт Clojure.org .
  9. ^ Фогус, Майкл (2011). «Вопросы и ответы Рича Хики» . CodeQuarterly.com . Архивировано из оригинала 11 января 2017 г.
  10. ^ Хикки, Рич (2011). «Простое, легкое» . Ютуб . {{cite web}}: Неизвестный параметр |note= игнорируется ( помогите )
  11. ^ Боннер-сержант Амброуз (2012 г.). Практическая дополнительная система типов для Clojure (Диссертация). Университет Западной Австралии.
  12. ^ «Программирование на Clojure» (PDF) . OReilly.com . Проверено 30 апреля 2013 г.
  13. ^ Хикки, Рич. «Книжная полка Clojure» . Amazon.com . Архивировано из оригинала 3 октября 2017 г. Проверено 7 июля 2019 г.
  14. ^ Роуз, Кальвин; участники. «Язык Джанет» . Джанет-Ланг.org . Проверено 18 февраля 2023 г.
  15. ^ Болдридж, Тимоти. «Пикси» . PixieLang.org . Проверено 7 июля 2019 г.
  16. ^ Рамачандра, Рамкумар. «Рейн» . Гитхаб . Проверено 7 июля 2019 г.
  17. ^ Перейти обратно: а б с д и Эдвардс, Кэтрин (10 августа 2009 г.). «А-Я языков программирования: Clojure» . Computerworld.com.au . Архивировано из оригинала 26 августа 2019 г.
  18. ^ Перейти обратно: а б Хики, Рич (5 января 2009 г.). «Значение и произношение Clojure» . Google.com .
  19. ^ Перейти обратно: а б Крил, Пол (22 марта 2012 г.). «Изобретатель Clojure Хики теперь нацелен на Android» . InfoWorld.com .
  20. ^ Перейти обратно: а б «Кложур» . Сайт Clojure.org . Проверено 7 июля 2019 г.
  21. ^ Перейти обратно: а б с «Читатель» . Сайт Clojure.org . Проверено 7 июля 2019 г.
  22. ^ Перейти обратно: а б «Отличия от других Лиспов» . Сайт Clojure.org . Проверено 7 июля 2019 г.
  23. ^ Перейти обратно: а б с «Ценности и изменения: подход Clojure к идентичности и состоянию» . Сайт Clojure.org . Проверено 7 июля 2019 г.
  24. ^ Перейти обратно: а б Хикки, Рич. «Обоснование» . Сайт Clojure.org . Проверено 7 июля 2019 г.
  25. ^ Перейти обратно: а б Торре, Чарльз (6 октября 2009 г.). «Эксперт эксперту: Рич Хики и Брайан Бекман – изнутри Clojure» . MSDN.com .
  26. ^ "clojure/spec.alpha" . Гитхаб . 26 апреля 2017 г.
  27. ^ Хики, Рич (16 октября 2002 г.). «[ANN] dotLisp: диалект Лиспа для .Net» . Google.com .
  28. ^ Хики, Рич (15 апреля 2013 г.). "джфли" . SourceForge.net .
  29. ^ Хики, Рич (3 апреля 2013 г.). «фольга: интерфейс внешних объектов для Lisp» . SourceForge.net .
  30. ^ Хики, Рич (7 марта 2013 г.). «Лисплеты» . SourceForge.net .
  31. ^ Перейти обратно: а б Хики, Рич (12 июня 2020 г.). «История Clojure» . Труды ACM по языкам программирования . 4 (ХОПЛ): 1–46. дои : 10.1145/3386321 . S2CID   219603760 .
  32. ^ Эльмендорф, Дирк (01 апреля 2010 г.). «Компьютерщик по размеру экономики — интервью с Ричем Хики, создателем Clojure» . LinuxJournal.com .
  33. ^ «Простое, легкое» . ИнфоQ . Проверено 2 мая 2024 г.
  34. ^ «(повторить мысли): преимущества программирования, ориентированного на данные» . yogthos.net . Проверено 2 мая 2024 г.
  35. ^ "talk-transcripts/Hickey_Rich/EffectivePrograms.md в мастере · matthiasn/talk-transcripts" . Гитхаб . Проверено 2 мая 2024 г.
  36. ^ Перейти обратно: а б «Размещено на JVM» . Сайт Clojure.org . Проверено 7 июля 2019 г.
  37. ^ «Взаимодействие с Java» . Сайт Clojure.org . Проверено 7 июля 2019 г.
  38. ^ Перейти обратно: а б Миллер, Алекс. «Руководство по Deps и CLI» . Сайт Clojure.org . Проверено 8 июля 2019 г.
  39. ^ Хикки, Рич. "эдн" . Гитхаб . Проверено 7 июля 2019 г.
  40. ^ «Мультиметоды и иерархии» . Сайт Clojure.org . Проверено 7 июля 2019 г.
  41. ^ «Протоколы» . Сайт Clojure.org . Проверено 7 июля 2019 г.
  42. ^ «Типы данных: deftype, defrecord и reify» . Сайт Clojure.org . Проверено 7 июля 2019 г.
  43. ^ Гетц, Брайан (20 ноября 2014 г.). «Управление: отрезвляющие части» . YouTube.com .
  44. ^ Роуз, Джон (12 июля 2007 г.). «хвостовые вызовы в виртуальной машине» . Oracle.com .
  45. ^ Роуз, Джон (11 февраля 2009 г.). «Некоторые языки должны иметь возможность выполнять хвостовые вызовы» . Java.net .
  46. ^ «Специальные формы» . Сайт Clojure.org . Проверено 7 июля 2019 г.
  47. ^ «Рефы и транзакции» . Сайт Clojure.org . Проверено 7 июля 2019 г.
  48. ^ Хики, Рич (28 июня 2013 г.). «Каналы Clojure core.async» . Сайт Clojure.org .
  49. ^ Перейти обратно: а б Миллер, Алекс (30 июня 2015 г.). «Clojure 1.7 теперь доступен» . Сайт Clojure.org .
  50. ^ Хики, Рич (17 сентября 2014 г.). «Преобразователи» . YouTube.com .
  51. ^ Хики, Рич (6 августа 2014 г.). «Преобразователи приходят» . Когнитект.com .
  52. ^ Хики, Рич (20 ноября 2014 г.). «Внутренние преобразователи» . YouTube.com .
  53. ^ «Официальная спецификация EDN» . edn-format.org . 27 апреля 2022 г.
  54. ^ «Кложурскрипт» . ClojureScript.org . Проверено 06 июля 2019 г.
  55. ^ «ClojureScript – Часто задаваемые вопросы (для разработчиков JavaScript)» . ClojureScript.org . Проверено 4 февраля 2018 г.
  56. ^ «КложуреCLR» . Гитхаб . Проверено 28 июня 2012 г.
  57. ^ Боркент, Михель. «Бабашка» . Бабашка.орг . Проверено 19 августа 2019 г.
  58. ^ Ху, Вэй. «Лисп на Perl» . MetaCPAN.org . Проверено 06 июля 2019 г.
  59. ^ «Что такое ClojureDart?» , GitHub , Tensegritics, 16 декабря 2022 г. , получено 16 декабря 2022 г.
  60. ^ Факорро, Хуан. «Кложерль» . Гитхаб . Проверено 06 июля 2019 г.
  61. ^ «Вазилисп» . Гитхаб . Проверено 13 мая 2024 г.
  62. ^ «КложурРС» . Гитхаб . Проверено 17 марта 2022 г.
  63. ^ Аккая, Нурулла. «Хорек» . Ferret-Lang.org . Проверено 06 июля 2019 г.
  64. ^ Вилкерсон, Джи. "джанк" . Jank-Lang.org . Проверено 17 августа 2022 г.
  65. ^ Батаев Роман. «Джокер» . Joker-Lang.org . Проверено 06 июля 2019 г.
  66. ^ Кэннон, Эймон. «Лаз3р» . Гитхаб . Проверено 06 июля 2019 г.
  67. ^ Болдридж, Тимоти. «Пикси» . PixieLang.org . Проверено 06 июля 2019 г.
  68. ^ Коннор, Эш. «Руж» . Гитхаб . Проверено 06 июля 2019 г.
  69. ^ Миллер, Алекс (04 февраля 2019 г.). « Результаты «Состояния Clojure 2019»» . Сайт Clojure.org .
  70. ^ Бацов, Божидар; участники. «CIDER: потрясающая интерактивная среда разработки Clojure» . СИДЕР.mx . Проверено 5 июля 2019 г.
  71. ^ Флеминг, Колин. «Cursive: обеспечивает полную поддержку языков Clojure и ClojureScript» . JetBrains.com . Проверено 5 июля 2019 г.
  72. ^ Прокопов, Никита. «Clojure Sublimed» . PackageControl.io . Проверено 18 февраля 2023 г.
  73. ^ Хелениус, Ээро. «Радар» . FlowThing.me . Проверено 18 февраля 2023 г.
  74. ^ Поуп, Тим. «fireplace.vim: поддержка Clojure REPL» . ВИМ.орг . Проверено 5 июля 2019 г.
  75. ^ Монро, Доминик (13 декабря 2016 г.). «Clojure и Vim: обзор – это вполне возможно» . JUXT.pro .
  76. ^ Масаси, Иидзука (29 апреля 2024 г.). «vim-elin: среда разработки Clojure для Vim/Neovim, написанная в основном на Babashka» . Гитхаб . Архивировано из оригинала 2 мая 2024 г. Проверено 2 мая 2024 г.
  77. ^ Колдуэлл, Оливер. «Инструменты Neovim Clojure (Script) поверх prepl» . Гитхаб . Проверено 9 ноября 2019 г.
  78. ^ Колдуэлл, Оливер (6 ноября 2019 г.). «Начало работы с Clojure, Neovim и Conjure за считанные минуты» . oli.me.uk.
  79. ^ Стрёмберг, Питер. «Кальва: интерактивное программирование на Clojure и ClojureScript» . VisualStudio.com . Проверено 5 июля 2019 г.
  80. ^ Сабо, Маурисио. «Клевер» . VisualStudio.com . Проверено 28 января 2021 г.
  81. ^ clj-kondo/clj-kondo , clj-kondo, 30 апреля 2024 г. , получено 2 мая 2024 г.
  82. ^ «Обзор — Clojure LSP» . Clojure-lsp.io . Проверено 2 мая 2024 г.
  83. ^ Миллер, Алекс (08 декабря 2017 г.). «Кложур 1.9» . Когнитект.com .
  84. ^ «Кложур» . Атласиан.нет . Проверено 7 июля 2019 г.
  85. ^ «Форум Клоджюра» . Clojure.org . Проверено 20 марта 2020 г.
  86. ^ Хикки, Рич (26 ноября 2018 г.). «Открытый исходный код — это не про вас» . Гитхаб .
  87. ^ «Рабочий процесс» . Сайт Clojure.org . Проверено 7 июля 2019 г.
  88. ^ Гетц, Брайан (24 мая 2020 г.). «Любимый JVM-язык Брайана Гетца, не являющийся Java (часть 1 из 3)» . Twitch.tv .
  89. ^ Гетц, Брайан (24 мая 2020 г.). «Любимый JVM-язык Брайана Гетца, не являющийся Java (часть 2 из 3)» . Twitch.tv .
  90. ^ Гетц, Брайан (24 мая 2020 г.). «Любимый JVM-язык Брайана Гетца, не являющийся Java (часть 3 из 3)» . Twitch.tv .
  91. ^ Эванс, Эрик (14 августа 2018 г.). «Время моделирования: Эрик Эванс: Европа, ориентированная на предметную область дизайна, 2018» . YouTube.com .
  92. ^ Эванс, Эрик (21 ноября 2014 г.). «Эрик Эванс в Твиттере» . Twitter.com .
  93. ^ «Встреча Джеймса Гослинга с лондонским Java-сообществом» . YouTube.com . 11 октября 2016 г.
  94. ^ Грэм, Пол (6 мая 2016 г.). «Пол Грэм в Твиттере» . Twitter.com .
  95. ^ Мартин, Роберт (22 августа 2019 г.). «Почему Clojure?» . CleanCoder.com .
  96. ^ Мартин, Роберт (29 ноября 2018 г.). «Дядя Боб Мартин в Твиттере» . Twitter.com .
  97. ^ Мартин, Роберт (01 августа 2018 г.). «Введение в функциональное программирование» . CleanCoders.com .
  98. ^ Мартин, Роберт (11 июля 2017 г.). «Прагматическое функциональное программирование» . CleanCoder.com .
  99. ^ «Технологический радар | Убежденный путеводитель по сегодняшнему технологическому ландшафту» . Мыслительные работы . Проверено 20 мая 2024 г.
  100. ^ «Технологический радар: Clojure» . Сайт ThoughtWorks.com . Проверено 10 февраля 2019 г.
  101. ^ Клен, Саймон; Бинсток, Эндрю (17 октября 2018 г.). «Отчет об экосистеме JVM 2018» . Сник.io.
  102. ^ «Истории успеха» . Сайт Clojure.org . Проверено 27 октября 2018 г.
  103. ^ Лютиков, Роман (17 декабря 2017 г.). «Роман Лютиков в Твиттере» . Twitter.com .
  104. ^ «Работа в Apple» . Apple.com . Проверено 06 июля 2019 г.
  105. ^ Борхес, Леонардо (07 июля 2015 г.). «Сотрудничество в реальном времени с Clojure» . YouTube.com .
  106. ^ Питер, Джон (4 октября 2016 г.). «Clojure в Лондоне: Круг финансирования – кредитование Clojure» . JUXT.pro .
  107. ^ Уильямс, Алекс (3 августа 2014 г.). «Новые создатели стека: Адриан Кокрофт о Sun, Netflix, Clojure, Go, Docker и других» . TheNewStack.io .
  108. ^ «Nubank приобретает американскую технологическую компанию Cognitect» . 23 июля 2020 г.
  109. ^ Прайс, Крис (11 апреля 2014 г.). «Новая эра сервисов приложений в Puppet Labs» . Puppet.com . Проверено 6 августа 2020 г.
  110. ^ Филлипс, Марк (14 июля 2015 г.). «Walmart использует Clojure в больших масштабах» . Когнитект.com .
  111. ^ «Общий репозиторий метаданных» . Гитхаб . Проверено 06 июля 2019 г.
  112. ^ Мейер, Карин (06 мая 2015 г.). «Творческие вычисления с Clojure» . OReilly.com .
  113. ^ «Опрос разработчиков Stack Overflow, 2023 г.» . Переполнение стека . Проверено 2 мая 2024 г.
  114. ^ « Результаты поиска «Разработчик Clojure» на Indeed.com [Архивировано из-за изменчивости источника]» . Архив.is . 2 мая 2024 г. Проверено 2 мая 2024 г.
  115. ^ Хики, Рич (4 мая 2009 г.). «Кложур 1.0» . БлогСпот.com .
  116. ^ Хики, Рич (31 декабря 2009 г.). «Выпуск Clojure 1.1» . БлогСпот.com .
  117. ^ Хики, Рич (19 августа 2010 г.). «Выпуск Clojure 1.2» . Google.com .
  118. ^ Редингер, Кристофер (23 сентября 2011 г.). «[ANN] Clojure 1.3 выпущен» . Google.com .
  119. ^ Диперт, Алан (17 апреля 2012 г.). «[ANN] Clojure 1.4 выпущен» . Google.com .
  120. ^ Хэллоуэй, Стюарт (01 марта 2013 г.). «ANN: Clojure 1.5» . Google.com .
  121. ^ Хэллоуэй, Стюарт (10 марта 2013 г.). «Кложур 1.5.1» . Google.com .
  122. ^ Миллер, Алекс (25 марта 2014 г.). «[ANN] Clojure 1.6» . Google.com .
  123. ^ Миллер, Алекс (19 января 2016 г.). «Clojure 1.8 теперь доступен» . Сайт Clojure.org .
  124. ^ Миллер, Алекс (08 декабря 2017 г.). «Clojure 1.9 теперь доступен» . Сайт Clojure.org .
  125. ^ Миллер, Алекс (17 декабря 2018 г.). «Выпуск Clojure 1.10» . Сайт Clojure.org .
  126. ^ Миллер, Алекс (6 июня 2019 г.). «Выпуск Clojure 1.10.1» . Сайт Clojure.org .
  127. ^ Миллер, Алекс (26 января 2021 г.). «Выпуск Clojure 1.10.2» . Сайт Clojure.org .
  128. ^ Миллер, Алекс (04 марта 2021 г.). «Выпуск Clojure 1.10.3» . Сайт Clojure.org .
  129. ^ Миллер, Алекс (22 марта 2022 г.). «Выпуск Clojure 1.11.0» . Сайт Clojure.org .
  130. ^ Миллер, Алекс (05 апреля 2022 г.). «Выпуск Clojure 1.11.1» . Сайт Clojure.org .

Дальнейшее чтение [ править ]

Внешние ссылки [ править ]

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 Коварство
 Визуальный ЛИСП
 Кложур
 Дуга
 ЛФЭ
 Он
 Хиалисп
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 280ad4132a11699972c5d63f9920d948__1717389060
URL1:https://arc.ask3.ru/arc/aa/28/48/280ad4132a11699972c5d63f9920d948.html
Заголовок, (Title) документа по адресу, URL1:
Clojure - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)