Хочу поделиться опытом. Написал программу с помощью 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 может привести к ошибке.
Здравствуйте, temnik, Вы писали:
T>Мы же не знаем, что и как ты попросил ее сделать. Я попросил проанализировать Qwen этот код на ошибки, она среди прочего нашла такие —
я, по-твоему, просил ошибки специально добавить?
видно же что функция из массива берет кусок с заданными границами
T>Я думал на php будет быстрее. Но там потребовались внешние библиотеки для обработки больших файлов.
Для десятка мегабайт? при соответствующих лимитах двухгиговые файлы обрабатываются без внешних библиотек.
Больше похоже на ограничения сервера (upload body size) или в конфиге php.ini (max_size=2M memory_limit=8M)
T>Меня это не устроило. К тому же для запуска php нужен сервер,
для консоли есть же php-cli ? он и вызывается. если из командной строки запускать php scriptname.php
кстати, у него свой конфиг в /etc/php/ver/cli/php.ini, отличающийся от серверного /etc/php/ver/fpm/php.ini, и соответственно с отличающимися лимитами.
T>>Я думал на php будет быстрее. Но там потребовались внешние библиотеки для обработки больших файлов.
SK>Для десятка мегабайт? при соответствующих лимитах двухгиговые файлы обрабатываются без внешних библиотек. SK>Больше похоже на ограничения сервера (upload body size) или в конфиге php.ini (max_size=2M memory_limit=8M)
T>>Меня это не устроило. К тому же для запуска php нужен сервер,
SK>для консоли есть же php-cli ? он и вызывается. если из командной строки запускать php scriptname.php
Он в вакууме работает, или все-таки в окружении сервера? В окружении. Допустим, завтра мне потребуется запустить скрипт на другом компьютере — мне там сервер настраивать?
По-любому вопрос решен, программа для меня удобнее, да и интереснее.
Собственно, я предлагал обсудить применение ИИ для программирования, а не настройку php.
SK>>для консоли есть же php-cli ? он и вызывается. если из командной строки запускать php scriptname.php
T>Он в вакууме работает, или все-таки в окружении сервера? В окружении.
В окружении OS.
T>Допустим, завтра мне потребуется запустить скрипт на другом компьютере — мне там сервер настраивать?
Сервер (очевидно httpd) не обязателен. Конечно, мало кто ставит php standalone, но это вполне нормальная конфигурация.
httpd при этом может быть на другом хосте, SQL db на третьем, а сами файлы на четвертом.
T>Собственно, я предлагал обсудить применение ИИ для программирования, а не настройку php.
Это просто полезная информация "для общего развития".