Микросервисы(async single-threaded) в эмбеддед. OpenBMC и рефакторинг «кошмара на С++» с помощью ИИ
rukhi7 36 минут назад Объяснить с Микросервисы(async single-threaded) в эмбеддед. OpenBMC и рефакторинг «кошмара на С++» с помощью ИИ Сложный 10 мин 422 Программирование * C++ * Искусственный интеллект Микросервисы *...
Will Anthropic have the best AI model at the end of October 2026?
В сфере искусственного интеллекта произошло заметное событие. rukhi7 36 минут назад Объяснить с Микросервисы(async single-threaded) в эмбеддед. OpenBMC и рефакторинг «кошмара на С++» с помощью ИИ Сложный 10 мин 422 Программирование * C++ * Искусственный интеллект Микросервисы * Программирование микроконтроллеров * Мнение Вот они баги! Я всегда знал, что разработка для встраиваемых систем (embedded) является не тривиальным делом, но даже не представлял, насколько С++ код в реальных enterprise-проектах может быть...
скажем так, перегруженным. Тем интереснее попытаться исправить хотя бы кусочек такого кода, тем более что сегодня у нас есть прилежный цифровой помощник. Справится ли искусственный интеллект с рефакторингом кода, от которого у обычного разработчика дёргается глаз?
Технические детали
И в чём нейросети пока ещё безоговорочно уступают человеку? Заглядывайте под кат, там много боли, костылей, D-Bus и немного С++ и однопоточной асинхронности (async single-threaded). Это микросервисы, детка: контекст проектаПрежде чем препарировать сам код, давайте разберёмся, где он живёт.
Наш подопытный — это один из компонентов огромного open-source проекта OpenBMC (открытый код для компиляции прошивок для модулей управления серверами, десктопными системами — BMC на базе Линукс-а). Если говорить точнее, мы попробуем разобраться с куском кода (С++ функцией) из одного из подпроектов нижнего уровня в репозитории dbus-sensors, возьмем для примера сервис HwmonTempSensor: Весь этот локальный проект компилируется в один исполняемый файл — systemd-сервис, задача которого — собирать данные с аппаратных датчиков (температуры, давления, влажности, другие собирают значения тока, напряжения, другой температуры, ... ) и публиковать их на системной шине D-Bus.
Оттуда эти данные забирают другие сервисы (например, для отображения в Web-интерфейсе). Звучит красиво и современно? Да, это классическая микросервисная архитектура во встраиваемых системах:Сервис общается с внешним миром через IPC-протоколы (D-Bus).
Отраслевые последствия
Он работает абсолютно независимо. Архитектура изолирована и изолирует логику работы с железом. Всё выглядит убедительно, пока мы не спускаемся на уровень исходного кода.
По факту вся логика нашего микросервиса сосредоточена вокруг одной-единственной функции. Сделать ее читаемой — значит сделать управляемым весь микросервис. Знакомьтесь: функция createSensors на 280 строк Мы попытаемся провести рефакторинг функции createSensors, оригинальный код которой можно увидеть по ссылке: Для начала я попросил ИИ-агента объяснить мне логику этой функции.
Ассистент прилежно насчитал аж 12 изолированных задач, которые она выполняет! Если обобщить, то createSensors — это такой «всемогущий комбайн», который:Получает конфигурацию датчиков от другого микросервиса (entity-manager) асинхронно(! ), но в единственном потоке.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.




