Definizione di "stato"


15

Qual è un buon modo per definire "stato", come nella variabile di stato o nella macchina a stati, per un nuovo programmatore (precedentemente non)? Quali sono alcuni buoni modi per spiegare perché questo concetto è utile per scrivere software? Il concetto di stato viene esplicitamente insegnato all'inizio di corsi di programmazione o libri comunemente?

Risposte:


5

"stato" è necessario, quando è necessario ricordare qualcosa. Le funzioni (non "metodi" o altro) idealmente dipendono solo dai loro input. Se fai una domanda in cui la risposta può cambiare nel tempo, anche se gli input sono gli stessi, hai bisogno di qualcosa per ricordare quella differenza nella risposta, giusto? Altrimenti, non è possibile fornire una risposta diversa perché non sono stati modificati altri fattori (supponiamo che la risposta non dipenda direttamente dal tempo).

Quella "cosa / informazione" che devi ricordare è chiamata "stato".

(non è richiesto che questo "stato" cambi nel tempo, è fondamentalmente solo un modo per dire "ricordare / conoscere qualcosa")


1
Penso che questa sia la risposta migliore, se riformulata per essere comprensibile a un non programmatore. Dì: tutte le attività gestiscono cose e / o informazioni. Ciò accade in tre modi: 1) qualsiasi attività può prendere o utilizzare o leggere qualcosa: il suo input ; 2) può produrre o scrivere qualcosa: il suo output ; 3) mentre è in corso può contenere , conservare , memorizzare , conservare qualcosa: il suo stato. Per la maggior parte dei programmi per computer, tutti gli input, output e state sono costituiti da informazioni, mentre per altri tipi di attività (diciamo, cucina) sono di solito coinvolti anche oggetti fisici.
reinierpost,

8

Da Wikipedia :

Lo stato si riferisce comunemente alla presente condizione di un sistema o entità ...

Questo è praticamente ciò che significa in un contesto informatico: i dati che definiscono le condizioni di alcuni oggetti o sistemi.

Il significato di "stato" non è specifico per la programmazione. Ci sono esempi di "stato" letteralmente ovunque tu guardi. La televisione è spenta. Il caffè è caldo Le scarpe da ginnastica sono a) blu; b) puzzolente; c) non riporre; d) abbastanza logoro. 'state' in senso programmatico è uguale a 'state' in senso non programmatico, tranne per il fatto che lo applichiamo agli oggetti che trattiamo: variabili, oggetti, thread, database, file system, ecc. Se hai per spiegarlo, spiegarlo in termini familiari - non è necessario trasformarlo in un concetto straniero e tecnico.

Un orologio è un buon esempio di un sistema semplice che ha un certo stato: un orologio può essere in esecuzione o non in esecuzione e indica un orario che può o meno corrispondere all'ora reale del giorno. È abbastanza facile vedere come quelle cose siano come variabili e come il cambiamento dello stato dell'orologio potrebbe influire su altre cose.

Paragonalo a qualcosa di apolide, come un'affermazione: "La porta è rossa". La stessa dichiarazione non ha stato. Può essere o meno vero che la porta è rossa, ma l'affermazione stessa non contiene alcuno stato. Dipingere la porta può cambiare la verità dell'affermazione, ma l'affermazione stessa non cambia mai. Allo stesso modo, un numero come 42 non ha alcuno stato: 42 è 42 e non c'è nulla che tu possa cambiare al riguardo.

Le variabili hanno stato, i valori no.


1
@ hotpaw2 Il significato di "stato" non è specifico per la programmazione. Ci sono esempi di "stato" letteralmente ovunque tu guardi. La televisione è spenta. Il caffè è caldo Le scarpe da ginnastica sono a) blu; b) puzzolente; c) non riporre; d) abbastanza logoro. "state" in un senso di programmazione è uguale a "state" in un senso di non programmazione, tranne per il fatto che lo applichiamo agli oggetti che trattiamo: variabili, oggetti, thread, database, file system, ecc.
Caleb

1
Quindi lo spiegheresti a uno studente di programmazione usando esempi concreti? Sembra una buona idea. Trasferirà efficacemente a loro la comprensione dello stato nei loro programmi?
hotpaw2,

2
@ hotpaw2 Sposta il mio commento fino alla risposta e si espande un po '. Per quanto riguarda la comprensione, penso che sia meglio non concentrarsi troppo sullo "stato" in astratto con un principiante. Molte persone hanno bisogno di esempi concreti di qualcosa prima di poter veramente riconoscere uno schema più generale.
Caleb,

1
Non è chiaro perché "il caffè è caldo" è stato, ma "la porta è rossa" è apolide? Al contrario, ciò significherebbe che "il caffè è nero" è apolide e "la porta è calda" è elegante?
Adam Hughes,

1
@AdamHughes Guarda dove ho usato le virgolette - in particolare, non le ho usate per parlare del caffè perché mi riferivo al vero caffè, non alle dichiarazioni sul caffè. Il punto è spiegare la differenza tra variabili e valori. La vera porta di casa mia ha uno stato: potrebbe essere aperta o chiusa, rossa o blu o verde, calda o fredda, ecc. Un'affermazione sulla porta può indicare quello stato, ma l'affermazione stessa è immutabile.
Caleb,

1

Lo stato è l'informazione manipolata dal programma per eseguire alcune attività. Sono i dati o le informazioni che vengono modificati o manipolati durante il runtime di un programma. Lo "stato" di un programma in un determinato momento si riferisce a un'istantanea di tutti i dati che il programma sta attualmente esaminando o analizzando per passare al passaggio successivo nella sua esecuzione.

La mia università ha iniziato con Scheme, quindi abbiamo iniziato a programmare con un modello senza stato. Siamo quindi passati a C ed eravamo molto espliciti su quale stato è, perché è utile e perché rende le cose potenzialmente molto complicate. Quindi alcune università parlano certamente di stato, ma non necessariamente tutte


1

È possibile utilizzare l'analogia di un semaforo che può trovarsi in uno dei tre stati: [VERDE], [GIALLO] o [ROSSO]. Deve essere solo in uno stato alla volta. Il semaforo è la macchina a stati reali che viene modellata. Normalmente passerà dal suo stato da [VERDE a GIALLO], quindi [GIALLO a ROSSO], quindi [ROSSO a VERDE].

inserisci qui la descrizione dell'immagine

Una transizione di stato alternativa (che è in vigore in alcuni paesi come il Regno Unito, ha due transizioni da [ROSSO a GIALLO, quindi GIALLO a VERDE] al posto della transizione da [ROSSO a VERDE].

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.