Добавить новость
Новости сегодня

Новости от TheMoneytizer

Опыт переноса кода с Python на Rust с помощью Claude Sonnet

Dgl.ru 

Опыт работы с ИИ-инструментами для написания кода у всех примерно одинаковый: в какой-то момент кажется, что это настоящая магия, но потом что-то идет не так.

Сначала вы наблюдаете, как ИИ-агент анализирует вашу кодовую базу и выдает удивительно точные предложения по архитектуре. А в следующую секунду он начинает заспамливать консоль странным набором символов, пока буфер не переполнится.

По мере развития ИИ-инструментов мы начали лучше понимать, что они делают хорошо, с чем справляются плохо, а к чему их лучше вовсе не подпускать. Теоретически они расширяют возможности разработчиков, беря на себя рутину: генерацию тестов, рефакторинг, создание примеров для документации и прочее. На практике за такое «упрощение» часто приходится платить. То, что ИИ делает проще на старте, часто создает дополнительные трудности в будущем.

Видео от DGL.RU

Одной из заманчивых идей была миграция кода с одного языка на другой. Если бы у меня был проект на Python, решил бы ИИ-агент задачу быстрее, если перенести его на Rust? Или хотя бы мог бы он работать «вторым пилотом»?

Такой вопрос заслуживает проверки на практике. Вот что произошло, когда я попытался использовать Claude Code для переноса одного из своих Python-проектов на Rust.

Настройка проекта и выбор языка

В качестве подопытного выступила система ведения блогов на Python — серверное приложение, которое генерирует статический HTML и предоставляет интерфейс, похожий на WordPress. Я выбрал его из-за относительной простоты: система шаблонов для каждого блога, категории, теги и интерфейс для написания постов через HTML, текстовый редактор или обычный Markdown.

Я убедился, что все компоненты — система шаблонов, ORM, веб-фреймворк — имеют аналоги в экосистеме Rust. В проекте также был фронтенд на JavaScript, что позволило проверить, как инструменты справляются со смешанной кодовой базой.

Выбор Rust обусловлен тем, что гарантии безопасности и корректности в этом языке проверяются на этапе компиляции, а не во время выполнения. Я полагал, что ИИ получит полезную обратную связь от компилятора, что сделает процесс миграции более продуктивным. (Надежда умирает последней, не так ли?)

Для работы я сначала выбрал Claude Sonnet 4.5, а затем перешел на Claude Sonnet 4.6, когда предыдущая версия была отключена. Также использовал IDE Antigravity.

Первая директория

Я создал копию проекта, открыл ее в Antigravity и дал простую установку:

В этой директории находится Python-проект, система блогов. Изучи код и разработай план миграции на Rust, используя нативные библиотеки, но сохранив исходную функциональность.

Изучив код, Claude предложил следующий стек для перехода на современную высокопроизводительную платформу:

  • Axum для веб-слоя.
  • SeaORM для работы с базой данных.
  • Tera для шаблонизации.
  • Tokio для асинхронных задач (вместо многопроцессорности Python).

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

Я изучил план и заметил, что в нем нет создания тестовых данных для базы. Claude добавил этот этап, и я подтвердил, что база успешно создается. Пока все шло хорошо.

Упущенные детали

На следующем этапе выяснилось, что Claude упустил из виду многое. Несмотря на реализацию логики рендеринга страниц, он не создал инфраструктуру для пользователя — панель администратора для входа, редактирования и управления постами. Справедливости ради, в инструкциях я об этом не упоминал. Винить ли ИИ в недостатке инициативы или себя в нечетких инструкциях? Как бы то ни было, я указал на упущение и получил план реализации:

«Теперь я работаю над недостающим интерфейсом администратора, анализируя оригинальные шаблоны Bottle и планируя их миграцию на Tera, включая экран входа и главную панель управления».

Примечание: Bottle — это веб-фреймворк, который я использовал в Python-проекте. Это стало проверкой: насколько хорошо Claude справится с миграцией с менее известной библиотеки? Само по себе это не стало большой проблемой, но серьезные неприятности ждали впереди.

Здесь и начался бесконечный цикл «промпт — генерация — тест — исправление». Я просил реализовать недостающий элемент интерфейса, запускал код, находил ошибки, просил Claude исправить их.

Первой проблемой стала ошибка во время выполнения шаблонов, которую компилятор Rust не отловил. Затем страница входа оказалась пустой. Когда она заработала, там появилась надпись «Логика входа еще не реализована». Затем выяснилось, что логика обработки паролей работает неверно. И так далее, по всем компонентам приложения.

Крупные и мелкие сбои

В некотором смысле использование Claude для миграции напоминало мой опыт ручного переписывания программ: работа шла рывками, простое оказывалось сложным, а сложное — неожиданно простым.

Однако была одна существенная разница: Claude периодически «ломался» и требовал серьезного вмешательства. В один момент, когда я попросил продолжить работу над панелью администратора, модель начала бесконечно печатать «CoreCoreCoreCore…» в консоль. В итоге я получил сотни строк мусора, а само слово «Core» стало хаотично появляться в конце других ответов.

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

Также я заметил, что Claude делает необоснованные предположения об окружении. Например, он пытался выполнять команды в синтаксисе Bash, получал ошибку, осознавал, что работает в PowerShell, и только после этого исправлял команду.

Это распространенная проблема: ИИ планирует ровно столько, сколько вы ему скажете. Чем настойчивее вы задаете рамки, тем стабильнее результат. Но «стабильнее» не означает «идеально».

Наконец, ручная проверка кода показала, что Claude часто игнорирует намерения исходного кода. Например, в Python-версии все роуты имели декоратор проверки авторизации. Если вы не вошли в систему, вас перенаправляли на страницу входа. Claude практически полностью проигнорировал этот паттерн. Почти все административные роуты, включая те, что выполняют критические действия, оказались незащищенными.

Более того, когда он все же добавлял валидацию, то делал это в виде «костыля» в начале функции вместо использования полноценного макроса или функции. Не знаю, не распознал ли он декораторы Python или просто не знал, как эффективно перенести их на Rust, но он даже не упомянул об этом упущении. Мне пришлось искать эти дыры в безопасности самостоятельно.

Три вывода

После нескольких дней работы с Claude я перенес значительную часть функциональности и решил подвести итоги.

1. Знайте исходный язык и язык назначения

Использование ИИ не избавляет от необходимости владеть обоими языками. Если вы не разбираетесь в теме, вы не сможете распознать, когда сгенерированный код становится проблемным. Автоматизация может дополнить опыт, но не заменить его.

2. Будьте готовы к итерациям

Чем четче и настойчивее ваши инструкции, тем выше вероятность получить желаемое. Но маловероятно, что это получится с первой или даже четвертой попытки. Постоянный диалог с ИИ неизбежен. При этом процесс может сильно утомлять: если при обычной разработке вы боретесь с компьютером, то здесь вы боретесь с агентом, который борется с компьютером.

3. Берите ответственность на себя

Будьте готовы отвечать за каждую сгенерированную строку кода. Нельзя просто сказать: «Раз работает, значит, сойдет». Claude — лишь исполнитель, а решение принимаете вы. Важно не только то, чтобы код работал, но и то, насколько качественно он использует возможности языка, его экосистему и идиомы. Если вы не чувствуете уверенности в технологиях, лучше сначала изучить их самостоятельно, прежде чем открывать окно чата с ИИ.

Claude AI быстро догоняет ChatGPT и Gemini и уже дружит с ними

Сообщение Опыт переноса кода с Python на Rust с помощью Claude Sonnet появились сначала на DGL.RU - Цифровой мир: новости, тесты, обзоры телефонов, планшетов, ноутбуков.

Читайте на сайте


Smi24.net — ежеминутные новости с ежедневным архивом. Только у нас — все главные новости дня без политической цензуры. Абсолютно все точки зрения, трезвая аналитика, цивилизованные споры и обсуждения без взаимных обвинений и оскорблений. Помните, что не у всех точка зрения совпадает с Вашей. Уважайте мнение других, даже если Вы отстаиваете свой взгляд и свою позицию. Мы не навязываем Вам своё видение, мы даём Вам срез событий дня без цензуры и без купюр. Новости, какие они есть —онлайн с поминутным архивом по всем городам и регионам России, Украины, Белоруссии и Абхазии. Smi24.net — живые новости в живом эфире! Быстрый поиск от Smi24.net — это не только возможность первым узнать, но и преимущество сообщить срочные новости мгновенно на любом языке мира и быть услышанным тут же. В любую минуту Вы можете добавить свою новость - здесь.




Новости от наших партнёров в Вашем городе

Ria.city
Музыкальные новости
Новости России
Экология в России и мире
Спорт в России и мире
Moscow.media






Топ новостей на этот час

Rss.plus





СМИ24.net — правдивые новости, непрерывно 24/7 на русском языке с ежеминутным обновлением *