Выбор стека: языки с высоты птичьего полёта
Когда вы направляете AI на создание программ, язык, который вы выбираете, по-прежнему имеет значение — и большое. AI пишет код, но с последствиями живёте вы: как быстро вы выпускаете, как легко развёртывать, как часто вы упираетесь в стену. Хорошая новость в том, что вам не нужно осваивать ни один из этих языков. Вам нужно знать достаточно, чтобы сделать здравый выбор и распознать, когда AI заводит вас куда-то болезненное.
Эта глава пройдётся по языкам, о которых стоит заботиться, по тому, в чём каждый по-настоящему хорош, где он кусается и — что критически важно для vibe coding — насколько хорошо с ним справляются AI-ассистенты. Закончим мы предельно простым руководством по выбору в зависимости от цели.
Замечание перед началом: AI-ассистенты гораздо лучше работают с популярными языками, у которых горы публичного кода, чем с нишевыми. Это не маленький эффект. Зачастую это единственный важнейший фактор того, гладко ли пойдёт ваш проект. Популярность — это фича. Когда язык и его основные фреймворки встречаются в публичных репозиториях миллионы раз, AI видел всякий распространённый паттерн, всякую типичную ошибку и всякое идиоматичное исправление. Когда нет — вы платите за эту скудость провальными попытками и уверенно звучащей чепухой.
Перед именами языков — одна картинка, которую стоит держать в голове: код, который вы пишете, никогда не есть то, что машина действительно выполняет. Что-то посередине превращает ваш текст в работающую программу — либо компилятор (переводит всё заранее в файл, который вы запускаете), либо интерпретатор (читает и выполняет строку за строкой). Выбранный вами язык решает, по какому пути вы идёте.
ВЫ СЕРЕДИНА МАШИНА
┌────────┐ ┌──────────┐
│ исход. │──┬──▶ COMPILER ──▶ binary file ──────▶ │ работа │
│ код │ │ (Go, Rust) (one file) │ на CPU │
│(текст) │ │ │ │
└────────┘ └──▶ INTERPRETER ──читает ──────────▶ │ выводит │
(Python, JS) строку │ результ │
└──────────┘
compiled = сначала перевод, потом запуск
interpreted = перевод во время запуска
