Оптимизация кода с помощью искуственного интелекта

Ответить
Аватара пользователя
mycos
Рядовой
Сообщения: 27
Зарегистрирован: 22 ноя 2025, 20:25
Имя: Александр
Благодарил (а): 3 раза
Поблагодарили: 11 раз

Оптимизация кода с помощью искуственного интелекта

Сообщение mycos »

Сделал небольшой скетч и решил проверить в ИИ
Этот код типичен для визуальных сред программирования (вроде FLProg). Основные проблемы: использование ресурсозатратного класса String, лишние вызовы map и analogRead, а также неэффективная очистка экрана, вызывающая мерцание.
В браузере гугла, в режиме ИИ попросил "оптимизироваь код" и ввел сам код.
Показать

Код: Выделить всё

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C _lcd1(0x27, 16, 2);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;
int _disp1oldLength = 0;
void setup()
{
    Wire.begin();
    delay(10);
    _lcd1.init();
    _lcd1.backlight();
}
void loop()
{
    if (_isNeedClearDisp1) 
    {
        _lcd1.clear();
        _isNeedClearDisp1= 0;
    }
    //Плата:1
    if (!(0)) 
    {
        _dispTempLength1 = (((String((map(((analogRead (0))), (0), (100), (0), (1023))), DEC)))).length();
        if (_disp1oldLength > _dispTempLength1) 
        {
            _isNeedClearDisp1 = 1;
        }
        _disp1oldLength = _dispTempLength1;
        _lcd1.setCursor(int((16 - _dispTempLength1)/2), 0);
        _lcd1.print(((String((map(((analogRead (0))), (0), (100), (0), (1023))), DEC))));
    }
     else 
    {
        if (_disp1oldLength > 0) 
        {
            _isNeedClearDisp1 = 1;
            _disp1oldLength = 0;
        }
    }
}
Думал какую-то шляпу выдаст, но он справился. Оптимизировал, да еще и с комментариями.
Показать

Код: Выделить всё

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

int lastValue = -1; // Для отслеживания изменений

void setup() {
    lcd.init();
    lcd.backlight();
}

void loop() {
    // Читаем значение один раз за итерацию
    int rawValue = analogRead(A0);
    // Аналог вашей логики: map(val, 0, 100, 0, 1023) -> это просто умножение на 10.23
    int mappedValue = map(rawValue, 0, 100, 0, 1023);

    // Обновляем экран только если значение изменилось
    if (mappedValue != lastValue) {
        updateDisplay(mappedValue);
        lastValue = mappedValue;
    }
    delay(50); // Небольшая задержка для стабильности
}

void updateDisplay(int value) {
    // Вычисляем длину числа без использования String
    int length = (value >= 1000) ? 4 : (value >= 100) ? 3 : (value >= 10) ? 2 : 1;
    int pos = (16 - length) / 2;

    // Вместо полной очистки lcd.clear() (которая медленная), 
    // затираем старые символы пробелами
    lcd.setCursor(0, 0);
    for (int i = 0; i < pos; i++) lcd.print(" "); // Пробелы до числа
    lcd.print(value);
    for (int i = 0; i < (16 - pos - length); i++) lcd.print(" "); // Пробелы после
}
После компиляции 14% и 9%. разница ощутимая для маленького кода.
Проверил в tinkercad, работает одинаково, причем после ИИ стабильнее. Первый код иногда прибавляет лишний разряд.
Вот вам и "Иллюзия Интелекта".
Но я. к сожалению, далек от программирования. Поэтому хочется комментариев от знающих людей. Как будет с большими проектами?
Аватара пользователя
Phazz
Полковник
Сообщения: 3518
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 381 раз
Поблагодарили: 262 раза

Re: Оптимизация кода с помощью искуственного интелекта

Сообщение Phazz »

Сильно зависит что за ии и какой промпт. Но оптимизация готового обычно хорошо делает. Но боюсь без минимального знания кода это будет лотерея.
Аватара пользователя
mycos
Рядовой
Сообщения: 27
Зарегистрирован: 22 ноя 2025, 20:25
Имя: Александр
Благодарил (а): 3 раза
Поблагодарили: 11 раз

Re: Оптимизация кода с помощью искуственного интелекта

Сообщение mycos »

Phazz писал(а): 23 янв 2026, 12:18 Сильно зависит что за ии
Другие, как я понял платные, а в гугле бесплатно. Если он раз в год нужен, зачем платить? Вот и тестирую этот. Пробовал ему описание программы подсунуть, но видимо я не совсем правильно ему алгоритмы скармливаю. Все время немного не то делает.
Аватара пользователя
prmres
Рядовой
Сообщения: 79
Зарегистрирован: 30 янв 2018, 20:19
Откуда: Курская обл.
Имя: Prmres
Благодарил (а): 32 раза
Поблагодарили: 26 раз

Re: Оптимизация кода с помощью искуственного интелекта

Сообщение prmres »

mycos писал(а): 23 янв 2026, 11:38я. к сожалению, далек от программирования. Поэтому
поэтому и велик восторг от оптимизации кода ИИ
Аватара пользователя
mycos
Рядовой
Сообщения: 27
Зарегистрирован: 22 ноя 2025, 20:25
Имя: Александр
Благодарил (а): 3 раза
Поблагодарили: 11 раз

Re: Оптимизация кода с помощью искуственного интелекта

Сообщение mycos »

prmres писал(а): 23 янв 2026, 17:56
mycos писал(а): 23 янв 2026, 11:38я. к сожалению, далек от программирования. Поэтому
поэтому и велик восторг от оптимизации кода ИИ
Так большого восторга нет. Просто сработало. А конкретики в вашей реплике, увы - 0
cfitymrf
Сержант
Сообщения: 111
Зарегистрирован: 06 сен 2021, 07:45
Имя: иван
Благодарил (а): 9 раз
Поблагодарили: 5 раз

Re: Оптимизация кода с помощью искуственного интелекта

Сообщение cfitymrf »

большие проекты (ну как большие) делает . главное делать за один раз или день и постоянно сохранять что то сделанное , если выйти из гугла или продолжить на следующий день то вероятность 90% что будут проблемы , они исправимы но это время , если ему подсовывать не законченный проект для продолжения хотелок сделанный к примеру вчера или после закрытия гугла то он ломает алгоритм работы кода и много чего изменяет , спрашивая зачем ты это делаешь он начинает извиняться , говорит думал так будет лучше и тд. и тп.
Ответить

Вернуться в «Проекты с разными контроллерами»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость