Какие языки программирования использовать с ИИ?
Когда человек впервые пробует вайбкодинг, часто он сам даже и не знает, на каком языке машина написала ему код. Но если подходить серьёзнее, этот вопрос неизбежно возникнет. Какие языки чаще используются в ИИ-кодинге, и почему?
Как вообще выбирают языки?
Сначала разберёмся: а как языки программирования выбирали ещё до ИИ? Какой «самый лучший»? В заголовках можно увидеть что-то вроде «В опросе разработчиков победил Rust» — что это значит, нужно всё на нём писать?
В первую очередь надо учесть, что у разных языков разные сферы применения. Например, для разработки большинства Android-приложений используют Kotlin, а iOS-приложений — Swift. Дело не в том, что какой-то из них лучше другого: просто разработка на Kotlin официально поддерживается со стороны Google, а Swift создали в Apple. Поэтому обе экосистемы эти рассчитаны на использование «своего» языка.
Поэтому нужно начать с вопроса «Какая у нас задача, что мы вообще хотим создать?» И дальше смотреть, какие языки обычно используют для решения таких задач. Возможно, там есть один общепринятый вариант — тогда и выбирать не приходится. А в других случаях люди делают выбор, но из ограниченного числа основных вариантов — и тогда надо в первую очередь узнать, какие есть варианты, а не сравнивать все языки мира.
Важен не только язык, но и стек
Ещё влияет такой фактор: при создании проекта выбирают не только язык. Обычных в масштабном проекте используют готовые компоненты, где «уже проделана часть работы»: фреймворки, библиотеки, игровые движки, базы данных.
Например, 3D-игры могут различаться персонажами и геймплеем, но одинаково работать с физикой 3D-объектов. И нет смысла для каждой игры заново реализовывать эту сложную задачу. Поэтому используют популярные движки вроде Unity, который берёт «повторяющиеся» задачи на себя, а разработчикам конкретной игры остаётся заниматься «отличающимися».
Подобное и в других сферах. Для сайтов активно используют фреймворки вроде Next.js. При создании Telegram-бота возникает вопрос «какую библиотеку использовать». Если проекту требуется хранить данные, то возникает и вопрос о выборе базы данных. Подобные ключевые компоненты проекта, вместе взятые, называют его техническим стеком.
И такие компоненты зачастую предназначаются для использования с конкретными языками. Например, Unity предполагает использование С#. В итоге люди, которые хотят заняться разработкой 3D-игр, обычно выбирают сразу связкой: или «Unity + C#», или другой движок с его языком. И поэтому ещё один важный фактор при выборе языка для проекта: есть ли в подобные проектах «основополагающие» сторонние компоненты, без которых никуда? И на какие языки рассчитаны эти решения?
Как действует ИИ без указаний?
Предположим, вы запустили ИИ-редактор вроде нашего Kodik и пишете первые промпты. К этому можно подходить двумя способами: или просто говорить «напиши такую-то программу», или сразу добавлять «на языке таком-то».
Если язык не указан, искусственный интеллект может выбрать сам. Когда для задачи есть «общепринятый вариант» с официальной поддержкой, модель просто использует его: например, для Android-приложения возьмёт Kotlin. Когда нет одного «правильного» варианта, оценит, какие чаще используют для этой задачи, и выберет из самых популярных.
Например, Telegram-ботов порой пишут на самых разных языках, но чаще всего — на Python или JavaScript/TypeScript. И библиотеки тоже есть для разных языков, но для этих — особенно популярные. А это зачастую означает хорошую поддержку проекта: например, если в Telegram появится новая возможность, в таких библиотеках могут быстрее добавить нужное со своей стороны.
И возможно сказать ИИ-агенту, например, «сделай Telegram-бота на Rust». Но если сказать просто «сделай бота» без уточнения языка, агент учтёт, что чаще всего их делают на Python и JavaScript/TypeScript, и использует какой-то из этих двух вариантов. Обратите внимание, что он при этом сразу учёл популярные библиотеки.
То есть модель не ударяется в эксперименты, а идёт проторенной дорожкой. Если вы только начинаете и сами не знаете, какие языки используются для ваших задач, то проще всего полагаться на этот выбор. Проторенная дорожка — это не обязательно «самый лучший вариант», но по крайней мере, это не путь в тупик.
Какая задача какому языку ближе?
Полностью всё не перечислить, и тут нет полностью строгих правил: в проекте могут выбирать нетипичный язык, когда на то есть причины. Но вот список в качестве «общего ориентира»:
Скрипты, парсеры, автоматизация
Python, JavaScript / TypeScript
Вайбкодингом многие делают небольшие скрипты для автоматизации своих рутинных задач.
Статические сайты
HTML + CSS + немного JavaScript
С таких сайтов можно начинать вайбкодить. Они публикуют информацию, но не позволяют пользователю сохранить на них свою (например, оставить комментарий).
Веб-приложения (frontend)
JavaScript / TypeScript
Та часть веб-проектов, которую пользователь видит у себя в браузере.
Веб-приложения (backend)
JavaScript / TypeScript, Python, Go, Java, C# и другие (вариантов много, зависит от специфики проекта)
Та часть веб-проектов, которая хранит и обрабатывает данные на сервере
Telegram-боты
Python, JavaScript / TypeScript
Выше описали подробнее
Android-приложения
Kotlin
Ранее использовалась Java, но сейчас реже
iOS-приложения
Swift
Ранее использовался Objective-C, но от этого ушли
Кроссплатформенные мобильные приложения
Dart (с фреймворком Flutter), JS/TS (с React Native)
С помощью фреймворков вроде Flutter можно создавать «приложение сразу для iOS и Android»
ML / AI
В основном Python
В машинном обучении обычно используют библиотеки PyTorch, TensorFlow, JAX
Системное программирование
Rust, C, C++
Речь о «хардкорных» задачах вроде «написать операционную систему», в вайбкодинге они сейчас неактуальны
3D-игры
C# (Unity), C++ (Unreal), JavaScript/TypeScript (простые браузерные игры с Three.js)
Движок диктует язык сильнее, чем жанр
DevOps / инфраструктура
Bash, Python, Go + YAML/Helm
YAML — не именно язык программирования, но здесь тоже имеет значение.
Как подходить к выбору языка программирования?
И что в итоге писать в промпте, если захотелось не просто доверять выбор модели и самостоятельно указать язык? Есть сразу несколько факторов:
- Первый описан выше: сначала надо разобраться, какие вообще языки используются для интересующей вас задачи. Если вы не в курсе, то можно спросить у самого ИИ. Он неплохо отвечает на подобные вопросы, может расписывать преимущества и недостатки разных вариантов.
- Если любой язык из перечисленных вам хоть сколько-нибудь знаком, это сразу даёт ему сто очков вперёд. Ведь поскольку ИИ может допускать ошибки, возможность проверять его работу очень полезна. А значит, лучший язык для использования с ИИ — это тот, который вы уже знаете.
- Если пока не знаете ни одного, работа с ИИ — как раз хорошая возможность в процессе что-то узнать (можно просить его объяснять хоть каждую строчку). Так при выборе языка можно исходить из того, какой вы считаете наиболее полезным вам в будущем и способным пригодиться. Вероятно, самые универсальные варианты тут — JavaScript/TypeScript, потому что их используют в самых разных проектах.
- TypeScript отличается от JavaScript более строгим подходом к указанию типов данных. В некоторых случаях это может уберечь от ошибок, когда про неверно подставленные данные сразу окажется заметно «здесь должен быть другой тип». И поэтому считается, что при использовании с ИИ могут быть полезнее языки вроде TypeScript со статической типизацией.
- Существуют малоизвестные и экспериментальные языки. С ними бывает интересно иметь дело в образовательных целях. Но при этом ИИ может хуже работать с ними, потому что о них меньше данных. Так что можно использовать такие в личных экспериментальных проектах, но если нужно максимальное качество, стоит выбирать из числа популярных.
ИИ может ошибаться, и чем больше человек понимает в происходящем, тем лучше может его проверить.
Язык программирования для ИИ
В разговоре про языки программирования и ИИ есть ещё одна грань: а какие используют в работе над самим ИИ? Когда не говорят «ИИ-модель, сделай мне сайт», а создают саму модель?
В тех задачах, где нужна высокая производительность, зачастую используется C++, но это происходит «под капотом»: многим специалистам по машинному обучению напрямую взаимодействовать с этим кодом не приходится. Вместо этого для взаимодействия с основными инструментами там чаще всего используют Python.
А для «обычных людей» это тоже становится актуально вот в каком случае: когда хочется разобраться «как весь это ИИ вообще работает». В интернете есть много образовательных материалов, подробно объясняющих, как обучают модели. И в этих материалах содержится код на Python. Так что, если освоиться с его основными понятиями, дальше можно будет браться за эти материалы и разбираться в них.
Python широко используется и в других сферах, в том числе в образовании: считается, что осваиваться с ним проще многих других. Так что, если в принципе тема ИИ любопытна, это дополнительный аргумент в его пользу.
Результат
В итоге универсального ответа на вопрос «какой язык лучше для ИИ» не существует. Всё зависит от задачи: для одних проектов есть очевидный стандарт, для других приходится выбирать между несколькими популярными вариантами.
Поэтому лучший подход для начинающего вайбкодера — не искать идеальный язык заранее, а понимать, какие варианты существуют и для чего они используются. А дальше — проверять идеи на практике. Например, в Kodik можно попросить ИИ реализовать одну и ту же задачу с помощью разных технологий, сравнить результат и посмотреть, какой вариант лучше подходит именно для вашего сценария. В прототипе, который позже окажется удалён, и вовсе можно пробовать для практики что угодно, не боясь ошибок.
Такой опыт обычно даёт больше понимания, чем десятки споров о том, какой язык «лучше». Потому что в разработке важен не победитель очередного рейтинга, а инструмент, который помогает решить конкретную задачу.