[2/2] Clojure: The Documentary (Рубрика Architecture)
Продолжая разбор документалки, расскажу про оставшиеся интересные моменты, что мне запомнились.
4️⃣ Concurrency не надо "побеждать локами" Clojure предлагает сделать так, чтобы большую часть данных можно было свободно шарить между потоками, потому что они immutable. А там, где состояние всё-таки меняется, пусть это происходит через явные и согласованные механизмы: refs, atoms, agents, STM. В документации Clojure прямо описано, что immutable core data structures легко разделяются между потоками, а изменение состояния координируется без ручного управления конфликтами через lock-и.
5️⃣ Практичность важнее идеологической чистоты Clojure не стал "очередным красивым языком в вакууме". Он сел на JVM, потому что там уже были инфраструктура, библиотеки, performance, доверие enterprise-клиентов и доступ к существующему Java-коду. И это было запланировано изначально: Clojure хотел быть Lisp для functional programming, symbiotic with an established platform и designed for concurrency. Для меня это один из главных уроков фильма. Новая технология получает шанс не тогда, когда она “правильная”, а когда она соединяет сильную идею с существующей реальностью бизнеса.
6️⃣ Стабильность - это не отсутствие развития, а продуктовая фича В фильме много говорится про консервативный подход к развитию Clojure: не принимать всё подряд, уметь говорить “нет”, сохранять совместимость, не ломать старый код ради ощущения движения. Релиз Clojure 1.0 состоялся в 2009 году и стал моментом стабилизации ядра языка, а дальше был фокус на backward compatibility.
7️⃣ Datomic - та же философия, только на уровне данных Datomic в этой истории выглядит как продолжение той же идеи: данные - это факты, история важна, прошлое не надо перезаписывать. Официальный сайт Datomic описывает его как распределенную транзакционную базу, где можно использовать всю историю критичных данных, а не только текущее состояние; факты не update-in-place, данные сохраняются по умолчанию, есть audit и query history.
Для банков и fintech это звучит почти очевидно. Но забавно, что в обычной backend-разработке мы часто всё еще проектируем системы так, будто прошлое можно просто потереть update-запросом. В общем, документалка хорошо напоминает: Clojure - это не только язык со скобками. Это попытка ответить на вопрос: можем ли мы строить программы из более простых вещей?
#Architecture #SoftwareDesign #EngineeringManagement #SystemDesign