¿Cuál es una buena manera de definir "estado", como en una variable de estado o máquina de estado, para un programador nuevo (previamente no)? ¿Cuáles son algunas buenas maneras de explicar por qué este concepto es útil para escribir software? ¿El concepto de estado se enseña explícitamente al comienzo de los cursos o libros de programación?
15
De Wikipedia :
Eso es más o menos lo que significa en un contexto informático: los datos que definen la condición de algún objeto o sistema.
El significado de 'estado' no es específico de la programación. Hay ejemplos de "estado" literalmente en todas partes. La televisión está apagada. El cafe 'esta caliente. Las zapatillas son a) azules; b) maloliente; c) no guardado; d) bastante desgastado. 'estado' en un sentido de programación es exactamente lo mismo que 'estado' en un sentido que no es de programación, excepto que lo aplicamos a los objetos con los que tratamos: variables, objetos, hilos, bases de datos, sistemas de archivos, etc. Si tiene para explicarlo, explíquelo en términos que le sean familiares: no hay necesidad de convertirlo en un concepto técnico extraño.
Un reloj es un buen ejemplo de un sistema simple que tiene algún estado: un reloj puede estar funcionando o no, e indica una hora que puede corresponder o no a la hora real del día. Es bastante fácil ver cómo esas cosas son como variables y cómo cambiar el estado del reloj podría afectar otras cosas.
Compare eso con algo sin estado, como una declaración: "La puerta es roja". La declaración en sí no tiene estado. Puede o no ser cierto que la puerta es roja, pero la declaración en sí no contiene ningún estado. Pintar la puerta puede cambiar la verdad de la declaración, pero la declaración en sí misma nunca cambia. Del mismo modo, un número como 42 no tiene ningún estado: 42 es 42 y no hay nada que pueda cambiar al respecto.
Las variables tienen estado, los valores no.
fuente
El estado es información que su programa manipula para realizar alguna tarea. Son datos o información que se modifican o manipulan durante el tiempo de ejecución de un programa. El "estado" de un programa en un momento dado se refiere a una instantánea de todos los datos que el programa está mirando o analizando actualmente para llegar al siguiente paso en su ejecución.
Mi universidad comenzó con Scheme, así que comenzamos a programar con un modelo sin estado. Luego cambiamos a C y fuimos muy explícitos sobre qué estado es, por qué es útil y por qué hace las cosas potencialmente muy complicadas. Entonces, algunas universidades ciertamente hablan sobre el estado, pero no necesariamente todas
fuente
Puede usar la analogía de un semáforo que puede estar en uno de tres estados: [VERDE], [AMARILLO] o [ROJO]. Solo debe estar en un estado a la vez. El semáforo es la máquina de estado real que se está modelando. Normalmente cambiará su estado de [VERDE a AMARILLO], luego [AMARILLO a ROJO], luego [ROJO a VERDE].
Una transición de estado alternativa (que está vigente en algunos países como el Reino Unido, tiene dos transiciones de [ROJO a AMARILLO, luego AMARILLO a VERDE] en lugar de la transición [ROJO a VERDE].
fuente