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