Définition de «état»

15

Quelle est une bonne façon de définir "état", comme dans une variable d'état ou une machine d'état, à un nouveau programmeur (auparavant non)? Quels sont les bons moyens d'expliquer pourquoi ce concept est utile pour l'écriture de logiciels? Le concept d'État est-il explicitement enseigné en commençant des cours de programmation ou des livres couramment?

hotpaw2
la source

Réponses:

5

"l'état" est nécessaire, lorsque vous devez vous souvenir de quelque chose. Les fonctions (pas les "méthodes" ou autre) ne dépendent idéalement que de leurs entrées. Si vous posez une question où la réponse peut changer avec le temps, même si les entrées sont les mêmes, vous avez besoin de quelque chose pour vous souvenir de cette différence dans la réponse, n'est-ce pas? Sinon, vous ne pouvez pas donner de réponse différente car aucun autre facteur n'a changé (supposons que la réponse ne dépend pas directement du temps).

Cette "chose / information" dont vous devez vous souvenir est appelée "état".

(il n'est pas obligatoire que cet "état" change avec le temps, c'est simplement une façon de dire "se souvenir / savoir quelque chose")

phant0m
la source
1
Je pense que c'est la meilleure réponse, si reformulée pour être intelligible à un non-programmeur. Dites: toutes les activités traitent des choses et / ou des informations. Cela se produit de trois façons: 1) toute activité peut prendre ou utiliser ou lire quelque chose: son entrée ; 2) il peut produire ou écrire quelque chose: sa sortie ; 3) pendant son déroulement, il peut contenir , conserver , mémoriser , stocker quelque chose: son état. Pour la plupart des programmes informatiques, toutes les entrées, sorties et états se composent d'informations, tandis que pour d'autres types d'activités (par exemple, la cuisine), les objets physiques sont généralement impliqués également.
reinierpost
8

De Wikipédia :

L'État fait généralement référence à l'état actuel d'un système ou d'une entité ...

C'est à peu près ce que cela signifie dans un contexte informatique: les données qui définissent la condition d'un objet ou d'un système.

La signification de «état» n'est pas spécifique à la programmation. Il existe des exemples d '«état» littéralement partout où vous regardez. La télévision est éteinte. Le café est chaud. Les baskets sont a) bleues; b) malodorant; c) ne pas ranger; d) assez usé. «état» dans un sens de programmation est exactement le même que «état» dans un sens non-programmation, sauf que nous l'appliquons aux objets que nous traitons: variables, objets, threads, bases de données, systèmes de fichiers, etc. Si vous avez pour l'expliquer, l'expliquer en termes familiers - il n'est pas nécessaire d'en faire un concept technique étranger.

Une horloge est un bon exemple d'un système simple qui a un certain état: une horloge peut fonctionner ou ne pas fonctionner, et elle indique une heure qui peut ou non correspondre à l'heure réelle de la journée. Il est assez facile de voir comment ces choses sont comme des variables et comment le changement d'état de l'horloge peut avoir un impact sur d'autres choses.

Comparez cela à quelque chose d'apatride, comme une déclaration: "La porte est rouge." La déclaration elle-même n'a pas d'état. Il peut être vrai ou non que la porte est rouge, mais la déclaration elle-même ne contient aucun état. Peindre la porte peut changer la vérité de la déclaration, mais la déclaration elle-même ne change jamais. De même, un nombre comme 42 n'a pas d'état: 42 est 42 et vous ne pouvez rien y changer.

Les variables ont un état, les valeurs non.

Caleb
la source
1
@ hotpaw2 La signification de «état» n'est pas spécifique à la programmation. Il existe des exemples d '«état» littéralement partout où vous regardez. La télévision est éteinte. Le café est chaud. Les baskets sont a) bleues; b) malodorant; c) ne pas ranger; d) assez usé. 'état' dans un sens de programmation est exactement le même que 'état' dans un sens non-programmation, sauf que nous l'appliquons aux objets que nous traitons: variables, objets, threads, bases de données, systèmes de fichiers, etc.
Caleb
1
Donc, vous l'expliqueriez à un étudiant en programmation en utilisant des exemples concrets? Cela semble être une bonne idée. Cela leur transférera-t-il efficacement la compréhension de l'état dans leurs programmes?
hotpaw2
2
@ hotpaw2 Déplacé mon commentaire jusqu'à la réponse et développé un peu. Quant à la compréhension, je pense qu'il vaut mieux ne pas trop se concentrer sur «l'état» dans l'abstrait avec un débutant. La plupart des gens ont besoin d'exemples concrets de quelque chose avant de pouvoir vraiment reconnaître un modèle plus général.
Caleb
1
Vous ne savez pas pourquoi "le café est chaud" est en état, mais "la porte est rouge" est apatride? En revanche, cela signifierait-il que "le café est noir" est apatride et "la porte est chaude" est avec état?
Adam Hughes
1
@AdamHughes Regardez où j'ai utilisé des citations - en particulier, je ne les ai pas utilisées pour parler du café parce que je parlais de café réel, pas de déclarations sur le café. Il s'agit d'expliquer la différence entre les variables et les valeurs. La porte réelle de ma maison a un état: elle peut être ouverte ou fermée, rouge ou bleue ou verte, chaude ou froide, etc. Une déclaration sur la porte peut indiquer cet état, mais la déclaration elle - même est immuable.
Caleb
1

L'état est l'information que votre programme manipule pour accomplir une tâche. Ce sont des données ou des informations qui sont modifiées ou manipulées tout au long de l'exécution d'un programme. L '«état» d'un programme à un instant donné fait référence à un instantané de toutes les données que le programme examine ou analyse actuellement pour passer à l'étape suivante de son exécution.

Mon université a commencé avec Scheme, nous avons donc commencé à programmer avec un modèle sans état. Nous sommes ensuite passés à C et avons été très explicites sur ce qu'est l'état, pourquoi il est utile et pourquoi cela rend les choses potentiellement très compliquées. Donc, certaines universités parlent certainement d'État, mais pas nécessairement toutes

Oleksi
la source
1

Vous pouvez utiliser l'analogie d'un feu de circulation qui peut être dans l'un des trois états: [VERT], [JAUNE] ou [ROUGE]. Elle ne doit être que dans un état à la fois. Le feu de circulation est la machine d'état réelle en cours de modélisation. Il passera normalement son état de [VERT à JAUNE], puis [JAUNE à ROUGE], puis [ROUGE à VERT].

entrez la description de l'image ici

Une transition d'état alternative (qui est en vigueur dans certains pays comme le Royaume-Uni, a deux transitions de [ROUGE à JAUNE, puis JAUNE à VERT] à la place de la transition [ROUGE à VERT].

dodgy_coder
la source