Автор начал делать EYG, пока ждал визу для работы в Швеции. Он заметил повторяющийся цикл у технически подкованных людей, не работающих профессиональными разработчиками. Сперва они берут no-code или low-code инструмент и быстро автоматизируют задачу, но с ростом сложности упираются в ограничения. Дальше два пути: позвать разработчика, который выкинет решение и потребует переписать всё на «настоящем» языке, или самим учить этот язык и терять темп. Такие сценарии автор относит к end user programming — «домашней» разработке, когда софт создаётся не для массового продукта, а чтобы решить свою проблему.
Он разделяет работу разработчиков на две категории: описание логики (if, loop, var) и борьбу с компьютером ($PATH, /var/tmp, AWS). Многие — автор называет их makers — отлично справляются с первым, но не готовы тратить время на второе. Инструменты, пытающиеся заменить текстовое программирование визуальным, по его мнению, решают не ту проблему. Excel же полностью снимает вторую категорию: макросы остаются обычным кодом, но все вопросы деплоя исчезают. EYG и задуман, чтобы убрать инфраструктурные сложности и дать makers сосредоточиться на описании задачи. Язык подходит для склеивания систем («связать таблицу с Discord-ботом»), личных дашбордов («вывести показатели солнечных панелей и календарь на старый iPad») и автоматизаций («если звонят в дверь, а я в Zoom, мигнуть лампой»).
Опыт с Gleam подтвердил догадку. Инженеры-автоматизаторы в Швеции, которые много думают об электрике и механике, прошли Gleam tour, легко освоили статическую функциональную типизацию и спросили «что дальше?». Язык им понравился, но было непонятно, куда его приложить и как развернуть. Gleam прекрасно выражает логику предметной области, но до удобства Excel в части запуска и доставки недотягивает.
Развивать Gleam дальше не вышло из-за принципиальных различий. Gleam использует номинативную типизацию — лучший выбор для профессионального строгого описания домена. EYG опирается на структурную типизацию, чтобы компьютер помогал, не заставляя заранее продумывать типы. Gleam — для разработчиков, строящих приложения, EYG — для makers, создающих фичи.
Ключевые решения EYG: sound type inference — система никогда не требует объявлять тип заранее и работает как опциональный помощник, а не церемония. Hashed dependency — зависимости определяются по хешу содержимого модуля, чтобы избежать dependency hell. Effect typing зашивает побочные эффекты в типы; если скрипт для веб-страницы попытается лезть в файловую систему, возникнет понятная ошибка типа. В перспективе платформа сможет автоматически подключать key-value-хранилище, только если lambda-функция действительно использует нужные эффекты.
Мера «лучше» для автора — насколько язык помогает makers создавать надёжные программы, которыми можно делиться. Если же задача — большой командой писать новый браузер, он советует Rust. EYG пока остаётся экспериментом, прогресс публикуется в нерегулярной рассылке.