Какие языки программирования использовать с ИИ?

Когда человек впервые пробует вайбкодинг, часто он сам даже и не знает, на каком языке машина написала ему код. Но если подходить серьёзнее, этот вопрос неизбежно возникнет. Какие языки чаще используются в ИИ-кодинге, и почему?

Какие языки программирования использовать с ИИ?

Как вообще выбирают языки?

Сначала разберёмся: а как языки программирования выбирали ещё до ИИ? Какой «самый лучший»? В заголовках можно увидеть что-то вроде «В опросе разработчиков победил 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 можно попросить ИИ реализовать одну и ту же задачу с помощью разных технологий, сравнить результат и посмотреть, какой вариант лучше подходит именно для вашего сценария. В прототипе, который позже окажется удалён, и вовсе можно пробовать для практики что угодно, не боясь ошибок.

Такой опыт обычно даёт больше понимания, чем десятки споров о том, какой язык «лучше». Потому что в разработке важен не победитель очередного рейтинга, а инструмент, который помогает решить конкретную задачу.

11
Начать дискуссию