Страницы

Поиск по вопросам

воскресенье, 5 января 2020 г.

Автоматное программирование

#c_sharp #теория_автоматов


Подскажите, пожалуйста, в чем преимущества и недостатки автоматного программирования? 
К каким языкам автоматное программирование более применительно? (как с точки зрения
парадигмы программирования - функциональное например, так и с точки зрения возможностей
языка - возможность метапрограммирования и т.п., особенно интересует C#)
Можно ли автоматное программирование применять для написание логики в играх или для
для этого есть более эффективные методы?
Есть ли различие между автоматным программированием и программированием с использованием
автоматов или это просто игра слов?    


Ответы

Ответ 1



Для подробного ознакомления с темой рекомендую посмотреть статьи А.А.Шалыто на соответствующие темы. Вообще, если немножко броситься в демагогию, то автоматное программирование - это некоторый аналог идеи функционального программирования, но с более конкретной "практической точки зрения". Любой логический блок есть конечный автомат (утрированно, конечно), плюсы и минусы тоже вполне очевидны. Так, например, т.к количество состояний такой программы конечно и может изменяться только в определенных ее точках, то становится проще отладка, поддержка и осознание механизмов работы. Из недостатков можно выделить сложность написания действительно качественного кода, недостаточность инструментов IDE для поддержки такой парадигмы и не слишком большое количество ситуаций, когда автоматное программирование действительно хорошо себя проявляет "из коробки" (логические стейт-машины, всякие штуки вроде лексического анализа, может-быть, еще программирование UI). Если интересно, то мое имхо насчет этого такое же как, например, насчет функциональной парадигмы - хорошо в ряде случаев, но не тянет на парадигму. Т.е намного проще использовать конечный автомат или функциональный стиль программирования для решения конкретной задачи, нежели пытаться решать все задачи в этом стиле. P.S У Шалыто много примеров, есть хорошие, есть натянутые, изучайте :)

Комментариев нет:

Отправить комментарий