Автоматне програмування
Автоматне програмування — парадигма програмування, відповідно до якої програма або її фрагмент розглядаються як модель деякого формального автомата, а вибір операції обробки вхідних даних визначається не тільки поточним значенням даних, але й поточним значенням стану автомата.
Залежно від конкретної задачі в автоматному програмуванні можуть використовуватися як скінченні автомати, так і автомати складнішої структури.
Визначальними для автоматного програмування є такі особливості:
- Послідовність операцій виконання програми розбивається на кроки автомата, кожен з яких являє собою виконання певної (однієї і тієї ж для кожного кроку) секції коду з єдиною точкою входу; таку секцію можна оформити, наприклад, у вигляді окремої функції і, в свою чергу, можна розділити на підсекції, відповідно до окремих станів або категорій станів;
- Збереження інформації про стан між кроками автомата здійснюється виключно через явно визначений набір змінних, призначених для зберігання стану автомата, таких, що стани програми на будь-якому окремому моменті входу в крок автомата можуть різнитися між собою виключно значеннями цих і тільки цих змінних.
- Зміна станів автомата зазвичай відбувається в циклі (можливо, неявно заданому) виконання кроків автомата.
Техніка автоматного програмування та сама назва є дискусійними[1].
Найраніші випадки застосування парадигми автоматного програмування стосуються предметних галузей, у яких напрацьована алгоритмічна теорія, заснована на теорії автоматів, і насамперед — до аналізу текстів на формальних мовах. Одну з найраніших робіт на цю тему представлено в статті 1968 року[2].
Примітки
- Изобретатель автоматного программирования
- Johnson W.L., Porter J.H. Automatic generation of efficient lexical processors using finite state techniques / 1968