- 1
- 2
- 3
- 4
- 5
- 6
- 7
При решении каких задач наиболее органично использовать конечные автоматы?
Посоветуйте задачи, желательно прикладные и не из области разбора регулярных выражений
или лексического анализа. Какой-нибудь пример, на котором можно продемонстрировать
практическое применение конечных автоматов.
Где вам пригождались автоматы или знания о них в реале?
vistefan 15.11.2018 14:47 # −1
CHayT 15.11.2018 14:58 # −1
vistefan 15.11.2018 17:11 # −1
j123123 15.11.2018 15:06 # −1
vistefan 15.11.2018 17:11 # −1
guest8 15.11.2018 15:29 # −999
vistefan 15.11.2018 17:11 # −1
roman-kashitsyn 15.11.2018 16:57 # −1
Любая (компьютерная, карточная, настольная) игра — это конечный автомат, где действия игрока — это события, изменяющие (обычно многочисленные, но конечные) состояния игрового мира.
Любая база данных, не обладающая бесконечной памятью — это конечный автомат, где пользовательские запросы являются событиями. Аналогично можно рассматривать и веб-сервер.
Как это можно использовать? Для тестирования, к примеру, генерируя случайные наборы событий и проверяя, что поведение автомата удовлетворяет инвариантам.
Тут много технических деталей, но идея, кмк, очень красивая > Где вам пригождались автоматы или знания о них в реале?
В основном видел много сетевого кода, организованного в виде огромной таблицы функций, в которой одним индексом является текущее состояние, а в другом — тип полученного пакета.
vistefan 15.11.2018 17:15 # −1
Да, с играми можно придумать замечательные примеры.
guest8 15.11.2018 17:06 # −999
roman-kashitsyn 15.11.2018 17:09 # −1
guest8 15.11.2018 17:12 # −999
guest8 16.11.2018 01:38 # −999
inkanus_gray 16.11.2018 01:40 # −1
Defecate 16.11.2018 01:48 # 0
inkanus_gray 16.11.2018 01:48 # −1
guest8 16.11.2018 02:29 # −999
vistefan 15.11.2018 17:18 # −1
О, я вижу, что был превратно понят. Видимо, я неясно высказался. Я не имел ввиду, что разбор регулярных грамматик -- это не практический случай. Я только имел ввиду, что хочу узнать другие случаи практического применения, потому что с этими я уже знаком.
Her 15.11.2018 17:12 # −1
guest8 15.11.2018 17:13 # −999
vistefan 15.11.2018 17:19 # −1
guest8 15.11.2018 17:14 # −999
bormand 15.11.2018 18:17 # −1
guest8 15.11.2018 18:28 # −999
guest8 16.11.2018 01:36 # −999
vistefan 16.11.2018 02:41 # −1
bormand 16.11.2018 02:58 # 0
Но ведь кто-то должен всё это пилить?
guest8 16.11.2018 03:00 # −999
vistefan 16.11.2018 03:22 # −1
Да, но с вероятностью 100% такие люди найдутся. Об этом не нужно специально заботиться, это место пусто не будет, туда невидимая рука рынка сама поставит какого-то человека, скорее всего посредственного специалиста, или уставшего, или нуждающегося, или не амбициозного. Ну, как сказали выше, «среднестатистического». Это ОК. Но вот зачем специально размышлять о таком человеке, или уж тем более умышленно им быть, я не понимаю.
Специально думать надо про свободные программы, потому что они нуждаются в этом, там законы рынка не действуют, там анархия.
guest8 16.11.2018 03:25 # −999
guest8 16.11.2018 03:24 # −999
guest8 16.11.2018 03:26 # −999
guest8 16.11.2018 03:26 # −999
guest8 16.11.2018 03:23 # −999
guest8 16.11.2018 03:29 # −999
guest8 16.11.2018 03:32 # −999
guest8 16.11.2018 03:38 # −999
guest8 16.11.2018 03:39 # −999
guest8 16.11.2018 03:41 # −999
guest8 16.11.2018 03:44 # −999
guest8 16.11.2018 03:46 # −999
bormand 16.11.2018 03:47 # −1
И где исходники скачать?
guest8 16.11.2018 03:48 # −999
bormand 16.11.2018 03:49 # −1
guest8 16.11.2018 03:52 # −999
vistefan 16.11.2018 03:54 # −1
Лол, а ты не знал? )
guest8 16.11.2018 03:59 # −999
guest8 16.11.2018 04:02 # −999
vistefan 16.11.2018 04:04 # 0
Вот не лень было тебе переключать раскладку, чтобы после «knife» написать русскими буквами «сайнс»
bormand 16.11.2018 03:46 # −1
> попенсорц
/0
guest8 16.11.2018 03:48 # −999
vistefan 16.11.2018 03:34 # −1
Проезжая мимо станции, у меня улетела шляпа
> что нужно знать дохуя всего чтобы быть веб-макакой
Нет, не нужно. Будь ей, без каких-либо знаний, я лично тебе разрешаю.
vistefan 16.11.2018 03:39 # −1
Так я и спросил, здесь разве не программисты сидят? Повторяю, это НЕ форум для домохозяек, тут мои коллеги, программисты.
> в интернет понтоваться ходят
Давай разберём по частям тобою написанное. Чтобы понтоваться, непременно нужен зритель. На этом сайте любой человек, кроме пхпшного рачья, знает больше меня в несколько раз, и у них я могу только поучиться. Получается, я понтуюсь перед тобой? Но что-то я не припомню, чтобы ты был как-то особенно мною очарован. И в чём же тогда понт?
Вот например 1024-- мой вопрос показался интересным, и цели, с которой я его задал, я тоже достиг.Но я НЕ СТАВИЛ вопрос о том, нужны ли кому-то автоматы и обязательно ли их кому-нибудь знать. Это уже твой личный Freud.
guest8 16.11.2018 03:43 # −999
guest8 16.11.2018 03:45 # −999
guest8 16.11.2018 03:46 # −999
guest8 16.11.2018 03:46 # −999
guest8 16.11.2018 03:47 # −999
guest8 16.11.2018 03:48 # −999
bormand 16.11.2018 03:50 # +2
Пиши на си, заодно и память течь будет.
guest8 16.11.2018 03:54 # −999
guest8 16.11.2018 03:55 # −999
guest8 16.11.2018 06:17 # −999
bormand 16.11.2018 06:58 # −1
Наверное. Как и кривое кеширование когда кеш не отпускает старые объекты.
guest8 16.11.2018 11:27 # −999
guest8 16.11.2018 11:27 # −999
vistefan 16.11.2018 03:48 # −1
Если под средним-по-больнице программистом понимается более-менее что попало, тогда средний программист в среднем может знать какую угодно теорию и помочь ему на практике и что-то дать в работе тоже может приблизительно что угодно.
guest8 16.11.2018 03:47 # −999
guest8 15.11.2018 17:15 # −999
guest8 16.11.2018 01:37 # −999
guest8 16.11.2018 01:43 # −999
Goh 16.11.2018 01:45 # −1
Elvenfighter 15.11.2018 17:17 # −1
P.S.
> Где вам пригождались автоматы или знания о них в реале?
Чесно говоря, знания о автоматах на мозг не давят. Можно сформировать в одном предложении:
"храним состояние и переходим в другое по выволнению некоего условия"
vistefan 15.11.2018 17:24 # −1
Поподробнее?
Elvenfighter 15.11.2018 18:08 # −1
Elvenfighter 15.11.2018 18:13 # −1
Самих состояний может быть много. Писать их не буду, слишком специфично. Однако, если с точки зрения аггрератора цен, то там навеное не так уж и много состояний
roman-kashitsyn 15.11.2018 18:32 # −1
inkanus_gray 15.11.2018 18:43 # −1
guest8 15.11.2018 18:44 # −999
inkanus_gray 15.11.2018 19:22 # −1
Goh 15.11.2018 19:29 # −1
Латыш, шоль?
guest8 15.11.2018 19:39 # −999
guest8 15.11.2018 19:54 # −999
guest8 15.11.2018 20:11 # −999
Goh 15.11.2018 20:33 # −1
guest8 15.11.2018 22:58 # −999
guest8 15.11.2018 20:09 # −999
guest8 15.11.2018 19:44 # −999
guest8 15.11.2018 22:25 # −999
guest8 16.11.2018 00:11 # −999
guest8 16.11.2018 00:51 # −999
AKKOPDEOH 16.11.2018 01:26 # −1
В архиве брата Шуберта?
guest8 16.11.2018 01:28 # −999
AKKOPDEOH 16.11.2018 01:31 # −1
"Неоконченная симфония", таки? Какая прелесть!
vistefan 16.11.2018 02:47 # −1
TOPT 16.11.2018 02:12 # 0
guest8 15.11.2018 17:26 # −999
guest8 15.11.2018 17:30 # −999
bormand 15.11.2018 17:40 # 0
guest8 15.11.2018 17:58 # −999
bormand 15.11.2018 18:11 # 0
vistefan 15.11.2018 18:56 # −1
bormand 15.11.2018 19:01 # −1
vistefan 15.11.2018 19:06 # 0
Elvenfighter 15.11.2018 20:10 # −1
OlegUP 15.11.2018 17:51 # −1
OlegUP 15.11.2018 17:52 # −1
guest8 15.11.2018 18:05 # −999
Goh 15.11.2018 19:27 # −1
Обокан, АКМ, АКМ-У, Скорострельный АКМ в "Тени чернобыля", "Зове припяти", "Чистом нёбе"
> или знания о них в реале
В пизде
1024-- 15.11.2018 19:53 # −2
Вот в веб-питушне что-то такое наблюдается. Есть форма, есть валидация, есть отсылка запросов. Кто-то давит на кнопку, и обработчик должен учитывать, что питушня находится в одном из состояний:
* есть изменения и ничего не сохраняли
* нажимали на кнопку, запрос на валидацию идёт
* запрос на валидацию прошёл, валидно
* нажимали на кнопку, запрос на сохранение идёт
* нет изменений или всё сохранили
И тут и клиент эту пишутню с учётом этих стадий обрабатывает, и сервер. Дальше ещё можно добавить "авторизован/не авторизован для сервера" и "отправлена первая часть формы", "... вторая...", ...
Goh 15.11.2018 20:43 # −2
"Платон мне друк, да истина дороже."
guest8 16.11.2018 03:17 # −999
vistefan 16.11.2018 02:59 # 0
Но напоминает только концептуально. Такого, чтобы кто-то на уровне кода применял стейт-машины для подобных задач, я не видел. Возможно это оттого, что часто в начале работы над проектом реализуется какое-то очень небольшое подмножество бизнес-логики, а потом никто уже не рефакторит усложнившуюся систему, а просто добавляют кучу трудно отлаживаемых и противоречивых условий, при которых у кнопки «Редактировать» будет `display: block;`
А ещё поведение задачи на гибкой доске (also known as agile board для тех, кто ненавидит свой родной русский язык и использует буржуйские термины) очень похоже на конечный автомат:
planning
todo
in progress
code review
in progress
code review
...
testing (todo)
testing (in progress)
reopened
code review
...
testing (todo)
testing (in progress)
reopened
code review
...
done
closed
guest8 16.11.2018 03:03 # −999
vistefan 16.11.2018 03:28 # −1
guest8 16.11.2018 03:34 # −999
guest8 16.11.2018 06:20 # −999
guest8 16.11.2018 03:15 # −999
vistefan 16.11.2018 03:27 # −1
Не найду, это сленг, причём это не то же самое, что конечный автомат. Стейт-машина не обязательно конечна. Конечна финит-стейт-машина.
guest8 16.11.2018 03:30 # −999
vistefan 16.11.2018 03:00 # −1
Спасибо.
yet_another_one_shit 16.11.2018 07:54 # −1
KitKat 16.11.2018 14:29 # 0