Использование LLM для написания кода
- Сообщения: 370
- Зарегистрирован: Ср мар 09, 2016 08:07:41
Любым инструментом надо уметь пользоваться, и использовать по назначению. Мне нужна была функция для вывода значений переменных на ST7735. Qwen мне выдал приемлемый и рабочий вариант с первого раза. Я должен это игнорировать? Почему я должен вручную высчитывать пиксели и заниматься подобной мурой?
- Реклама
- Сообщения: 729
- Зарегистрирован: Пн фев 16, 2026 17:30:02
Ну, коль своей головы нет, то конечно не возбраняется пользоваться чужим умом, даже искусственным
По-моему, это одна из самый простых задач - вывод текста на мелкий дисплей. Раньше мы такие задачи решали самостоятельно. Да и в инете есть куча библиотек к этому дисплею, нужно только взять их.
Вручную там не нужно высчитывать пиксели. Достаточно написать несложную функцию получения пикселей из массива шрифта и помещения их в дисплей в заданные координаты. Это решается элементарно, а заодним и развивает собственный мозг. Ну, это тем, у кого он есть. У кого нет - то и развивать нечего.
К сожалению нынешнее поколение зумеров без сторонней помощи не способно решить даже самое простое. Скоро дойдет до того, что сами себе подтереть жопу в сортире не смогут без совета ИИ-ботов.
Сейчас уже вполне официально признали, что поколение зумеров впервые за последние несколько веков оказалось глупее и беспомощнее предыдущего поколения. Такие вот дела. Мультик Wall-e смотрели? Не слишком то он фантастичен. Нужно только подождать, пока человечество скатится в эту яму.
PS. Я вот такую задачу могу решить даже в уме:
По-моему, это одна из самый простых задач - вывод текста на мелкий дисплей. Раньше мы такие задачи решали самостоятельно. Да и в инете есть куча библиотек к этому дисплею, нужно только взять их.
Вручную там не нужно высчитывать пиксели. Достаточно написать несложную функцию получения пикселей из массива шрифта и помещения их в дисплей в заданные координаты. Это решается элементарно, а заодним и развивает собственный мозг. Ну, это тем, у кого он есть. У кого нет - то и развивать нечего.
К сожалению нынешнее поколение зумеров без сторонней помощи не способно решить даже самое простое. Скоро дойдет до того, что сами себе подтереть жопу в сортире не смогут без совета ИИ-ботов.
Сейчас уже вполне официально признали, что поколение зумеров впервые за последние несколько веков оказалось глупее и беспомощнее предыдущего поколения. Такие вот дела. Мультик Wall-e смотрели? Не слишком то он фантастичен. Нужно только подождать, пока человечество скатится в эту яму.
PS. Я вот такую задачу могу решить даже в уме:
Код: Выделить всё
CoordXY Print(const char* str, uint8_t len, const FontInfo& font, CoordXY coord, uint16_t color)
{
while(len-- && str != '\0' && *str != '\n')
{
coord = Print(*str++, font, coord, color);
}
return coord;
}
CoordXY Print(const char ch, const FontInfo& font, const CoordXY& start, uint16_t color)
{
GlyphInfo glyph = font.GetGlyphInfo(ch);
CoordXY size = {glyph.width, font.height};
SetDisplayWin(start, start + size - CoordXY{1, 1});
BitMask mask{size.x, size.y, font.bitmap + glyph.offset};
for(uint8_t y = 0; y < size.y; y++)
{
for(uint8_t x = 0; x < size.x; x++)
{
if(mask.GetPix({x, y}))
SetDisplayPix({x + start.x, y + start.y}, color);
}
}
return {start.x + size.x, start.y};
}
Код: Выделить всё
Print("Hello World!", MAX_LEN, arial_14px, {10, 20}, COLOR_RED);
len = sprintf(text, "T = %3d", value);
Print(text, len, arial_14px, textCoord, COLOR_BLUE);
- Сообщения: 466
- Зарегистрирован: Чт май 07, 2026 00:30:38
Любую задачу можно решить в уме, вопрос лишь в верности результата
(я вышеописанную не решу, так как не знаю работу sprintf - не использую её).
- Сообщения: 729
- Зарегистрирован: Пн фев 16, 2026 17:30:02
А что результат? Результат - РАБОТАЕТ! Нормально работает, как раз для дисплеев типа ILI9341 и тому подобных. Вы сомневаетесь в этом??
Если кто не может по коду проследить, вот объяснение от ИИ-бота: https://chat.deepseek.com/share/2sra8jh0t7pdomrpxl В конце он даже добавил: "Это классическая реализация вывода текста на графический дисплей с использованием битовых шрифтов." Во как! А вы говорите - не работает
sprintf - для примера. Хотя нормально она тоже работает, че зазря гнать? Это просто форматированный вывод в текстовую строку. Можно заменить любой другой реализацией, не суть важно. Главное - получить массив типа char в ANSI-кодировке
Если кто не может по коду проследить, вот объяснение от ИИ-бота: https://chat.deepseek.com/share/2sra8jh0t7pdomrpxl В конце он даже добавил: "Это классическая реализация вывода текста на графический дисплей с использованием битовых шрифтов." Во как! А вы говорите - не работает
sprintf - для примера. Хотя нормально она тоже работает, че зазря гнать? Это просто форматированный вывод в текстовую строку. Можно заменить любой другой реализацией, не суть важно. Главное - получить массив типа char в ANSI-кодировке
- Сообщения: 601
- Зарегистрирован: Вт окт 01, 2024 15:22:33
Тут ошибка, ИИ ее сразу видит )Rapra писал(а): Вс авг 30, 2026 11:57:03А что результат? Результат - РАБОТАЕТ! Нормально работает, как раз для дисплеев типа ILI9341 и тому подобных.
Код: Выделить всё
while(len-- && str != '\0' && *str != '\n')- Реклама
- Сообщения: 729
- Зарегистрирован: Пн фев 16, 2026 17:30:02
Точно, очепятка
Писал то прямо здесь, а не в IDE.
Хотя, работать оно будет по ограничению длины в len. Просто не будет видеть конец строки по нуль-термитатору.
Правильно будет *str != '\0'
Хотя, работать оно будет по ограничению длины в len. Просто не будет видеть конец строки по нуль-термитатору.
Правильно будет *str != '\0'
- Сообщения: 370
- Зарегистрирован: Ср мар 09, 2016 08:07:41
примитивно. без DMA, без буферов, нет работы с CS, DC, про фоновый цвет забыли видимо. вся низкоуровневая механика спрятана в библиотечные функции...PS. Я вот такую задачу могу решить даже в уме
конечно, но только сделать надо за 15 секунд.По-моему, это одна из самый простых задач - вывод текста на мелкий дисплей. Раньше мы такие задачи решали самостоятельно. Да и в инете есть куча библиотек к этому дисплею, нужно только взять их
Меня неправильно поняли. Драйвер у меня есть, надо было просто составить макет и реализовать вывод показаний датчиков на дисплей. Четыре шрифта 16х8 на выбор, с кириллицей.
вот что мне выдал Qwen
Код: Выделить всё
# //=== TFT-дашборд ===//
def ljust(s, n):
return (s + ' ' * n)[:n] # дополняет И обрезает до n
def rjust(s, n):
return (' ' * n + s)[-n:]
def fmt_temp(v):
if v is None:
return "--.-"
return f"{float(v):+.1f}"
def fmt_hhmm(t):
if not isinstance(t, tuple): # пока данных не было, там float-заглушка
return "--:--"
return f"{t[3]:02d}:{t[4]:02d}"
def temp_color(v):
return tft.RED if v is not None and float(v) >= 0 else tft.BLUE
def tft_update():
gc.collect()
lt = time.localtime(time.time() + TZ_OFFSET * 3600)
# y=0 — текущее время
font.print_str(0, 0,
ljust(f"{lt[3]:02d}:{lt[4]:02d}:{lt[5]:02d} {lt[2]:02d}.{lt[1]:02d}", 16),
tft.WHITE, tft.BLACK)
if current_press is not None:
# y=16/32 — BMP280
press = f"{current_press:.0f}" if current_press is not None else "---"
bmp_time = fmt_hhmm(time.localtime(last_bmp_update + TZ_OFFSET * 3600)) if last_bmp_update else "--:--"
font.print_str(0, 16,
ljust(f"BMP280 {rjust(press, 3)} {bmp_time}", 16),
tft.GREEN, tft.BLACK)
big_font.print_str(0, 32, ljust(fmt_temp(current_temp), 8), temp_color(current_temp), tft.BLACK)
if remote_temp is not None:
# y=64/80 — DS18b20
font.print_str(0, 64, ljust(f"DS18b20 {fmt_hhmm(remote_time)}", 16), tft.CYAN, tft.BLACK)
big_font.print_str(0, 80, ljust(fmt_temp(remote_temp), 8), temp_color(remote_temp), tft.BLACK)
if remote_sht30_temp is not None:
# y=112/128 — SHT30
hum = f"{float(remote_sht30_humidity):.0f}%" if remote_sht30_humidity is not None else "--%"
font.print_str(0, 112,
ljust(f"SHT30 {rjust(hum, 3)} {fmt_hhmm(remote_sht30_time)}", 16),
tft.YELLOW, tft.BLACK)
big_font.print_str(0, 128, ljust(fmt_temp(remote_sht30_temp), 8), temp_color(remote_sht30_temp), tft.BLACK)
- Сообщения: 729
- Зарегистрирован: Пн фев 16, 2026 17:30:02
Ха. А вы не заметили, что в коде нет аппаратного уровня? Там есть только функции SetDisplayWin() и SetDisplayPix(), а их реализация может быть любой, какой необходимо - в том числе и с DMA, блэкджеком и шлюхами
Для этого у опытного программиста уже есть набор давно написанного и оттестированного инструментария. Просто подключаем нужную библиотеку и пользуемся. А вам нужно еще затратить энное число минут на тестирование того, что нагенерил ИИ
А в наше время это называлось "ГОВНОКОД" и за него били ссаными тряпками
Последний раз редактировалось Rapra Вс авг 30, 2026 12:43:13, всего редактировалось 1 раз.
Я не понимаю, почему появление ИИ некоторые расценивают как какую-то катастрофу. Например, ИИ я активно пользуюсь с начала этого года. И скажу: Я очень доволен такой возможностью, я бы так сказал с появлением ИИ, программирование микроконтроллеров заиграло новыми красками. Правда этим инструментом нужно научиться правильно пользоваться. Не думайте, что ИИ сделает за вас всё. Всё равно программировать вам придётся самим. Но на ИИ можно переложить всякие мелкие задачи. Например настроить SPI, настроить таймеры и так далее. Так же не понимаю тезиса, что с появлением ИИ все отупеют. Это примерно то же самое, что с появлением автомобилей все разучатся ходить. Отупеть вам не получится. Иногда искусственный интеллект косячит, и чтобы понять где и что он сделал не так и почему не работает, нужно быть опытным программистом.
Тезис о том, что все сейчас в край обленятся тоже не поддерживаю. Вы же лентяи сейчас из интернета всё качаете. Куски кода, библиотеки, даже иногда целые проекты. Я начинал программировать в конце 80-х. Не было никаких интернетов. И все знания и приёмы программирования я брал из книжек. И теперь мы дожили до момента, когда кусок кода можно не только с интернета скачать. А его можно прямо в интернете заказать.
Вот например, сейчас я стал делать вещи к которым раньше даже не знал как подступиться. Например делать ассемблерные вставки для STM32. Там всё очень непросто, один неправильный аргумент и ничего работать не будет. При чём даже компилятор ничего не скажет. И вообще благодаря искусственному интеллекту я плотно пересел на STM32. Например у STM32F401... чтобы просто настроить одну ножку нужно 6 строк кода. При чём все буковки должны быть написаны правильно. И тут ИИ здорово помогает.
Так что давайте будем тихо радоваться, что научный прогресс предоставил нам такую возможность облегчить себе жизнь. Ну а те, кто искусственным интеллектом ещё не пользуются, давайте подтягивайтесь.
Тезис о том, что все сейчас в край обленятся тоже не поддерживаю. Вы же лентяи сейчас из интернета всё качаете. Куски кода, библиотеки, даже иногда целые проекты. Я начинал программировать в конце 80-х. Не было никаких интернетов. И все знания и приёмы программирования я брал из книжек. И теперь мы дожили до момента, когда кусок кода можно не только с интернета скачать. А его можно прямо в интернете заказать.
Вот например, сейчас я стал делать вещи к которым раньше даже не знал как подступиться. Например делать ассемблерные вставки для STM32. Там всё очень непросто, один неправильный аргумент и ничего работать не будет. При чём даже компилятор ничего не скажет. И вообще благодаря искусственному интеллекту я плотно пересел на STM32. Например у STM32F401... чтобы просто настроить одну ножку нужно 6 строк кода. При чём все буковки должны быть написаны правильно. И тут ИИ здорово помогает.
Так что давайте будем тихо радоваться, что научный прогресс предоставил нам такую возможность облегчить себе жизнь. Ну а те, кто искусственным интеллектом ещё не пользуются, давайте подтягивайтесь.
- Сообщения: 466
- Зарегистрирован: Чт май 07, 2026 00:30:38
Я не говорил, что она работает ненормально. Однажды применил, обнаружил, что слишком ресурсоёмкая (я использую довольно-таки скромные мк) и больше не применял. Так что, судить о её функциональности в принципе не могу.Rapra писал(а): Вс авг 30, 2026 11:57:03 sprintf - для примера. Хотя нормально она тоже работает, че зазря гнать?
- Сообщения: 729
- Зарегистрирован: Пн фев 16, 2026 17:30:02
Я выше написал - поколение зумеров за последние несколько веков официально признано более глупым и беспомощным, чем предыдущее поколение.Andry_67 писал(а): Вс авг 30, 2026 12:42:21 Я не понимаю, почему появление ИИ некоторые расценивают как какую-то катастрофу.
Вы скоро будете спрашивать у ИИ, как жопу в сотрире подтереть
- Сообщения: 729
- Зарегистрирован: Пн фев 16, 2026 17:30:02
Так если начнете писать свою реализацию с таким же функционалом, то она тоже станет такой же ресурсоемкой.Zapolyarny писал(а): Вс авг 30, 2026 12:44:27 Я не говорил, что она работает ненормально. Однажды применил, обнаружил, что слишком ресурсоёмкая (я использую довольно-таки скромные мк) и больше не применял.
Кстати, есть легкие реализации tiny printf.
- Сообщения: 466
- Зарегистрирован: Чт май 07, 2026 00:30:38
Вероятно, именно последняя фраза ключевая. Мы же всё-таки уже старое поколение. Имея той или иной степени опыт и знания, получили новый отличный инструмент, который действительно расширил границы наших возможностей.Andry_67 писал(а): Вс авг 30, 2026 12:42:21 Я не понимаю, почему появление ИИ некоторые расценивают как какую-то катастрофу
.....
научный прогресс предоставил нам такую возможность облегчить себе жизнь.
Но что это несёт новому поколению?
Я уже видел собственными глазами (ещё 20 лет назад) как дети лет 15 тычут пальцами в корову и спрашивают что это и не верят, что это - молоко, творог, сыр, сметана, кефир, котлеты и прочие кожаные изделия.
Я не уверен, что новым поколениям обязательно это знать, вполне возможно, роботы всё сделают и не сломаются. А если сломаются?
Так что, отсыл к Wall-e выше наверняка верный, и ИИ - это палка о двух концах.
Конечно, я же получу её копию (в лучшем случае). Я просто избегаю её.Rapra писал(а): Вс авг 30, 2026 12:47:37 Так если начнете писать свою реализацию с таким же функционалом, то она тоже станет такой же ресурсоемкой.
Кстати, есть легкие реализации tiny printf.
(Напомнило:
- Что мешает?
- Геометрия!
- Просто игнорируйте её.
- Сообщения: 729
- Зарегистрирован: Пн фев 16, 2026 17:30:02
Опять же, если разучиться читать, то без ИИ и шагу не сделатьAndry_67 писал(а): Вс авг 30, 2026 12:42:21 Например у STM32F401... чтобы просто настроить одну ножку нужно 6 строк кода. При чём все буковки должны быть написаны правильно. И тут ИИ здорово помогает.
А настроить ножку у STM32F401 я могу и по памяти.
CMSIS:
Код: Выделить всё
MODIFY_REG(GPIOA->MODER, GPIO_MODER_MODER5_Msk, 0x1 << GPIO_MODER_MODER5_Pos);
MODIFY_REG(GPIOA->OSPEEDR, GPIO_OSPEEDER_OSPEEDR5_Msk, 0x2 << GPIO_OSPEEDER_OSPEEDR5_Pos);
Код: Выделить всё
GpioA::Configure<GpioA::Pin5::mask>::SetOutputPins<OutType::PP, Speed::HIGH>();
Последний раз редактировалось Rapra Вс авг 30, 2026 12:59:09, всего редактировалось 1 раз.
- Сообщения: 729
- Зарегистрирован: Пн фев 16, 2026 17:30:02
В наше время аргументов не требовалось 
Хотя аргументы здесь - y=16/32 - это и есть говнокод. Я ж говорю - зумеры просто не понимают даже почему это - говнокод
И еще: float(v):+.1f}
На каком, простите, микроконтроллере вы это запускаете?
Хотя аргументы здесь - y=16/32 - это и есть говнокод. Я ж говорю - зумеры просто не понимают даже почему это - говнокод
И еще: float(v):+.1f}
На каком, простите, микроконтроллере вы это запускаете?
- Сообщения: 601
- Зарегистрирован: Вт окт 01, 2024 15:22:33
И это простейший код, а если он будет посложнее:
Спойлер
Код: Выделить всё
template<typename T>
constexpr static const T* find(const T* str, const T* target, T until = '\0')
{
while (true)
{
for (;; str++)
{
if (!*str || *str == until) return nullptr;
if (*str == *target) break;
}
auto begin = str++;
auto pattern = target + 1;
while (true)
{
if (!*pattern) return begin;
if (!*str || *str != *pattern++) break;
str++;
}
str = begin + 1;
}
}Код: Выделить всё
if (!*str || *str == until || *str != *pattern++) break;Код: Выделить всё
find("abc\ndef", "c\nd", '\n')С зуммерами дело имел. То что они тупые не соглашусь. А вот то, что они ленивые это да! Чтобы программировать, нужно сидеть читать думать, пытаться разобраться. Им лень. А чтоб какую-нибудь игру настроить, или в каком-нибудь телеграме прокси прописать. Они резко становятся умными. Прямо чудеса какие-то.

это мощноА настроить ножку у STM32F401 я могу и по памяти.
- Сообщения: 370
- Зарегистрирован: Ср мар 09, 2016 08:07:41
лол, так и скажите, что ничего не понимаете в программировании.Хотя аргументы здесь - y=16/32 - это и есть говнокод. Я ж говорю - зумеры просто не понимают даже почему это - говнокод
И еще: float(v):+.1f}
- Сообщения: 466
- Зарегистрирован: Чт май 07, 2026 00:30:38
Рискну заметить, что это любители питонов ничего не понимают в программировании. Собственно, он для них и создавался.


