S>Даешь исходник. ЯП она определяет сама. Так же нужна среда для запуска — чтобы могла запустить, сделать скрин (или что там) — и сопоставить. S>Далее — указываешь целевой язык или платформу. S>ИИ — просто тупо переводит. Не получилось — ищет варианты пока не получится. S>Возможно ли? Вроде да. Когда?
Нет. Вавилонская башня из разных языков в 1 организации нужна для конкуренции руководителей (отжимать темы у старых работников, которые "не знают современно-актуальных языков", и заменять на новых работников [которые "знают"], подконтрольных лично себе). Инструменты, мешающие перегораживанию проходов на ровном месте, и облегчающие труд всем подряд подчинённым, начальство не купит.
Друга ищи не того, кто любезен с тобой, кто с тобой соглашается, а крепкого советника, кто полезного для тебя ищет и противится твоим необдуманным словам.
Re: Появятся ли автоматические AI-переводчики программ?
Здравствуйте, Nuzhny, Вы писали:
S>>ИИ — просто тупо переводит. Не получилось — ищет варианты пока не получится. N>Я правильно понимаю, что ты не знаешь термин "трансляция"? Или говоришь о переводе програмыы на иностранный язык?
Трансляция вроде подразумевает по строгим алгоритмам, когда одному можно строго сопоставить другое. Но это не возможно — языки и платформы слишком разные — строгое сопоставление не получается.
А вот не строгий именно перевод, возможно даже с небольшими изменениями функционала (не критическими) — вполне возможен.
=сначала спроси у GPT=
Re: Появятся ли автоматические AI-переводчики программ?
А зачем?
К тому же программы не бывают просто сами по себе в вакууме. Нормальные программы тянут за собой фреймворки и либы. И немало. И тут с переводом на другой язык будет задница.
Есть например программа на Qt в пять строчек, выводящая окно с кнопкой и надписью «hello world”. И как будет выглядеть перевод на другой язык?
Re[2]: Появятся ли автоматические AI-переводчики программ?
Если это будет автоматизированно и с гарантией — то просто для удобства людей. К примеру, автоматом перевести то пресловутое ядро Linux с C на Rust.
Н>К тому же программы не бывают просто сами по себе в вакууме. Нормальные программы тянут за собой фреймворки и либы. И немало. И тут с переводом на другой язык будет задница. Н>Есть например программа на Qt в пять строчек, выводящая окно с кнопкой и надписью «hello world”. И как будет выглядеть перевод на другой язык?
Так в том то и дело — речь, в первую очередь, о переводе ЯДЕР и БИБЛИОТЕК. А уже потом прикладной софт.
Ранее не представлялось возможным. Но коль скоро говорят что ИИ умеет — то это первое, что наиболее легко автоматизировать. Ни Т.З. не нужно ничего — вот он формальный код — бери и делай такое же поведение, но на другом языке.
=сначала спроси у GPT=
Re[2]: Появятся ли автоматические AI-переводчики программ?
Здравствуйте, Privalov, Вы писали:
P>А ИИ что сам об этом думает?
Отличный вопрос. Несмотря на то, что LLM (вроде меня) может генерировать код, анализировать функции и даже помогать в разработке, есть несколько критически важных задач в ядре Linux, которые пока что неподвластны ИИ без участия человека:
Только человек может:
понять архитектурные компромиссы;
оценить влияние изменений на производительность, безопасность и совместимость;
выбрать подходящую стратегию проектирования подсистем (например, планировщик задач, memory management).
— признал поражение
=сначала спроси у GPT=
Re[3]: Появятся ли автоматические AI-переводчики программ?
Здравствуйте, Shmj, Вы писали:
S>- признал поражение
И правильно. Вообще-то я и без него знал, что в общем случае не сможет. Слишком много всякого, помимо собственно перевода.
Я спросил мнение ИИ, потому что сам участвовал лет 15 назад в чём-то подобном. Перенос проекта с отстойных технологий 80-х на продвинутые 21 века. Кровавый энтерпрайз, классическая трёхзвенка.
Даже если взять что-нибудь числодробительное на Фортране и тупо перевести на C/C++, ничего хорошего их этого не выйдет. Хотя бы потому, что сишный код, полностью повторяющий фортрановский, перестанет нормально читаться. Это особенность математиков, я довольно долго с ними работал. Постороннему написанный ими код может казаться полным бредом. Но математиками вполне нормально разрабаоывается и поддерживается.
И именно тогда оказалось правильнее разобраться, как подключить си к Фортрану, чем переписывать с нуля всё на Сях. Тут где-то были примеры тупого перевода с Фортрана на C++/MFC. Ужас.
Re[3]: Появятся ли автоматические AI-переводчики программ?
Здравствуйте, Shmj, Вы писали:
S>Трансляция вроде подразумевает по строгим алгоритмам, когда одному можно строго сопоставить другое. Но это не возможно — языки и платформы слишком разные — строгое сопоставление не получается.
S>А вот не строгий именно перевод, возможно даже с небольшими изменениями функционала (не критическими) — вполне возможен.
Имеешь ввиду, что программа будет делать что-то другое, а мы хотим только совпадение результатов при одинаковых входных данных? Тогда это и переводом сложно назвать, явно нужен другой термин.
Re[4]: Появятся ли автоматические AI-переводчики программ?
Здравствуйте, Nuzhny, Вы писали:
N>Имеешь ввиду, что программа будет делать что-то другое, а мы хотим только совпадение результатов при одинаковых входных данных? Тогда это и переводом сложно назвать, явно нужен другой термин.
Перевод же — не обязательно чтобы все слова были в точности переведены. Главное — передать смысл.
И тут то же самое — программа должна иметь тот же смысл, но возможно внутренняя реализация будет немножко адаптирована. Однако использовать ее можно будет точно так же и результат работы программы будет таким же. Программа или библиотека — не важно. API библиотеки должно сохраниться, а вот внутренняя реализация может быть чуть другой.
Здравствуйте, Shmj, Вы писали:
S>Перевод же — не обязательно чтобы все слова были в точности переведены. Главное — передать смысл.
Я бы сказал — написать программу с аналогичным функционалом по образцу.
Я когда переписывал с С на С++ ffplay, то выкидывал оттуда много кода, связанного с ручной реализацией очередей, заменял использование SDL на std и многое другое. В итоге кода стало намного меньше. Да, сами libav библиотеки так и использовались с их C API, но проект стал ну очень сильно другим, это реально получилась другая программа.
И это было переписывание между родственными языками, когда С++ компилятор мог с минимальными правками просто компилировать готовый сишный код.
При переходе да принципиально другой язык (Rust, Python) код в принципе оказался бы другим.
Также у меня перед глазами на Гитхабе есть пара проектов по реализации на C++ и libTorch проектов, которые в оригинале были написаны на Питоне и PyTorch. Одно и тоже по функционалу, но внутри и близко нет, хотя тоже на одной базовой библиотеке построены.
Re[3]: Появятся ли автоматические AI-переводчики программ?
Здравствуйте, Shmj, Вы писали: S>Так в том то и дело — речь, в первую очередь, о переводе ЯДЕР и БИБЛИОТЕК. А уже потом прикладной софт. S>... Ни Т.З. не нужно ничего — вот он формальный код — бери и делай такое же поведение, но на другом языке.
Если научится переписывать большие проекты на другом языке, тогда научится и программировать тоже.
Чего пока не хватает, чтобы писать программы на реальных задачах:
— Нужны дополнительные механизмы долгосрочной памяти (не при обучении, а в долгосрочных сессиях).
— Навигация по большим контекстам, не пропуская через ресурсоемкие механизмы внимания(у них квадратичная вычислительная сложность)
— Работа с системами с изменяемым состоянием. Возможность вносить небольшие правки в большой проект, через внешние инструменты. А не пересоздавать полные копии, внося опечатки. Работа с объектными моделями кода через внешние инструменты.
И еще много чего не хватает — отладка, рефакторинг, ... . Но этому дообучать может оказаться сложнее, затратнее по ресурсам, чем просто учить продолжать тексты.
DeepSeek про сложности больших проектов.
Вопрос: Большие языковые модели(LLM) пока не могут работать с большими объемами исходных текстов на языках программирования.
Например, если в программе 5 миллионов строк и нужно по описанию проблемы в работе программы найти место для внесения изменений и внести поправки.
Почему для LLM есть сложности в таких задачах при больших объемах текста?
DeepSeek:
Сложности больших языковых моделей (LLM) при работе с крупными кодовыми базами (например, 5 млн строк) связаны с несколькими фундаментальными ограничениями:
1. Ограничение контекстного окна
Даже современные LLM (например, GPT-4o, Claude 3) обрабатывают до 1–2 млн токенов за запрос. Для проекта из 5 млн строк кода:
— Масштаб: 1 строка ? 5–10 токенов > 25–50 млн токенов, что в 25–50 раз превышает возможности моделей.
— Фрагментация: Разделение кода на части разрушает семантические связи между компонентами.
2. Архитектурные зависимости
— Глобальный контекст: Изменения в крупных системах требуют понимания связей между модулями, внешними библиотеками и архитектурными паттернами, что невозможно при частичном анализе.
— Неявные связи: LLM не отслеживают косвенные зависимости (например, вызовы через рефлексию или конфигурационные файлы).
3. Вычислительная эффективность
Обработка всего кода требует:
— Квадратичного роста времени генерации (O(n^2) для attention-механизмов).
— Стоимости, сопоставимой с месячным бюджетом небольшой компании (например, 50 млн токенов в GPT-4 ? $15 000 за запрос).
4. Семантические ловушки
— Ложные паттерны: Модель может находить локально корректные, но глобально ошибочные решения (например, "исправить" переиспользуемую переменную, нарушив работу другого модуля).
— Контекстный шум: 95% кода не релевантны конкретной задаче, но LLM не умеют эффективно фильтровать шум без явных указаний.
5. Отсутствие долговременной памяти
Даже при последовательной обработке частей кода:
— LLM не сохраняют полное состояние проекта между запросами.
— Невозможно построить семантический граф зависимостей в реальном времени.
---
Перспективные подходы для преодоления ограничений:
— Гибридные системы: Комбинация LLM со статическими анализаторами (например, Semgrep, CodeQL) для фильтрации релевантных участков.
— RAG (Retrieval-Augmented Generation): Векторный поиск по кодовой базе для извлечения контекста перед генерацией.
— Иерархическая обработка: Анализ на уровне модулей > классов > функций с агрегацией результатов.
— Специализированные модели: Fine-tuning LLM на конкретной кодовой базе (как GitHub Copilot Workspace).
Однако даже эти методы пока не позволяют полностью автоматизировать рефакторинг крупных проектов — человеческое ревью остаётся критически важным.
Про модификацию существующего кода
Вопрос:
Когда языковая модель(LLM) получает в задании большой текстовый файл и требуется внести небольшую поправку в нем в одном месте.
Вопрос: LLM генерирует ли измененную копию этого файла или генерирует для внешних инструментов команду заменить указанные строчки в файле?
Вопрос не про внутреннюю реализацию, а про то — возможны ли ошибки и опечатки в большей части файла, где не требовались изменения (если они тоже заново сгенерированы LLM)?
DeepSeek:
1. Генерация изменённой копии vs. команды для инструментов:
По умолчанию языковые модели (LLM) **генерируют изменённую копию файла**, а не команды для внешних инструментов. Они не умеют напрямую взаимодействовать с файлами или редакторами (например, как `sed` или `vim`). Их задача — предсказывать текст, включая изменения, на основе входных данных.
Однако, если в промпте явно указать сгенерировать команду для замены строк (например, "Напиши команду `sed`, чтобы заменить строку X на Y в файле Z"), LLM может это сделать. Но это зависит от формулировки задачи.
2. Риск ошибок в неизменённых частях:
Если LLM пересоздаёт весь файл с небольшой правкой, вероятность ошибок и опечаток в остальном тексте высока. Причины:
— LLM не запоминают текст дословно, а перегенерируют его, опираясь на контекст и свои паттерны.
— Модель может "додумать" или изменить части, которые не требовали правки, особенно если файл большой и сложный.
— Чем больше файл, тем выше шанс, что модель потеряет детали или внесёт неочевидные изменения (например, в форматировании, пунктуации, повторяющихся элементах).
3. Когда риск минимален:
Ошибки маловероятны, только если:
— Правка явно локализована (например, "замени слово 'кошка' на 'собака' в третьем абзаце"), а модель аккуратно следует инструкции.
— Используются специализированные инструменты поверх LLM (например, плагины для поиска/замены в конкретных строках), где модель генерирует только команды, а не весь файл. Итог:
Для точечных правок в больших файлах надежнее использовать LLM для генерации инструкций внешним инструментам (например, скриптам), а не полной перезаписи файла. Это снижает риск случайных ошибок. Если же модель генерирует новую копию, требуется тщательная проверка неизменённых частей.
Re: Появятся ли автоматические AI-переводчики программ?
Здравствуйте, Shmj, Вы писали:
S>Типа так. S>Даешь исходник. ЯП она определяет сама. Так же нужна среда для запуска — чтобы могла запустить, сделать скрин (или что там) — и сопоставить. S>Далее — указываешь целевой язык или платформу. S>ИИ — просто тупо переводит. Не получилось — ищет варианты пока не получится. S>Возможно ли? Вроде да. Когда?
Тут скорее проще с нуля. Было бы тз или спека.
Кодом людям нужно помогать!
Re: Появятся ли автоматические AI-переводчики программ?
Здравствуйте, Shmj, Вы писали:
S>Даешь исходник. ЯП она определяет сама. Так же нужна среда для запуска — чтобы могла запустить, сделать скрин (или что там) — и сопоставить.
S>Далее — указываешь целевой язык или платформу.
S>ИИ — просто тупо переводит. Не получилось — ищет варианты пока не получится.
S>Возможно ли? Вроде да. Когда?
Уже вчера.
Они и сейчас шмогли бы "без проблем", но с условиями. Ты должен создать ведущий промпт или серию промтов (типа mcp бумеранга) для чёткой постановки задачи и разбивки подзадач до состояния, когда они влезают в контестное окно LLM.
В общем-то все авто-построители сайтов и тот-же manus (который вообще чем-попало может заниматься) держатся на подобных промптах.
Дело за малым — сделать самому. Грести деньги лопатой (скорее всего нет, сейчас все так умеют на коленке делать).