Стендап Сьогодні
📢
Канал в Telegram @stendap_sogodni
🦣
@stendap_sogodni@shevtsov.me в Федиверсі
26.08.2025
Low Magic vs High Magic
Різниця між середовищами розробки не закінчується на типізації та керуванню памʼяттю. Важливою ознакою є те, наскільки багато “магії” - тобто коду, який працює “невідомо як”.
Розглянемо маршрутизацію для вебу. В Express.js чи Gin для Go звʼязок між маршрутами та обробниками очевидний - бо ми передаємо їх явно. Звісно, всередині маршрутизатора є багато коду, який ми не знаємо, але головне, що ми бачимо той наш код, який буде виконано. А значить, навіть людина, незнайома з таким фреймворком, зможе прочитати код застосунку та здогадатись, що відбувається.
В протилежність: маршрутизація в Ruby on Rails. Маршрути тут вказують на… щось? Після читання документації можна зрозуміти, як формується назва контролера та його метода, що буде виконано. Але це суцільна магія — нічого в коді на це не вказує. Така саме ситуація в Rails, наприклад, зі структурою моделей (яка взагалі читається прямо з бази наживу.)
Може така магія робить код красивим та зберігає від зайвої писанини. Проте також вона так ускладнює роботу IDE, що досі підказки по коду для Rails потребують спеціалізованого підкажчика, який “розуміє” Rails, а не просто читає код. Та й людям, очевидно, не так легко встрибнути.
Мене колись давно саме ця магія й відштовхнула від Rails - бо з першого погляду застосунок складається з купи неповʼязаних між собою класів. А цілісна картина зʼявляється тільки після читання документації. Після всієї цієї магії застосунок із Gin освіжує своєю прямолінійністю.