Masina de stat finita - programare automata

În cea mai mare parte, programarea automată este legată de noțiunea de automat finit. Fără a intra în jungla matematică, mașina finită de stat poate fi definită după cum urmează:







Un model cu ajutorul căruia este convenabil să reprezentăm un proces care are un număr finit de stări de control discrete

Cel de-al doilea lucru pe care îl vedem în această definiție este cuvântul "stat". Statul, baza oricărui automat finit, și, în viață, folosim periodic acest concept. Acest sens, care este pus în ea la un nivel intuitiv, este identic cu sensul care este pus în el atunci când lucrați cu automate finite. De exemplu, o persoană este hrănită sau înfometată, adormită, bolnavă și chiar iartă-i pe Dumnezeu, mort, iar apa este lichidă, grea (gheață) și gazoasă. Toate acestea sunt stări de procese diferite.

Definiția specifică faptul că statele ar trebui să fie discrete, cu alte cuvinte, ar trebui să putem face diferențe clare între diferitele state ale procesului. Încălzirea apei de proces nu poate fi reprezentat ca o mașină de stat, dacă nu distingem puncte specifice în acesta (de stat), de exemplu, apă caldă (50 ° C), apa calda (80 de grade) și apă rece (10 grade).

Și ultimul lucru care înseamnă "stări de control"? Conceptul de stat nu este străin de lumea programării. Într-una din primele conferințe am vorbit despre faptul că starea programului este, în general, o formă a memoriei ei, cu alte cuvinte, semnificația tuturor variabilelor la un moment dat în timp. Acest lucru, desigur, este așa, dar putem merge mai departe și observăm că statul poate fi împărțit în două tipuri. Primul tip este statul responsabil pentru toate căile posibile de mișcare a datelor prin intermediul programului. Al doilea este datele în sine sau așa-numita stare de calcul.

Numărul lor nu este foarte mare

Numărul lor este fie infinit, fie finit, dar foarte mare







Fiecare dintre ele are un înțeles clar și este diferit calitativ de celelalte

Cele mai multe dintre ele nu au nici un înțeles și diferă de restul doar cantitativ

Ei determină acțiunile pe care esența le îndeplinește

Ele determină direct numai rezultatele acțiunilor

Luați în considerare cea mai simplă mașină de stat finită, cu exemplul televizorului și procesul de pornire. În acest proces, două state sunt "on" și "off", care se schimbă în funcție de evenimentele "porniți" și "dezactivați".

Diagrama de stare așa-numită este văzută mai sus. Acesta este un afișaj grafic care ajută la vizualizarea vizuală a schemei de tranziții între state și a vedea toate limitările sistemului (nu toate stările pot fi comutate la toate). După cum puteți vedea, totul este simplu și intuitiv cu televizorul. Să aruncăm o privire la un exemplu mai interesant:

Această mașină descrie procesul de preparare a cafelei într-o mașină de cafea. Nu atât de banal ca și cu un televizor. Ce altceva poate fi descris de o mașină de stat finită?

  • Starea comenzii
  • Lumină de trafic
  • Sim card de activare
  • Lansarea practicii pe Heckslet
  • Interfețe utilizator (UI)

Personal, mi se pare că este mai ușor să enumăr ceea ce nu este descris de mașina finită de stat, decât invers.

Lumea reală este plină de procese care sunt descrise de automate finite, cu alte cuvinte automatele finite sunt întotdeauna prezente indiferent dacă știm despre ele sau nu

Mă concentrez asupra acestei atenții. În practica mea, există adesea o convingere printre programatorii deja experimentați că automatele finite complică viața și / sau sunt necesare doar pentru scrierea compilatoarelor. Aceasta este o mare concepție greșită cauzată de lipsa de formare de bază adecvată. Dacă programul dvs. are o entitate cu comportament complex, atunci prin definiție cel mai simplu mod de a descrie procesele sale este mașina de stare finită.

Recunoaste comportament complex esență în codul sursă de program poate fi după cum urmează: Într-o implementare convențională a unor astfel de entități logice folosite variabile numite steaguri complicate și numeroase structuri de ramificare, în condiții care sunt diferite combinații de valori pavilion. Acest mod de descriere a logicii unui comportament complex este slab structurat, greu de înțeles și modificat și este predispus la erori.

Una dintre ideile centrale ale programării bazate pe automate este de a descrie comportamentul unității logice (în ce condiții este necesar să se efectueze anumite acțiuni) din descrierea semanticii sale (înțelesul în sine a fiecărei acțiuni). În plus, descrierea logicii în abordarea automată este rigid structurată. Aceste proprietăți fac ca descrierea automată a comportamentului complex să fie clară și clară.







Trimiteți-le prietenilor: