TGViewer
Роздуми Спрощенця Роздуми Спрощенця @decomplexifier · 230 subscribers
Post #12 430
‍Короткий допис сьогодні, бо я все ще подорожую і енергії не завжди вистачає 😫

Нещодавно ми намагалися скрутити разом код на Clojure з pljava, щоб можна було писати Postgres-функції (або навіть бізнес-логіку для Omnigres!) на кложі.

Я раніше майже не писав на кложі, а до світу JVM зараз торкаюсь нерегулярно (хоча були часи, коли працював там активно). Власне, повернення до цього світу досить непогано висвітлює, наскільки можливо все зробити складним, якщо майже релігійно накопичувати нашарування ідей.

Одною з найбільших проблем виявилось те, що кложа плюс-мінус ігнорує той факт, що анотації в джаві іноді не просто так для краси, але ще й якось опрацьовуються. Там є така штука як Java Annotation Processing. Складно, звичайно, але дає хоч якийсь спосіб зробити щось з анотованим кодом.

pljava використовує це щоб, наприклад, згенерувати SQL код для функцій які будуть експортовані в постгрес.

В кложі трохи інша модель (яка можливо й простіша або, принаймні, елегантніша за звичайну модель у джаві). І, здається, простіше просто цю фічу проігнорувати, бо кложурісти (чи як їх називати?) краще це все макросом зроблять.

Але мені здається, що це локально нівелює той корисний факт що кложа є частиною JVM екосистеми, і такі випадки стають складними не тому що вони занадто складні, а тому що.

(“Тому що ви повинні страждати”. Ну, майже так)

Заради справедливості зазначу що я досі не повнистю розумію, де ці annotation processors запускаються в maven, gradle та інших білд-системах.

Але що робити коли це нашарування вже сталося і воно вже дуже стале?

Це, власне, де можна знайти дзен справжнього мистецтва програмування. Додавати легко, видаляти складніше, а видаляти без видалення (бо нашарування вже сталося і ми його аж ніяк не контролюємо) ще складніше.

Проблема ще й у тому, що майже ніколи на це часу, енергії та знаннь не вистачає.

Повертаючись до проблеми яку я описував: кложа зробила елегантнішу систему, але вона робить використання певних елементів екосистеми складнішими.

Тому для себе я такий тут висновок роблю: елегантні системи, які живуть на старому фундаменті, повинні мати “escape hatches” - засоби вирватись з кайданів і зробити все ще тобі потрібно, навіть якщо це не дуже красиво. Без нових абстракцій.

Бо результати завжди потрібні тут і зараз.
  • 👍 3
  • 🔥 2
More from @decomplexifier
  1. Aug 2, 2024У мене таке питання: чи є серед вас ті, хто ненавидить відлагодження SQL запитів? А як щод…
  2. Jun 14, 2024‍Тут ось яка ідея виникла: можливо іноді шукати програмістів з прямим релевантним досвідом…
  3. Oct 30, 2023‍Хвилинка самореклами. 🤡 Як ви можете пам’ятати, я Омнігресом займався з минулого року. А…
  4. Aug 26, 2023Коротка новина: нарешті зробив перший реліз досить нішевого інструмента, pg_yregress Якщо…
  5. Jul 30, 2023Я тут написав статтю про архітектуру разом з автором SQLPage і вона зараз на front page Ha…
  6. Jul 21, 2023Мене завжди дратував той факт, що для написання якоїсь бізнес-логіки на чомусь окрім SQL а…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →