Я помню, в начале 2000-х на одном форуме кто-то жаловался, что языки программирования слишком сложные. Над ним ехидничали и говорили, что ему нужен язык, в котором есть всего одна инструкция: DoThis
, после которой в произвольной форме описывается, что должна делать программа.
И это была шутка. И это было смешно.
Так вот, господа, боюсь вам сообщить: это время либо уже пришло, либо вот-вот придёт.
Я провожу достаточно много времени с ChatGPT, но мне всегда казалось, что он, по сути, заменяет Stack Overflow - даёт небольшие осмысленные примеры, что-то подсказывает, иногда направляет на правильный путь. Я никогда не рассчитывал, что он сможет взять тщательно написанное техническое задание создать достаточно сложное готовое приложение целиком.
Тем временем люди вдруг начали всерьёз говорить об использовании естественного языка, и в первую очередь английского, как полноценного языка программирования. Вот ссылка на статью, чтобы было понятно, кто об этом говорит и что именно обсуждается.
Один из пропонентов этого — Андрей Карпатый, соучредитель OpenAI, который сейчас руководит образовательной компанией Eureka Labs. Он утверждает, что использование английского языка как языка программирования открыло возможность для нового подхода к разработке программного обеспечения, который он называет "vibe coding".
Вот перевод его сообщения в Twitter-e, в котором он объясняет, что это такое
Есть новый вид программирования, который я называю "vibe coding" - когда ты полностью отдаёшься вайбу, принимаешь экспоненциальный рост технологий и забываешь, что код вообще существует. Это стало возможным, потому что LLM (например, Cursor Composer с Sonnet) достигли нового уровня.
Я вообще просто разговариваю с Composer через SuperWhisper, так что клавиатуру почти не трогаю. Я прошу его сделать самые глупые вещи типа "уменьши отступ на боковой панели вдвое", потому что мне лень самому это искать. Я всегда говорю "Принять все изменения", и больше даже не смотрю на диффы.
Когда я получаю сообщение об ошибке, я просто копирую его в Cursor Composer без комментариев - обычно это помогает.
Код разрастается за пределы моего обычного понимания, и чтобы разобраться, мне пришлось бы реально его вдумчиво читать. Иногда LLM не может исправить баг, и тогда я просто как-то выкручиваюсь или прошу делать случайные изменения до тех пор, пока он не исчезнет.
Для одноразовых проектов на выходных это не так уж и плохо, и даже забавно. Я как бы делаю проект или веб-приложение, но это не то, чтобы настоящее программирование — я просто смотрю на что-то, говорю что-то, запускаю что-то, копирую и вставляю что-то — и оно в основном работает.
Проникнувшись глубиной подхода, народ, разумеется, начал требовать конкретных примеров, но Андрей отвечал уклончиво, и тогда они начали писать примеры сами.
Вот, скажем, игра Марио, которая целиком была написана промптами на английском (Я сразу перейду к первому промпту и покажу несколько последующих, чтобы был понятен процесс взаимодействия.)
"write code in python using the fast API framework to play the mario game.
The game should have an UI. I should be able to play the game using my keyboard"
"make code changes to include sprites, enemies, coins or power-ups"
"introduce gravity so that mario falls freely when moved around with arrow keys"
Как вы понимаете, то, что я написал выше, - это и есть программный код на английском языке. Этот код, по сути, транспилируется в Python, и в результате получается готовая игра.
Разумеется, мы немножко жульничаем, и это далеко не общий случай, и оно получилось настолько лаконично, потому что LLM имеет представление о том, что такое "Mario game", и ему не нужно всё объяснять с нуля.
Но, думаю, что вы понимаете общую тенденцию. Есть мнение, что к 2028 году английский язык станет самым широко используемым языком программирования. И вполне возможно, что так и случится. Как вы считаете?
Автор: sledov