Слово дня: Meta-coding (произносится Мета-кодинг)
Слово дня: Meta-coding (произносится Мета-кодинг)
Сейчас в моде термин Vibe-coding, даже стал словом года в прошлом году. Вайб-кодинг — это когда берётся хорошая модель ЛЛМ, как правило заточенная специально для программирования (что обычно означает, что она может не просто чатить, а ещё и создавать файлы, запускать их и т.д.). И вот этой модели даётся запрос создать какое-то приложение, или скрипт, или целую систему. То есть задачи ставятся на уровне пожеланий. Например: «создай вебсайт для художника, чтобы выкладывать картины».
Иногда можно сделать более подробный запрос, добавив больше нюансов: вебсайт для художника, чтобы выкладывать картины, где будет страница галереи в виде грида, на каждую можно кликнуть, чтобы открыть покрупнее, а там уже будет и описание, чтобы можно было в таком режиме переключаться на следующую стрелочками. Должна быть админка, где делаются основные настройки внешнего вида и добавляются новые картины.
И нынешние модели довольно хорошо справляются. Потом можно продолжать в том же духе, уже прося изменить какие-то конкретные аспекты сделанного.
Традиционно, в до-ИИшном программировании это делали так называемые руководители проекта. И ставили они эту задачу уже своим менеджерам, которые превращали её в уйму более конкретных задач, разбивали на этапы, отдавали дизайнерам задачу придумать, как это будет выглядеть, копирайтерам — написать тексты, потом всё это согласовывалось, утверждалось и работа шла поэтапно. Крутость нашего времени в том, что вместо целой такой высококвалифицированной команды можно просто написать сравнительно короткий промпт — и проект будет сделан. Конечно же, очень важно написать это точно и грамотно.
Вот этот нюанс про точность и есть самое важное. Программирование по сути — это когда компьютеру надо сказать точно-точно-точно, что делать, обговорить все случаи, варианты и как в них поступать. Изначально это делалось напрямую на уровне машинного кода, прям бинарно. Потом придумали более простой для людей язык — Ассемблер, но там всё равно уровень мышления как у компьютера, только вместо одних нулей и единиц — кое-какие шифроподобные слова в виде очень простых конкретных инструкций. Потом появились языки более высоких уровней, когда программы уже напоминали человеческие алгоритмы и понятия: «если-то», открыть файл, запустить цикл. Если по какой-то причине не обговорён и не предусмотрен какой-то крайний случай — программа ломается, перестаёт работать как надо или вообще падает.
Чтобы рассказать это компьютеру, надо всё делать на специальном языке, используя очень специализированные термины и формат — это и есть языки программирования. А профессия программиста подразумевала знание этих языков, умение составлять алгоритмы, которые будут делать то, что нужно, и навык собирать это всё в кучу, чтобы получить работающую программу.
Появление вайб-кодинга — это феномен, когда ИИ берёт простые человеческие слова в задаче и превращает их уже в задачу, написанную на языке программирования, осмысляя суть запроса и превращая её в алгоритмы, написанные в целую кучу отдельных программ, чаще всего на лучше всего подходящем для задачи языке (а языков-то, конечно, много разных).
Но в этом прекрасном футуристическом танце магического выполнения и понимания задач всё равно не хватает точности. Точно-точно поставить задачу компьютеру (да и вообще кому угодно, как в сказке джину из бутылки) — очень непросто. Выясняется, что мир очень сложный и как ни старайся — всегда находятся непредвиденные варианты, что-то либо непонятно, что надо, либо понятно, но оказывается совсем не то, что хочется. Возникает нескончаемое дерево всяких решений и дилемм, и мало кто готов пройтись по всем веточкам. А если по всем, именно абсолютно всем, не проходишься — возникают ошибки и проблемы.