Что общего между Telegram-ботами, турникетами и светофорами: конечные автоматы на практике
Представьте обычное утро в метро. Вы подходите к турникету, прикладываете карту, и... турникет решает, пропустить вас или нет. В этот момент происходит маленькое чудо автоматизации – турникет действует как конечный автомат, простая но эффективная система принятия решений.
В этой статье я хочу вам рассказать и показать на простом примере что это такое и как их можно применять в своих проектах. Больше интересных заметок о разработке и программировании читайте в моем Telegram-блоге «Код без тайн».
Конечные автоматы в повседневной жизни
Конечный автомат – это система, которая может находиться в одном из нескольких состояний и переходить между ними по определённым правилам. Звучит сложно? Давайте разберем на примере того же турникета.
У него есть два состояния: проход либо закрыт, либо открыт.
Каждое состояние четко определено на схеме автомата, и переходы между ними происходят по конкретным правилам – приложили карту, проверили баланс, открыли проход или показали ошибку. В случае турникета возможно всего два события — можно либо попытаться пройти через него (даже в случае, если он закрыт), а можно сначала оплатить. На схеме эти правила можно представить вот так:
От турникетов к чат-ботам
Теперь давайте представим, что вместо турникета у нас Telegram-бот для записи к парикмахеру. Принцип тот же – бот находится в определенном состоянии и ждет действий пользователя. Например:
В этом простом примере бот – это обычный конечный автомат с четырьмя состояниями. Каждое состояние определяет, как бот будет реагировать на сообщения пользователя.
Почему нельзя просто написать код?
Конечные автоматы – это не просто красивая теория. Они помогают:
- Структурировать логику бота
- Упростить отладку и тестирование
- Легко добавлять новые функции
- Контролировать пользовательский опыт
Благодаря такому подходу можно упростить реализацию сложной логики в боте, особенно когда нужно учитывать много переплетающихся между собой состояний и условий. Без использования конечного автомата в этом случае у вас получится спагетти из if-then-else:
Как использовать конечные автоматы для разработки
Существует 3 варианта, как можно использовать такой подход при разработке своего бота:
1. Написать собственную маленькую реализацию конечного автомата
Этот подход рекомендуется, если вы сами занимаетесь программированием и хотите получить новый инструмент в свой арсенал. Много времени потратить не придется, потому что реализовать конечный автомат на самом деле легко — основное время вы потратите на изучение теории.
Зато в результате вы поймете как применять на практике мощную абстракцию, которая используется повсеместно: от интерфейсов на веб-сайтах, до микроволновки на вашей кухне.
2. Воспользоваться готовыми библиотеками
Такой вариант подходит, если вам нужно создавать и поддерживать много сценариев, реализованных на базе конечных автоматов.
Некоторые библиотеки, например, xstate, имеют графический редактор и инструменты для создания и моделирования автоматов отдельно от вашего кода. Это может быть удобно, если у вас несколько человек в команде и не все занимаются программированием.
Например, продакт-менеджер или другой член вашей команды может скорректировать сценарий, а вам как разработчику останется всего лишь обновить код.
3. Использовать no-code конструкторы
Все no-code конструкторы для создания ботов используют интерфейс, похожий на тот, который используется для создания конечных автоматов. На самом деле, если вы ранее создавали ботов в подобных конструкторах, то материал в данной статье может показаться вам знакомым.
Дело в том, что принципы, которые используются в подобных конструкторах идентичные: вы создаете состояния (обычно это действия вроде отправки ответов или создания записи в таблице). Далее указываются триггеры для срабатывания состояний — какое состояние идет за каким и при каких условиях это событие срабатывает.
Подводя итог
Какой бы способ вы ни выбрали, на мой взгляд важно понимать то, как устроена изнутри система, которую вы разрабатываете. Даже если вы не являетесь программистом, важно понимать фундаментальные принципы, которые лежат в системах, которыми вы пользуетесь. Это дает большую свободу при взаимодействии с такими системами, а также повышает ваш уровень как специалиста.
Если вам понравилась эта статья, буду благодарен, если поставите лайк 🔥 и напишите комментарий — так я пойму, что на подобные темы стоит писать больше.
Также я веду свой Telegram-блог «Код без тайн», в котором пишу о веб-разработке, информатике и других технологиях:
Добрый день, я Евгений Николаевич Рычков, и я хочу поделиться результатами использования Giga Chat. Затрагивать эту тему я начал чуть ли не в пионерской стадии развития, когда хайпа еще не было. Вот, например, с Воробьевым Александром и без него выступал в Точке Кипения на тему кодинга с использованием GPT
Последние два года я почти не пишу код. Наверное, только 10% кода в моих личных и коммерческих проектах написано мной, все остальное генерируют нейронки. За это время у меня выработался определенный подход к созданию проектов и появились инструменты, которые я для этого использую. Этим я и хочу поделиться с вами под катом.
Вялая волатильность в акциях продолжается, а дивидендный сезон ещё не начался. Геополитические новости и появляющиеся отчёты вносят свои корректировки, а я внёс очередную сумму на брокерский счёт и продолжаю покупать в свой портфель. Посмотрел, как идут успехи с приведением его к целевым значениям. Размер портфеля составляет 2,430 млн рублей.
Разбираюсь, как грамотно начать автоматизацию общения и продаж с помощью чат-ботов. Дополняйте меня в комментариях своими историями — какой способ выбрали для себя. Соберем правдивые кейсы и поможем другим.
На форуме Hacker News, естественно, началась *бурная дискуссия* на эту тему, где истинные программисты-эстеты обсуждали насколько это плохо для их ремесла и что вместо кода джунов придется чинить нагенерированный мусор вместо кода. Но так ли всё однозначно? Действительно ли вайб-кодинг — это проблема? Или он просто не для всех? Давай разберёмся. 👇
Почему я решил пойти против правил?
Прошлая моя статья про инструмент для "качков" произвела положительный отклик у читателей, что вдохновило меня на новую публикацию. Сегодня я расскажу о своём опыте создания сложного проекта телеграм-бота, не обладая специальными навыками программирования. Эта статья адресована именно новичкам, которые пока не знакомы с тонкостями кода, но мечтают…
В эпоху цифровых технологий автоматизация общения с нейросетями становится все более востребованной. В этой статье я поделюсь как создать Telegram бота для общения с нейросетью. Вы узнаете о бесплатном и платном способах интеграции ИИ решений в Telegram, подробные инструкции по каждому этапу и получите доступ к исходному коду. Данное руководство по…
Пока все вокруг говорят про ChatGPT и нейросети, автор Telegram-канала «Ковчег» Артур Хорошев пошёл дальше — он рассказывает подписчикам, как полностью автоматизировать рабочие процессы с помощью сервиса make.
Мы разрабатываем IT-решения, в том числе создаем Telegram-ботов для бизнеса. Обычно для их создания нужны навыки программирования. Но что делать, если кодить вы не умеете, а бот всё равно нужен? Разберёмся, как создать его самостоятельно.
Если ты думаешь, что для написания кода обязательно нужно разбираться в синтаксисе Python, JavaScript или C++, то пора пересмотреть этот подход. Сейчас AI-инструменты позволяют писать рабочие скрипты, автоматизировать задачи и даже разрабатывать простые приложения без единой строки вручную.
Приветствую! В этой статье мы подробно рассмотрим, где и как применяются чат-боты, их преимущества и роль в цифровой трансформации.
Когда-нибудь начну изучать python