Наверх

Что не так с ИИ на Java и Rust? Одна причина, почему Python до сих пор незаменим

Все привыкли, что искусственный интеллект — это Python. Но что, если попробовать Java, Rust или Go? Спойлер: ничего хорошего из этого не выйдет, и вот почему

29.11.2025
15:54
AI без Python — это провал. Почему другие языки программирования ужасно справляются с машинным обучением

Основные идеи

Python доминирует в ИИ благодаря экосистеме и скорости экспериментов.
Java и Rust слишком медленно компилируются, что мешает разработке моделей.
Библиотеки для ИИ на Go заброшены, а C# полезен лишь в экосистеме .NET.
Другие языки подходят для инфраструктуры, но не для создания самого ИИ.

Мнение автора

Не стоит пытаться делать все на одном языке. Python идеален для прототипирования и экспериментов с моделями. А когда дело доходит до создания быстрой и надежной инфраструктуры для этого ИИ, вот тут и пригодятся сильные стороны Java или Rust. Каждому инструменту — своя задача.

Спросите любого разработчика, какой язык приходит на ум при словах «искусственный интеллект» или «машинное обучение». Скорее всего, ответ будет Python, и это абсолютно правильно. Но как насчет других языков программирования из высшей лиги?

Конечно, многие библиотеки, которые использует Python, написаны на C++, так что его вклад в ИИ неоспорим. Но что можно сказать о Java, Rust, Go и C#/.NET? Все они занимают важное место в мире корпоративной разработки. Неужели им не нашлось роли в сфере искусственного интеллекта и машинного обучения?

Java

В некотором смысле, Java был ключевым языком для машинного обучения и ИИ до того, как Python украл его корону. Важные части экосистемы обработки данных, такие как Apache Spark, зародились именно во вселенной Java. Spark расширил границы возможного для Java, и новые проекты продолжают эту традицию. Один из примеров — система потоковой обработки Apache Flink, которая включает функции управления моделями ИИ.

Видео от DGL.RU

Вселенная Java, которая включает в себя сам язык, виртуальную машину JVM и ее экосистему (включая другие языки, например Kotlin), представляет собой прочный фундамент для написания библиотек машинного обучения. Строгая типизация в Java и скорость JVM означают, что нативным приложениям не нужно обращаться к библиотекам на других языках, чтобы добиться хорошей производительности.

Собственные Java-библиотеки для машинного обучения и ИИ существуют, и они используются на всех уровнях стека. Например, те, кто знаком с экосистемой Spring, могут использовать Spring AI для написания приложений, которые работают с ИИ-моделями. Пользователи Apache Spark могут подключить слой Apache Spark MLib для машинного обучения в больших масштабах. А библиотеки вроде GPULlama3 позволяют использовать в Java вычисления с ускорением на GPU — ключевой компонент машинного обучения.

Главный минус, который мешает использовать Java для машинного обучения, — это его относительно медленный цикл «редактирование-компиляция-запуск». Этот недостаток, который присущ и большинству других языков в этом списке, делает Java плохим выбором для проведения экспериментов. Однако он отлично подходит для создания библиотек и инфраструктуры для инференса.

Rust

Несмотря на свою молодость по сравнению с Java (Rust всего 13 лет, а Java — 30), этот язык добился огромных успехов в мире разработки. Самые нашумевшие особенности Rust — скорость на уровне «железа», безопасность памяти и сильная система типов — создают надежную основу для написания мощных инструментов для работы с данными.

Скорее всего, если вы работали в области науки о данных, вы уже сталкивались с инструментами на Rust. Например, с библиотекой Polars — системой датафреймов, для которой есть обертки на разных языках. За последние несколько лет также начала формироваться культура нативных инструментов для машинного обучения и науки о данных на Rust, которые предназначены для использования именно в его экосистеме, а не для экспорта в другие.

Некоторые проекты в этой области повторяют популярные инструменты на других языках. Например, ndarray — это библиотека для обработки массивов в духе NumPy. Другие, как tract, предназначены для инференса моделей ONNX или NNEF. А есть и те, что задуманы как первоклассные строительные блоки для машинного обучения на Rust. Например, burn — это фреймворк для глубокого обучения, который использует производительность, безопасность и оптимизации времени компиляции Rust, чтобы создавать модели, оптимизированные для любого бэкенда.

Главный недостаток Rust, когда речь заходит о машинном обучении или ИИ, тот же, что и у Java: время компиляции нельзя назвать незначительным, и сборка крупных проектов может занять много времени. В Rust эта проблема усугубляется длинными цепочками зависимостей, которые могут накапливаться в проектах. Все это затрудняет проведение рядовых экспериментов в области ИИ/ML на Rust. Как и Java, Rust, вероятно, лучше всего подходит для создания библиотек и бэкендов (то есть инфраструктуры и сервисов), а не для самих экспериментов.

Go

На первый взгляд, у языка Go есть серьезное преимущество перед Rust и Java, когда дело доходит до машинного обучения и ИИ. Go компилируется и запускается с такой скоростью и плавностью, какую ожидаешь от интерпретируемого языка. Это делает его гораздо более подходящей «песочницей» для экспериментов.

Но Go подводит общее состояние его библиотек и культуры для таких задач. Еще в 2023 году один из дата-сайентистов давал расклад по использованию Go для машинного обучения. Как он отмечал, у Go были некоторые нативные ресурсы, но ему не хватало надежной поддержки для работы с CUDA, а математические и статистические библиотеки были слабыми по сравнению с Python или R.

По состоянию на 2025 год картина не сильно улучшилась. Большинство высокоуровневых библиотек для ИИ/ML на Go попросту заброшены. Golearn, одна из самых популярных библиотек для глубокого обучения на Go, не обновлялась уже три года. Аналогично, Gorgonia, которая метила в ту же нишу, что Theano и TensorFlow, не получала обновлений примерно столько же времени. А библиотеку для обработки естественного языка SpaGO ее автор и вовсе объявил устаревшей в пользу проекта Candle на Rust.

Такое положение дел отражает общую специализацию Go, который сконцентрировался на сетевых сервисах, инфраструктуре и утилитах командной строки, а не на задачах вроде машинного обучения. В настоящее время Go, похоже, наиболее полезен для таких вещей, как выдача предсказаний на уже существующих моделях или работа со сторонними API для ИИ, но не для создания полноценных ИИ/ML решений.

C# и .NET

Годами Microsoft постоянно обновляет свой язык C# и его базовую среду .NET, чтобы они отвечали меняющимся запросам корпоративной аудитории. Машинное обучение и генеративный ИИ стали одними из последних направлений в этом списке. Выпущенный в 2024 году .NET 9 обещал расширенные библиотеки и инструменты для ИИ/ML. Ключевой особенностью стал Semantic Kernel SDK от Microsoft — инструмент на C#, который позволяет работать с сервисами Azure OpenAI от Microsoft, используя естественный язык для ввода и вывода.

Существуют и другие реализации Semantic Kernel, включая версию на Python, но именно версия для .NET нативно и гладко работает с другими нововведениями для ИИ/ML в .NET 9. Речь идет об абстракциях в C# и новых примитивных типах для работы с большими языковыми моделями или их создания. Один из примеров, абстракция VectorData, предназначена для работы с типами данных, которые обычно используются при создании или обслуживании ИИ/ML моделей. Идея в том, чтобы в самом C# были типы данных, которые точно соответствуют задачам, а не полагаться на сторонние дополнения или абстракции более высокого уровня. Другие библиотеки .NET от Microsoft помогают с сопутствующими функциями, например с оценкой результатов работы LLM.

Главная проблема с использованием C# и .NET для разработки в сфере ИИ/ML заключается в том, что его практически не используют разработчики, которые и так не работают в экосистеме C#/.NET. Почти ни один опрос разработчиков не указывает, что C# или другие языки .NET получили значимое распространение в сфере ИИ/ML. Другими словами, поддержка ИИ/ML в C#/.NET, похоже, используется в основном в существующих .NET-приложениях и сервисах, а не в каких-то более широких сценариях.

Заключение

Сложно пошатнуть доминирование Python в сфере ИИ/ML, и дело не только в его давнем присутствии на рынке. Удобство Python, а также богатство его утилит и широкая культура разработки — все это складывается в мощное преимущество.

Другие языки все еще могут быть ключевыми игроками в пространстве машинного обучения и искусственного интеллекта. Фактически, они ими уже являются. Технологии на базе Java, такие как Spark, лежат в основе целого ряда инструментов ИИ/ML, которые работают на экосистеме JVM. Аналогично, C# и среда .NET остаются столпами корпоративного мира со своим собственным, постоянно расширяющимся набором нативных библиотек и возможностей для ИИ. Корректность и скорость Rust делают его превосходным выбором для написания библиотек, которые используются как в его собственной экосистеме, так и в других. А популярность Go для сетевых и сервисных приложений делает его идеальным для обеспечения связи и обслуживания предсказаний моделей, даже если он не подходит для написания самих ИИ-приложений.

Хотя ни один из этих языков сейчас не используется для основной массы ежедневного экспериментального кодирования, где Python остается самым частым выбором, у каждого из них все равно есть своя роль в эволюции искусственного интеллекта и машинного обучения.

Конец эры ChatGPT: Google Gemini стремительно отбирает аудиторию

Сердар Егильальп

Сердар Егильальп

Он пишет о технологиях уже тридцать лет. За это время он получил несколько наград. Их дали за лучшие обучающие статьи, которые помогают программистам. Но ему этого мало. Поэтому он ещё и записывает еженедельные видео. Там он делится советами и полезными техниками.

Источник: InfoWorld
Подпишитесь на наши новости:
Нажимая кнопку «Подписаться», вы принимаете «Пользовательское соглашение» и даёте согласие с «Политикой обработки персональных данных»