В інформаційних технологіях та інформатиці систему називають такою, що має стан (), якщо вона спроєктована так, щоб запам'ятовувати попередні події або взаємодії з користувачем; інформація, що зберігається, називається станом системи.
Множина всіх станів, у яких може перебувати система, називається простором станів. У дискретній системі простір станів є зліченним і часто скінченним. Внутрішня поведінка системи або її взаємодія з навколишнім середовищем складається з окремих дій або подій, таких як приймання вхідних даних чи формування вихідних даних, які можуть як змінювати, так і не змінювати стан системи. Прикладами таких систем є цифрові логічні схеми та компоненти, автомати і формальні мови, комп'ютерні програми та комп'ютери.
Вихід цифрової схеми або детермінованої комп'ютерної програми в будь-який момент часу повністю визначається її поточними вхідними даними та її станом.
Стан цифрової логічної схеми Цифрові логічні схеми можна поділити на два типи: комбінаційні схеми, вихідні цифрові сигнали яких залежать лише від поточних вхідних сигналів, і послідовнісні схеми, виходи яких є функцією як поточних вхідних сигналів, так і попередньої історії вхідних сигналів. У послідовнісній логіці інформація про попередні вхідні сигнали зберігається в електронних елементах пам'яті, таких як тригери. Вміст цих елементів пам'яті в певний момент часу сукупно називають станом схеми; він містить усю інформацію про минулі події, яка доступна схемі.
Оскільки кожен двійковий елемент напівпровідникової пам'яті, наприклад тригер, може перебувати лише в одному з двох можливих станів — нуль або одиниця, а кількість елементів пам'яті є скінченною, цифрова схема також має лише скінченну кількість можливих станів. Якщо N — це кількість двійкових елементів пам'яті в схемі, то максимальна кількість станів, які вона може мати, дорівнює 2N.
Стан програми Подібним чином комп'ютерна програма зберігає дані у змінних, які представляють місця зберігання в пам'яті комп'ютера. Вміст цих комірок пам'яті в будь-який момент виконання програми називається станом програми.
Більш спеціалізоване визначення стану використовується для комп'ютерних програм, які працюють послідовно з потоками даних, таких як синтаксичний аналізатор, мережевий екран, протоколи зв'язку та алгоритми шифрування. Послідовні програми обробляють вхідні символи або пакети даних один за одним. У деяких таких програмах інформація про раніше отримані символи або пакети зберігається у змінних і використовується для впливу на обробку поточного символу або пакета. Це називається протоколом зі станом, а дані, що переносяться з попереднього циклу обробки, називаються станом. В інших програмах відсутня інформація про попередній потік даних, і для кожного нового вхідного повідомлення обробка починається заново; це називається протоколом без стану.
Імперативне програмування — це парадигма програмування (спосіб проєктування мов програмування), яка описує обчислення через стан програми та оператори, що змінюють цей стан. Зміни стану є неявними й керуються середовищем виконання програми, тому підпрограма має видимість змін стану, виконаних іншими частинами програми, які називаються побічними ефектами.
Об'єктно-орієнтоване програмування намагається вдосконалити імперативну та процедурну парадигми шляхом інкапсуляції пов'язаного стану (і поведінки) всередині об'єктів. Стан об'єкта часто приховується, щоб ізолювати його від інших об'єктів і зменшити зв'язність. Стан, прихований таким чином, часто називають «внутрішнім станом» об'єкта.
У мовах декларативного програмування програма описує бажані результати й не визначає безпосередньо зміни стану.
У функційному програмуванні стан зазвичай подається за допомогою явних змінних стану, що представляють стан програми на кожному етапі її виконання. Змінна стану передається як вхідний параметр функції, що перетворює стан, а оновлений стан повертається як частина її результату. Чиста функціональна підпрограма має видимість лише тих змін стану, які представлені змінними стану в межах її області видимості.
Скінченні автомати Вихід послідовнісні схеми або комп'ютерної програми в будь-який момент часу повністю визначається її поточними вхідними даними та поточним станом. Оскільки кожен двійковий елемент пам'яті може перебувати лише в одному з двох можливих станів — 0 або 1, загальна кількість різних станів, яких може набувати схема, є скінченною та визначається кількістю елементів пам'яті. Якщо є N двійкових елементів пам'яті, цифрова схема може мати не більше ніж 2N різних станів. Поняття стану формалізується в абстрактній математичній моделі обчислень, яка називається скінченним автоматом і використовується для проєктування як послідовнісних цифрових схем, так і комп'ютерних програм.
Примітки