Qual é uma boa maneira de definir "estado", como na variável de estado ou na máquina de estado, para um novo (anteriormente não) programador? Quais são algumas boas maneiras de explicar por que esse conceito é útil para escrever software? O conceito de estado é explicitamente ensinado no início de cursos ou livros de programação?
15
Da Wikipedia :
Isso é basicamente o que significa em um contexto de computação: os dados que definem a condição de algum objeto ou sistema.
O significado de 'estado' não é específico para programação. Existem exemplos de 'estado' literalmente em todos os lugares que você olha. A televisão está desligada. O café está quente. Os tênis são a) azuis; b) fedorento; c) não deixar de lado; d) bastante desgastado. 'state' em um sentido de programação é exatamente o mesmo que 'state' em um sentido de não programação, exceto que o aplicamos aos objetos com os quais lidamos: variáveis, objetos, threads, bancos de dados, sistemas de arquivos etc. Se você tiver para explicá-lo, explique-o em termos familiares - não é necessário transformá-lo em um conceito técnico estrangeiro.
Um relógio é um bom exemplo de um sistema simples que possui algum estado: um relógio pode estar funcionando ou não, e indica um horário que pode ou não corresponder à hora real do dia. É muito fácil ver como essas coisas são variáveis e como a alteração do estado do relógio pode afetar outras coisas.
Compare isso com algo apátrida, como uma declaração: "A porta está vermelha". A declaração em si não tem estado. Pode ou não ser verdade que a porta está vermelha, mas a declaração em si não contém nenhum estado. Pintar a porta pode mudar a verdade da afirmação, mas a afirmação em si nunca muda. Da mesma forma, um número como 42 não possui nenhum estado: 42 é 42 e não há nada que você possa mudar.
Variáveis têm estado, valores não.
fonte
Estado é a informação que seu programa manipula para realizar alguma tarefa. São dados ou informações que são alterados ou manipulados durante o tempo de execução de um programa. O "estado" de um programa em um determinado momento refere-se a um instantâneo de todos os dados que o programa está vendo ou analisando no momento para chegar à próxima etapa de sua execução.
Minha universidade começou com o Scheme, então começamos a programar com um modelo sem estado. Em seguida, mudamos para C e fomos muito explícitos sobre o que é um estado, por que é útil e por que torna as coisas potencialmente muito complicadas. Então, algumas universidades certamente falam sobre estado, mas não necessariamente todas elas
fonte
Você pode usar a analogia de um semáforo que pode estar em um dos três estados: [VERDE], [AMARELO] ou [VERMELHO]. Ele deve estar apenas em um estado de cada vez. O semáforo é a máquina de estado real que está sendo modelada. Ele normalmente fará a transição do estado de [VERDE para AMARELO], depois [AMARELO para VERMELHO] e depois [VERMELHO para VERDE].
Uma transição de estado alternativa (que está em vigor em alguns países como o Reino Unido, tem duas transições de [VERMELHO para AMARELO, depois AMARELO para VERDE] no lugar da transição [VERMELHO para VERDE].
fonte