Страница 1 из 1
Оптимизация кода с помощью искуственного интелекта
Добавлено: 23 янв 2026, 11:38
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, работает одинаково, причем после ИИ стабильнее. Первый код иногда прибавляет лишний разряд.
Вот вам и "Иллюзия Интелекта".
Но я. к сожалению, далек от программирования. Поэтому хочется комментариев от знающих людей. Как будет с большими проектами?
Re: Оптимизация кода с помощью искуственного интелекта
Добавлено: 23 янв 2026, 12:18
Phazz
Сильно зависит что за ии и какой промпт. Но оптимизация готового обычно хорошо делает. Но боюсь без минимального знания кода это будет лотерея.
Re: Оптимизация кода с помощью искуственного интелекта
Добавлено: 23 янв 2026, 13:44
mycos
Phazz писал(а): 23 янв 2026, 12:18
Сильно зависит что за ии
Другие, как я понял платные, а в гугле бесплатно. Если он раз в год нужен, зачем платить? Вот и тестирую этот. Пробовал ему описание программы подсунуть, но видимо я не совсем правильно ему алгоритмы скармливаю. Все время немного не то делает.
Re: Оптимизация кода с помощью искуственного интелекта
Добавлено: 23 янв 2026, 17:56
prmres
mycos писал(а): 23 янв 2026, 11:38я. к сожалению, далек от программирования. Поэтому
поэтому и велик восторг от оптимизации кода ИИ
Re: Оптимизация кода с помощью искуственного интелекта
Добавлено: 23 янв 2026, 19:36
mycos
prmres писал(а): 23 янв 2026, 17:56
mycos писал(а): 23 янв 2026, 11:38я. к сожалению, далек от программирования. Поэтому
поэтому и велик восторг от оптимизации кода ИИ
Так большого восторга нет. Просто сработало. А конкретики в вашей реплике, увы - 0
Re: Оптимизация кода с помощью искуственного интелекта
Добавлено: 23 янв 2026, 21:18
cfitymrf
большие проекты (ну как большие) делает . главное делать за один раз или день и постоянно сохранять что то сделанное , если выйти из гугла или продолжить на следующий день то вероятность 90% что будут проблемы , они исправимы но это время , если ему подсовывать не законченный проект для продолжения хотелок сделанный к примеру вчера или после закрытия гугла то он ломает алгоритм работы кода и много чего изменяет , спрашивая зачем ты это делаешь он начинает извиняться , говорит думал так будет лучше и тд. и тп.