惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hacker News: Ask HN
Hacker News: Ask HN
WordPress大学
WordPress大学
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
A
About on SuperTechFans
Stack Overflow Blog
Stack Overflow Blog
雷峰网
雷峰网
Microsoft Azure Blog
Microsoft Azure Blog
腾讯CDC
爱范儿
爱范儿
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 【当耐特】
V
Visual Studio Blog
有赞技术团队
有赞技术团队
U
Unit 42
D
Docker
小众软件
小众软件
F
Full Disclosure
I
Intezer
Scott Helme
Scott Helme
P
Privacy International News Feed
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
Google DeepMind News
Google DeepMind News
B
Blog
Martin Fowler
Martin Fowler
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Vercel News
Vercel News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Spread Privacy
Spread Privacy
宝玉的分享
宝玉的分享
S
Security Affairs
www.infosecurity-magazine.com
www.infosecurity-magazine.com
月光博客
月光博客
C
Cisco Blogs
云风的 BLOG
云风的 BLOG
Schneier on Security
Schneier on Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Threat Research - Cisco Blogs
量子位
Hacker News - Newest:
Hacker News - Newest: "LLM"
H
Heimdal Security Blog
N
Netflix TechBlog - Medium
H
Hacker News: Front Page
P
Proofpoint News Feed
G
GRAHAM CLULEY
V
Vulnerabilities – Threatpost
S
Schneier on Security

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Бониана: приложение к браслету
lws0954 · 2026-05-07 · via Все публикации подряд на Хабре

Бониана: приложение к браслету

Уровень сложностиСредний

Время на прочтение6 мин

Охват и читатели378

На сайте Engee в разделе «Библиотека конечных автоматов» в наглядной форме представлены КА [1]. Полюбопытствуйте. Вполне достаточно для первого знакомства. Там есть раздел «Материалы Engee по Конечным автоматам», в который помещены проекты, демонстрирующие качества КА на практике. Сейчас это три проекта - «Регулирование температуры воздуха»,  «Электростеклоподъемник для автомобиля» и «Управление перекрестком». Подобно проекту браслета из первой части статьи [2] на их примере покажем возможности автоматного программирования (АП) в среде ВКПа в сравнении с автоматами Engee или, что будет точнее, в сравнении с моделью Харелла, реализованной здесь.

Выберем для этого проект с светофорами. На сайте имеется следующее его описание:

«Цель этого примера - разработать модель управления перекрестком, состоящим из двух автомобильных и одного пешеходного потоков, которые управляются двумя трёхсекционными и одним двухсекционным светофорами соответственно. Алгоритм переключения секций будет определяться согласно временной диаграмме. Управляющий алгоритм будет реализован при помощи нескольких блоков Chart, а снятие входных и формирование выходных сигналов - блоками C-Function

На рис. 1 показана структурная схема проекта в Engee. На ней несколько блоков, где основные - блок Commn_Counter, который моделирует временные такты диаграммы, блок Traffic_Lights, реализующий управление, заметим,  сразу двумя светофорами и блок Crosswalk для светофора потока пешеходов. Временная диаграмма работы светофоров показана на рис. 2.

Рис. 1. Струтурная схема проекта в Engee

Рис. 1. Струтурная схема проекта в Engee

Рис. 2. Временная диаграмма работы светофоров

Рис. 2. Временная диаграмма работы светофоров

Здесь же на сайте имеется следующее пояснение к диаграмме:

«Три потока - два автомобильных и один пешеходный управляются асинхронно. При этом разрешение на движение (зелёный свет) одновременно формируется только для одного потока и длится 10 секунд. После окончания разрешения на движение автомобильного потока включается мигание зелёной секцией. Переход светофора из разрешающего сигнала в запрещающий (красный свет) сопровождается включением жёлтой секции на 5 секунд, обратный переход - одновременным включением красной и жёлтой секций на 5 секунд.»

В целом все понятно  и нет ни чего сложного. Но блок управления сразу двумя светофорами вызывает вопросы. Не разумнее и не гибче ли будет реализовать управление светофорами по отдельности? А затем создать столько блоков, сколько светофоров.

В ВКПа, не прибегая даже к С++,  используя лишь визуальные возможности среды, буквально за час-полтора можно собрать весь проект вместе с диаграммами. В процессе был создан блок, реализующий управление отдельным светофором, который затем был размножен до двух. При этом один из блоков начинал работу в исходном состоянии, отражающем красный  свет светофора, другой  -  зеленый. Их дополнил блок для пешеходов.

Автоматы в данном случае весьма просты, если не сказать, элементарны. Каждый из них по отдельности реализует свою временную диаграмму, не обращая внимания на работу своих соседей. Их действия сводятся к включению нужного цвета через заданные промежутки времени (задержки) в соответствии с временной диаграммой. Что может быть проще?

Рис. 3. Реализация проекта в ВКПа

Рис. 3. Реализация проекта в ВКПа

На рис. 3 видна временная диаграмму трех циклов работы светофоров. Обратите внимание, что на диаграмму добавлена работа общего счетчика (см. блок Common-Counter на рис. 1) и текущее значение кода (строка «код» на рис. 2).

Диаграмма счетчика сразу вызывает вопросы. Он явно отстает от светофоров, хотя в исходном проекте значение счетчика должно синхронизироваться с тактами светофоров. Заметим, что сам счетчик и шифратор сигналов в нашем проекте не используются. Они созданы лишь из чистого любопытства и желания соответствовать исходной структурной схеме и диаграммам сигналов проекта на сайте.

Уже на первом кадре (рис. 3) видно небольшое отставание счетчика, которое к второму-третьему кадру (рис. 4) скрыть сложно, а дальше принимает совсем уж неприличный вид. В чем причина столь печального факта, если к моделям блоков - автоматам нет замечаний?

Рис. 4. Третий кадр теста

Рис. 4. Третий кадр теста

Чтобы отсечь сомнения, связанные с особенностями визуального проектирования, модели были реализованы на С++. Это сразу в два раза увеличивает скорость их работы. Но картина не изменилась. Пришлось задействовать личные резервы. Стало ясно, что между моментами создания задержек есть переходы, которые, как ни крути, влияют на общее время работы счетчика. Это, так сказать, «модельные издержки», которые и сдвигают график счетчика вправо.

Но это было лишь предположение, для подтверждения которого были предприняты следующие действия. Так, было минимизировано число  переходов  и изменена сама модель счетчика, которая была приведена к виду на рис. 5.. Здесь левая петля, если параллельная задержка не активна, создает параллельную задержку, равную по времени циклу работы светофоров. Одновременно обнуляется счетчик и создается последовательная задержка, равная 1 сек. Дуга справа, активна, пока активна параллельная задержка, и каждую секунду наращивает значение счетчика.

Рис. 5. Модель счетчика.

Рис. 5. Модель счетчика.

Далее сам счетчик был перенесен в автоматное пространство с минимальным значением дискретного такта. Это минимизирует «модельные накладные расходы», если таковые вдруг окажутся (а они всегда есть на уровне того же ядра). При этом, если дискретное время пространства моделей блоков 10 мсек, то дискретное время пространства счетчика (в асинхронном режиме работы пространства)  стало не более 0.4 мсек.  

Рис. 6. Шестнадцатый кадр теста

Рис. 6. Шестнадцатый кадр теста

В результате лишь примерно с 15-го кадра (напомним, ранее это бы уже 1-й кадр) стало заметно отставание графика счетчика по отношению к переднему фронту красного сигнала первого светофора (см. рис. 5). Но только к 50-му кадру отставание стало достаточно очевидным, хотя и заметно меньше, чем на рис. 4. Таким образом, версия с влиянием «лишних» переходов нашла свое подтверждение.

Рис. 7. 50-й кадр теста

Рис. 7. 50-й кадр теста

Почему диаграмме, а соответственно и работе, счетчика мы уделили столь большое внимание?  Дело в том, что использование синхронной автоматной среды  во многом может упростить решение, но не исключает так называемых гонок сигналов/данных. Именно они весьма наглядно проявились в данном проекте. А потому подобный эффект нужно обязательно иметь в виду.

Отметим, что если бы мы создали решение подобное проекту на сайте, т.е. с явной синхронизацией светофоров счетчиком, то с подобной проблемой мы бы не столкнулись. Но в противовес это потребовало бы наличие синхронизатора - блока счетчика и усложнило бы структурную схему решения за счет введения связей светофоров со счетчиком.

В синхронной среде всего это не нужно. Более того, если вы заметили, наше решение имеет и большую точность работы самих светофоров, т.к. нет зависимости от задержек, вносимых блоком счетчика.

Выводы

Чего мы все таки добились и/или доказали, реализовав помимо браслета еще и проект светофоров? Этот, казалось бы, более простой проект выявляет процессы, которые не видны на проекте предыдущем. Это процессы независимого, но синхронного функционирования моделей. В среде, которая синхронна, ее свойства можно использовать без использования явных механизмов синхронизации. Например, типа барьеров в многопоточности. Без них необходимо дополнительное внимание к синхронной работе процессов, если таковое необходимо.

Светофоры демонстрируют качества синхронной параллельной среды.  Те же потоки по своей природе асинхронны, а чтобы сделать их другими - синхронными необходимо приложить определенные усилия. Синхронная среда упрощает решение без ущерба надежности работы процессов, а, скорее, даже повышает ее. Ведь, только в синхронной среде работает доказательная математика алгебры автоматов, аналога которой нет в среде асинхронных процессов.

Но отсутствие явных механизмов синхронизации процессов требует более строго учета скорости их работы. Наглядный аналог - парадная коробка. Солдаты в ней не имеют явных связей, но любое нарушение ритма строевого шага даже одним солдатом приведет к ее разрушению. Собственно такому принципу подчиняются объекты в нашем проекте, кода к финишу или любой промежуточной его стадии светофоры и счетчик должны прибыть одновременно.

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

Обладают ли описанными качествами автоматы в Engeу, а по большому счету модель Харелла, сказать сложно. Скорее нет, чем да. Но в наши планы и не входило давать ответы на подобные вопросы. Доказательно сделать бы это мог бы проект в Engee, полностью аналогичный нашему проекту. Может, есть желающие совершить своеобразное «алаверды» в рамках той же Engee?

Литература

1.       Библиотека «Конечные автоматы».  https://start.engee.com/state_machines

2.       Браслет для Бони. https://habr.com/ru/articles/1030712/