Зачем изобретать свой язык: уроки пяти лет разработки full-stack фреймворков
Когда создание своего языка — не лучший выбор: уроки из пяти лет разработки full-stack фреймворка
Многие инженеры мечтают о собственном языке программирования. Это амбициозно, привлекает таланты и инвесторов. Но один растущий фреймворк после пяти лет работы, миллионов вложений и кучи часов разработчиков принял смелое решение: их язык оказался ошибкой.
Это не провал. Это история успешного поворота.
Большая идея: универсальный фреймворк для веба
Команда видела реальную проблему. Веб-разработка разрозненна. Фронтенд на React, бэкенд на Node.js, данные через Prisma — и еще десяток инструментов с разными синтаксисами и подходами.
Решение казалось идеальным. Один язык, который упрощает типовые задачи. При этом можно спускаться в TypeScript или JavaScript по необходимости. Как Terraform, но для всего стека приложения, а не только облака.
Идея зацепила. Разработчики устали от переключений. Y Combinator одобрил рано. Деньги потекли.
А потом пришла реальность.
Скрытые расходы на дизайн языка
Язык — это не библиотека. Это целая экосистема. Нужно определять семантику, пилить инструменты, учить людей, фиксить редкие кейсы и следить за совместимостью при изменениях.
Часто недооценивают:
Сопротивление разработчиков: Новые фреймворки берут охотно. Языки — с опаской. Каждый синтаксис нагружает мозг. IDE не готовы. На Stack Overflow пусто. Сообщество растет с трудом.
Нагрузка на инструменты: TypeScript опирается на JS-экосистему — бандлеры, линтеры, тесты, транспайлеры. С нуля — вечный бег по кругу.
Обслуживание: Баги — твои. Ошибки компилятора — твои. Производительность — твоя. Любое обновление рискует сломать код.
Ресурсы команды: Инженеры тратят время на парсеры и типы вместо фич фреймворка.
Проблема была не в языке
Через годы стало ясно: разработчики не просили новый язык. Им нужны лучшие абстракции для рутины.
Конкретно:
- Простая аутентификация
- Автогенерация API
- Type safety по всему стеку
- Меньше boilerplate
- Готовые рецепты для email, платежей, кэша
Все это решается в TypeScript. И лучше — с его сообществом, инструментами и стабильностью.
Свой язык не помог. Он стал барьером под видом фичи.
Ключевой поворот
Отказ от языка в пользу TypeScript при сохранении фреймворка — признак умной команды.
Что осталось:
- Абстракции фреймворка — мощные
- UX для разработчиков — удобный
- Интеграция с экосистемой — простая
- Рост аудитории — быстрый
Ценность — opinionated подход к full-stack — сохранена. Без головной боли от языка.
Урок для создателей фреймворков (и не только)
Строишь новые инструменты? Запомни:
Решай проблему, а не изобретай ради хайпа. Легко выдумать абстракции. Полезнее улучшать существующие.
Ограничения рождают идеи. Вместо языка спроси: "Как сделать TypeScript идеальным для этой задачи?"
Адопшн решает все. Немного менее элегантное решение на популярной базе победит идеальное на самопальной.
DX — про удобство, не новизну. Меньше трения, ясность, хорошие инструменты. Без своего синтаксиса.
Что дальше
Переход на TypeScript не обесценил пять лет. Он сделал фреймворк зрелым инструментом.
Теперь он легче. Команда фокусируется на уникальном. Новички вливаются быстро. Перспективы ясны.
Иногда лучший выбор — не строить.
Строишь следующий хит-фреймворк? Не изобретай велосипед с нуля. Работай на проверенных основах — TypeScript, стандартных domain-регистраторах или надежном hosting. В NameOcean мы за крепкий фундамент, чтобы ты фокусировался на инновациях. Запускаешь фреймворк или стартап? Выбирай инструменты с рычагом, без мигреней.