Статус: Росток ☘️ | Посажено: Нояб. 21, 2022 – Обновлено: Март 15, 2023
—
Решил очередной долгосрочный эксперимент над самим собой провести 😆 В данном случае, минимальный положительный результат гарантирован. Datalog с небольшими добавками Clojure точно понадобится в работе с Logseq.
Часть личной Базы знаний в него планирую перенести (один из pet-проектов), заодно будет резервным вариантом приложения для заметок и средством публикации.
С декабря потихоньку начну заниматься изучением вопроса, подбором справочных / обучающих материалов, обоснованием проведения эксперимента в виде этой заметки. И где-нибудь после Нового года можно будет стартовать.
Проект именно что долгосрочный, может тихой сапой и на год, и дольше растянуться, прежде чем какие-то промежуточные результаты подведу.
Особого приоритета и какой-то срочности у него нет, прогресс будет зависеть от свободного времени и настроения. Впрочем, у меня все эксперименты такими выходят, минимум на год :0)
—
Заход вообще пошёл с Datalog и уже потом захватило Clojure
- Больше года использовал / тестировал приложения, которые построены с использованием Datalog. Сначала это был Roam Research, потом Logseq.
- То, как они работают с запросами и данными — выглядит красиво. А для меня большое значение имеет внутренняя красота и продуманность инструмента.
- Давно уже задумывался небольшой pet-проект: сделать нормально аннотированный каталог приложений, которые тестирую и отслеживаю. Сейчас все описания в виде заметок лежат у меня в RemNote, а сводные таблицы “скручиваю” в стороннем приложении. Новости по приложениям вообще вручную публикуются в разных местах (требует трудозатрат и синхронности) и никак не связаны с базой.
- Вот и решил делать каталог именно в Logseq. Там можно сформировать структуру с metadata и табличными представлениями, потом опубликовать её в web. Заодно придётся полноценно разобраться с Datalog-запросами :0)
- Потом ради интереса посмотрел БД, которые используют Datalog, наткнулся на Datalevin. Возникла мысль приспособить его для личных нужд как аналог SQLite. И пошло-поехало...
- И там, и там Clojure напрямую задействован.
—
Базовые причины (зачем)
- Классические языки программирования меня определенно не “втыкают”. Впрочем, предсказуемо, у меня склад характера сам по себе не предрасположен к регламентированной разработке на потоке. Профессиональный программист из меня точно не получится :0)
- Раньше (2019 – 2021) время от времени использовал JS и Python под мелкие задачи: коды отслеживания для веб-аналитики поставить, отправку данных формы настроить, JSON по API забрать / разобрать / отправить дальше и т.п.
- Но так, чтобы тот же Python органично врос в повседневные дела и превратился в «бытовой инструмент» — такого не было. Не “затягивает”.
- При этом, какой-то инструмент для личных нужд всё-таки нужен, т.к. пул задач для автоматизации уже есть и в будущем их будет больше.
- С профессиональной точки зрения, планирую дальше “прокачиваться” в сфере Data Engineering и там базовый язык программирования тоже понадобится.
- Python так или иначе придётся использовать, но он требуется в ограниченном объёме знаний (ETL в AirFlow настраивать и т.п.). Пусть уж лучше будет вторым языком.
—
И так, почему всё-таки Clojure?
- Сильное влияние оказала статья от Hexlet «Как устроен функциональный диалект Лиспа Clojure и почему использующие его программисты восхищаются им»:
Clojure, философия её автора и сообщества открывают глаза на то, что очень маленький набор базовых концепций полностью достаточен для решения огромного количества задач. [...] После знакомства с Clojure вы перестанете думать, что это — единственный возможный вариант, и станете искать более простые решения во всём.
— Клишин Михаил.
Clojure позволяет работать с сутью решаемой проблемы, не отвлекаясь на «ритуалы».
— Рыжиков Николай.
- Мне это сразу Planfix и RemNote напомнило, которые в своё время по схожим причинам выбрал. У них тоже в основе идеологии лежит принцип «не плодить сущности и жёсткие правила».
- Предназначение Clojure: Большие и сложные системы, которые при этом не должны ломаться.
- Отсюда, шуточная причина: У меня хобби и дурная привычка как раз «глобальные системы» городить :0)
- Современный диалект Лиспа, функциональная парадигма. Совершенно другой по идеологии язык по сравнению с традиционными языками разработки, которые массово используют. Может втянусь и влюблюсь... Если уж обычный Python не прельщает.
- Есть мнение, что Clojure хорош как раз в качестве первого языка. Его просто учить людям, у которых нет профессионального опыта в программировании и голова пока не забита разными концепциями.
- Применимость к предполагаемым профессиональным задачам:
Изучать Clojure как первый язык имеет смысл, только если ваша работа как-то будет связана с данными.
— Клишин Михаил
Clojure лучше всего работает для финансового рынка, дата-аналитики, машинного обучения — сфер, где основной фокус делается на данных, которые нужно быстро обрабатывать.
— Сотников Дмитрий.
- Пускай и немного, но есть обучающие материалы на русском языке. Их достаточно, чтобы на базовом уровне освоить язык.
—
Logbook
22.12.20. Пару недель назад вышел хороший выпуск подкаста Clojure и дорога реальных дел от UfoStation. Сижу и погружаюсь в контекст (и самомотивируюсь заодно :0)
- Гость выпуска — Николай Рыжиков, CTO в компании Health-Samurai (крутые ребята на рынке Healthcare), адепт языка Clojure и активный участник сообществ Clojure, Postgress.
- В выпуске много интересного не только про Clojure:
- По понятию «простота» и преимуществам Emacs / Vim при написании кода (а по сути и при работе с заметками) очень хорошо прошлись ➜ кусок с 00:36 по 01:05.
- Концовку с 01:33 советую целиком послушать, если имеете отношение к IT в бизнесе ➜ Про «шедевры в IT» (clojure к ним относит) хорошо сказано. «Как мыслит владелец бизнеса выбирая технологию и инженера». И «стоит ли разработчику выбирать Clojure» (большинству проще идти в хайповый язык / технологии).
- Детальный тайминг беседы и mp3-файл с записью размещён в Telegram-канале компании «Health Samurai».
—
Явно пошло ускорение событий, интересные материалы один за одним появляются:
23.03.13. Опубликовали на youtube выступление Николая Рыжикова «Данные, модели и Сlojure».
За две недели до этого у себя на странице в VK упоминал про Zen Doc, оригинальный семантический движок для создания wiki. Этот движок на самом деле является частью более обширного и интересного проекта zen-lang. В выступлении фактически раскрывается идея данного проекта:
💬 «Язык определяет мышление. Язык программирования является матрицей для формирования архитектуры. Николай расскажет о том, что вырастает из Clojure — получаются решения с DSL на данных и решения, гравитирующие к Model Driven Architecture.»
Доклад рассчитан на инженеров-разработчиков и архитекторов, поэтому в нём очень много специфики и кода :0)
Но в реальности, если интересуетесь темой knowledge management systems, data engineering или даже просто приложениями Logseq, Roam Research — можно услышать интересные для себя вещи. Модели и данные в этих сферах тоже стоят во главе угла.
23.03.14. В блоге Ивана Гришаева (автор книги «Clojure на производстве») опубликовали развёрнутую статью «Эта удивительная Clojure: что на ней разрабатывают, чем она отличается от других языков и подходит ли для входа в программирование».
Может оказаться полезна для тех, кто «ходит кругами» вокруг Clojure и не может решить, стоит ли тратить на него время или нет.