Хочу поделиться опытом. Написал программу с помощью Qwen. На это ушло 2 дня, но не совсем.
Она довольно неплохо справляется практически со всеми типами задач из всего, что пробовал. DeepSeek неплохо работает с текстом, лучше Qwen, но уж больно часто уходит в даун, работать с ним невозможно. Субъективно, эти модели очень похожи, Qwen немного попроще, но зато работает стабильнее. Кстати, Qwen неплохо рисует иконки (и картинки и даже с текстом).
Так вот, потребовалось мне обрабатывать и модифицировать определенные json файлы большого объема (десятки Мб). Проблема в том, что надо находить в них определенную информацию и при соблюдении нескольких определенных условий копировать в другое место, и всё это надо собирать в разных ветвях json. Сначала я стал писать на php — изложил ТЗ, приложил примеры. Примерно пол дня ушло на php. Но для простоты я давал для тестов маленький файл, а на большом php зависал. Qwen предлагал использовать разные библиотеки для потоковой обработки, но ничего не получилось.
Тогда я решил переделать на Delphi. Были ошибки, Qwen их исправляла, при этом городила другие. Порадовало то, что она работала четко с указанными элементами и не ломала структуру и содержание исходного файла. Однако, часто забывала подключать нужные модули, периодически использовала не существующие свойства. Но в целом хорошо отрабатывала ошибки компилятора. При многочисленных переделках ИИ забывает предыдущие правки, хотя вроде должна помнить контекст, и иногда приходится одно и то же исправлять несколько раз (то есть при очередной правке она возвращает старые ошибки, которые уже исправляла). Хорошо работают примеры, лучше чем объяснения. То есть эффективнее загрузить образец файла и написать, что в нем вот есть такой кусок, а надо чтобы в результате он стал вот этаким.
Кстати, писал я по-русски, Qwen прекрасно понимает. Может, я и сам бы написал, но это было бы сложнее и дольше, так как я не очень шарю в дженериках, в работе с json в Delphi. Но совершенно точно, если б я не был программистом, ничего бы не вышло и с ИИ, так как все равно приходится разбираться в ошибках и предлагать алгоритмы.
В итоге получилась консольная программа на 294 строки из 5 функций. Получает файл параметром, обрабатывает, выдает в консоль лог, сохраняет результат. На нее ушло где-то полтора дня с перерывами на другие дела. Сам я в этой программе не написал ни строчки кода.
Здравствуйте, temnik, Вы писали:
T>Хочу поделиться опытом. Написал программу с помощью Qwen. На это ушло 2 дня, но не совсем.
вот прямо сейчас занимался аналогичной задачей — полное фиаско как deepseek, так и qwen
сперва пытался описать задачу, описать алгоритм, потом уже подсовывал готовые исходники
в итоге — deepseek полностью непригоден, даже получив готовый код он ломает логику работы
qwen — выборочно переводит часть кода, даже пишет резюме и советы, остальное тупо игнорирует
попробовал совсем примитивные функции — косячат на ровном месте, портят память
я быстрее руками напишу код, чем буду этих савантов мучать
Здравствуйте, temnik, Вы писали:
T>...обрабатывать и модифицировать определенные json файлы большого объема (десятки Мб).... T>...консольная программа на 294 строки из 5 функций. Получает файл параметром, обрабатывает, выдает в консоль лог, сохраняет результат...полтора дня...
Ну хз, на подобных задачах (перекладывал json'ы из угла в угол часто и много) это моя средняя производительность на шарпе и чуть выше средней на гошке — это если "с листа" писать, без копипасты из SO. Притом это с учётом того, что весь код должен быть покрыт тестами — функции прицельно под тестирование пишутся.
С учётом этих вводных ИИ выглядит лишним.
Всё сказанное выше — личное мнение, если не указано обратное.
я экспериментировал с ChatGpt и сделал вывод что 4o сильно лучше чем mini.
Я совсем не шарю в javascript но за полдня оно сделало мне мини-сервис который давно хотел.
Сделал вывод что это х10 дешевле чем программист с фриланса, плюс все-таки худо-бедно вникаешь в язык, для себя полезно тоже.
Здравствуйте, temnik, Вы писали:
T>Хочу поделиться опытом. Написал программу с помощью Qwen. На это ушло 2 дня, но не совсем.
NEVER EVER will you be replaced Valeriy!
Most certainly not by some crazy AI that permutates stuff that already has been made/coded/written for issues that we already know how to solve.
YOUR programming is more like art, thinking and creating code to realize what I (try to) describe that is not yet made/coded/written!
А еще потому, что на самом деле это 2й эксперимент. В первом я написал с Qwen тоже простой, но полностью функциональный компонент для Джумлы. Он показывает в админке таблицу обновлений софта из БД с возможностью фильтрации и рисует график. Компонент полностью написан ИИ, дана структура, файлы, их содержимое. Копипаст — создание файлов, и готово. Ушло полдня где-то. Если б это была 3я Джумла, я бы сам написал, но это была 5я, лень было изучать доки.
I>вот прямо сейчас занимался аналогичной задачей — полное фиаско как deepseek, так и qwen
Да ты просто не умеешь его готовить
ИИ может давать неверные решения, и в моем случае в начале так и было, потом совместными усилиями решение нашлось. Удачные решения надо фиксировать, говорить типа — "вот этот код работает почти правильно, запомни это, но нужно исправить вот это".
Ну и все-таки у меня простая консольная программа из одного файла. Но то что ИИ может сейчас говорит о том, что через пару лет он будет легко писать и сложные программы.
Ф>>С учётом этих вводных ИИ выглядит лишним. T>Возможно, но я же написал, что не шарю в обработке json на паскале.
А зачем тогда на паскале? Я так понял, что основной язык — php. Что такого есть в паскале, чего нет в php? Я не стебусь — про php знаю только его название. Вопрос также возник потому, что для меня эти оба языка — императивные общего назначения, т.е. на них обоих можно реализовать любые структуры и алгоритмы. Я не прав?
Всё сказанное выше — личное мнение, если не указано обратное.
Ф>>>С учётом этих вводных ИИ выглядит лишним. T>>Возможно, но я же написал, что не шарю в обработке json на паскале.
Ф>А зачем тогда на паскале? Я так понял, что основной язык — php. Что такого есть в паскале, чего нет в php? Я не стебусь — про php знаю только его название. Вопрос также возник потому, что для меня эти оба языка — императивные общего назначения, т.е. на них обоих можно реализовать любые структуры и алгоритмы. Я не прав?
Я думал на php будет быстрее. Но там потребовались внешние библиотеки для обработки больших файлов. Меня это не устроило. К тому же для запуска php нужен сервер, экзешник же более универсален, для него кроме ОС ничего не требуется. Языки не одинаковые. Php однопоточный, для многопоточности надо много чего городить. Ну и в целом, требуется большое окружение. Дельфи удобнее. Выбор между ними двумя просто потому, что их оба знаю.
Здравствуйте, icezone, Вы писали:
I>Здравствуйте, temnik, Вы писали:
T>>Да ты просто не умеешь его готовить
I>как готовить то, что не понимает базовых правил? I>особождает память повторно после realloc
I>самая коварная подстава — он поменял строки и столбцы, т.е. реально num_rows у него стала количеством стобцов во время расчетов
Я написал, что бы приятно удивлен тем, что исходный файл не поломался. Я был уверен, что придется еще и с этим разбираться.
Видимо, задача была сформулирована недостаточно четко. Можно сказать ему, чтобы не писал код, а сначала объяснил, что он понял из ТЗ, что именно нужно сделать. Явно указать6 что именно содержится в num_rows и др. полях. Добиться того, чтобы он сам правильно формулировал, а потом уже писать код.
Здравствуйте, temnik, Вы писали:
T>Видимо, задача была сформулирована недостаточно четко. Можно сказать ему, чтобы не писал код, а сначала объяснил, что он понял из ТЗ, что именно нужно сделать. Явно указать6 что именно содержится в num_rows и др. полях. Добиться того, чтобы он сам правильно формулировал, а потом уже писать код.
а этот дебил сам названия переменных выбрал и даже пояснил, но потом что-то пошло не так
ну а память освобождать после realloc он нафига начал?
Здравствуйте, icezone, Вы писали:
I>free(result); // Free the original array
realloc
Learn Microsoft https://learn.microsoft.com › cpp
·
Translate this page
Dec 10, 2023 — Новый размер в байтах. Возвращаемое значение. realloc возвращает указатель void в перераспределенном (и, возможно, перемещенном) блоке памяти.
Здравствуйте, falcoware, Вы писали:
F>Dec 10, 2023 — Новый размер в байтах. Возвращаемое значение. realloc возвращает указатель void в перераспределенном (и, возможно, перемещенном) блоке памяти.
до этой строчки не дойдет, потому что он после ресайза еще и копирование запустил
и это не случайная ошибка — ими весь код усеян
хорошо что я это понимаю, а если бы это был незнакомый мне язык?
Здравствуйте, icezone, Вы писали:
I>Здравствуйте, falcoware, Вы писали:
F>>Dec 10, 2023 — Новый размер в байтах. Возвращаемое значение. realloc возвращает указатель void в перераспределенном (и, возможно, перемещенном) блоке памяти.
I>до этой строчки не дойдет, потому что он после ресайза еще и копирование запустил
I>и это не случайная ошибка — ими весь код усеян I>хорошо что я это понимаю, а если бы это был незнакомый мне язык?
Мы же не знаем, что и как ты попросил ее сделать. Я попросил проанализировать Qwen этот код на ошибки, она среди прочего нашла такие —
Утечка памяти при ошибке realloc:
Если realloc возвращает NULL, старый массив result все еще остается доступным, но после вызова free(result) он удаляется.
Однако, если realloc успешен, адрес старого массива заменяется новым адресом, и старая память автоматически освобождается.
Чтобы избежать путаницы, можно сохранить старый адрес перед вызовом realloc:
float* temp = (float*)realloc(result, (end_index — start_index) * sizeof(float));
if (temp == NULL) {
printf("Memory reallocation failed.\n");
return NULL; // Старый массив остается нетронутым
}
filtered_result = temp;
Необходимость явного указания размера массива result:
В коде не указано, как определить размер массива result. Это может привести к проблемам, если start_index или end_index выходят за пределы массива.
Рекомендуется передавать размер массива как дополнительный параметр функции.
Использование realloc вместо malloc:
Если result был создан не с помощью malloc или calloc, а, например, как локальный массив, использование realloc может привести к ошибке.