[1/2] Clojure: The Documentary (Рубрика #Architecture)
Посмотрел новую документалку CultRepo про Clojure и это история о том, как взгляд Rich Hickey на сложность превратился в язык, комьюнити, базу данных Datomic и вообще production-стек для компаний уровня Nubank (о котором я как-то уже рассказывал). В самом фильме появляется не только Рич, но и остальные ключевые люди, которые строили язык, писали про него книги, внедряли его в компаниях и использовали в больших системах.
Ниже интересные моменты, подсвеченные в документалке и которые я вынес для себя (отдельно отмечу, что я не являюсь фанатом Clojure и мне этот язык всегда казался далеким от прода)
1️⃣ Язык программирования - это не синтаксис, а способ думать
Clojure важен не потому, что это наследник Lisp и работает поверх JVM, этот язык навязывает определенную модель мышления, где программа строится из простых частей: immutable data, pure functions, explicit state transitions и минимального количества лишних приседаний. И это хороший вопрос для любой команды: ваш основной язык и фреймворки помогают думать проще или просто делают привычные вещи удобнее?
2️⃣ Simple и easy - разные вещи
Фильм постоянно возвращается к идеям Rich Hickey из доклада "Simple Made Easy" 15 летней давности. И Рич разделяет их между собой так
- Easy - это то, что рядом, знакомо и быстро дается текущей команде.
- Simple - это то, где меньше переплетений, меньше скрытых зависимостей и меньше случайной сложности.
Понимать это различие важно для технических руководителей - часто команда выбирает easy: знакомый фреймворк, привычную ORM, еще один слой абстракции, еще один микросервис, еще одну интеграцию. А потом через год оказывается, что система стала не simple, а просто знакомо-сложной.
3️⃣ Mutable state - главный источник боли
Clojure пытается убрать из программы не всю изменяемость, а неуправляемую изменяемость. В официальном rationale прямо говорится, что Clojure строится вокруг Lisp, functional programming, JVM и concurrency, а также вокруг immutable persistent data structures и STM. Самая сильная идея здесь - разделить identity и state. Identity может жить во времени, но конкретное значение состояния должно быть immutable. Значение не меняется; система просто связывает identity с новым value. Это радикально меняет то, как мы думаем про баги, concurrency, аудит, отладку и историю данных.
В посте-продолжении расскажу про оставшиеся интересные моменты.
#Architecture #SoftwareDesign #EngineeringManagement #SystemDesign
Посмотрел новую документалку CultRepo про Clojure и это история о том, как взгляд Rich Hickey на сложность превратился в язык, комьюнити, базу данных Datomic и вообще production-стек для компаний уровня Nubank (о котором я как-то уже рассказывал). В самом фильме появляется не только Рич, но и остальные ключевые люди, которые строили язык, писали про него книги, внедряли его в компаниях и использовали в больших системах.
Ниже интересные моменты, подсвеченные в документалке и которые я вынес для себя (отдельно отмечу, что я не являюсь фанатом Clojure и мне этот язык всегда казался далеким от прода)
1️⃣ Язык программирования - это не синтаксис, а способ думать
Clojure важен не потому, что это наследник Lisp и работает поверх JVM, этот язык навязывает определенную модель мышления, где программа строится из простых частей: immutable data, pure functions, explicit state transitions и минимального количества лишних приседаний. И это хороший вопрос для любой команды: ваш основной язык и фреймворки помогают думать проще или просто делают привычные вещи удобнее?
2️⃣ Simple и easy - разные вещи
Фильм постоянно возвращается к идеям Rich Hickey из доклада "Simple Made Easy" 15 летней давности. И Рич разделяет их между собой так
- Easy - это то, что рядом, знакомо и быстро дается текущей команде.
- Simple - это то, где меньше переплетений, меньше скрытых зависимостей и меньше случайной сложности.
Понимать это различие важно для технических руководителей - часто команда выбирает easy: знакомый фреймворк, привычную ORM, еще один слой абстракции, еще один микросервис, еще одну интеграцию. А потом через год оказывается, что система стала не simple, а просто знакомо-сложной.
3️⃣ Mutable state - главный источник боли
Clojure пытается убрать из программы не всю изменяемость, а неуправляемую изменяемость. В официальном rationale прямо говорится, что Clojure строится вокруг Lisp, functional programming, JVM и concurrency, а также вокруг immutable persistent data structures и STM. Самая сильная идея здесь - разделить identity и state. Identity может жить во времени, но конкретное значение состояния должно быть immutable. Значение не меняется; система просто связывает identity с новым value. Это радикально меняет то, как мы думаем про баги, concurrency, аудит, отладку и историю данных.
В посте-продолжении расскажу про оставшиеся интересные моменты.
#Architecture #SoftwareDesign #EngineeringManagement #SystemDesign
YouTube
How One Programmer's Pet Project Changed the Way We Think About Software
This is the story of how one programmer's obsession with simplicity quietly reshaped how the software world thinks about time, immutability, and what it means to write code that lasts. From a sabbatical pet-project to the backbone of one of the world's largest…
👍11❤6🔥3
[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
Продолжая разбор документалки, расскажу про оставшиеся интересные моменты, что мне запомнились.
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
Telegram
Книжный куб
[1/2] Clojure: The Documentary (Рубрика #Architecture)
Посмотрел новую документалку CultRepo про Clojure и это история о том, как взгляд Rich Hickey на сложность превратился в язык, комьюнити, базу данных Datomic и вообще production-стек для компаний уровня…
Посмотрел новую документалку CultRepo про Clojure и это история о том, как взгляд Rich Hickey на сложность превратился в язык, комьюнити, базу данных Datomic и вообще production-стек для компаний уровня…
❤9👍5🔥2