Definition von "Zustand"

15

Was ist ein guter Weg, um "Zustand", wie in Zustandsvariablen oder Zustandsmaschinen, für einen neuen (zuvor nicht) Programmierer zu definieren? Was sind einige gute Möglichkeiten, um zu erklären, warum dieses Konzept zum Schreiben von Software nützlich ist? Wird der Begriff des Staates in Anfängen von Programmierkursen oder Büchern ausdrücklich gelehrt?

hotpaw2
quelle

Antworten:

5

"state" wird benötigt, wenn Sie sich an etwas erinnern müssen. Funktionen (nicht "Methoden" oder was auch immer) hängen idealerweise nur von ihren Eingaben ab. Wenn Sie eine Frage stellen, bei der sich die Antwort im Laufe der Zeit ändern kann, brauchen Sie etwas, um sich an den Unterschied in der Antwort zu erinnern, richtig? Andernfalls können Sie keine andere Antwort geben, da sich keine anderen Faktoren geändert haben (nehmen wir an, dass die Antwort nicht direkt von der Zeit abhängt).

Das "Ding / die Information", an das / die Sie sich erinnern müssen, heißt "Zustand".

(Es ist nicht erforderlich, dass sich dieser "Zustand" im Laufe der Zeit ändert, es ist im Grunde nur eine Art zu sagen, "sich etwas zu merken / etwas zu wissen".)

phant0m
quelle
1
Ich denke, dies ist die beste Antwort, wenn es umformuliert wird, um für einen Nicht-Programmierer verständlich zu sein. Sprich: Alle Aktivitäten behandeln Dinge und / oder Informationen. Dies geschieht auf drei Arten: 1) jede Tätigkeit kann nehmen oder Nutzung oder lesen etwas: seine Eingabe ; 2) es kann etwas produzieren oder schreiben : seine Ausgabe ; 3) während es läuft , kann es etwas halten , behalten , auswendig lernen , speichern : seinen Zustand. Bei den meisten Computerprogrammen bestehen alle Eingaben, Ausgaben und Zustände aus Informationen, während bei anderen Arten von Aktivitäten (z. B. Kochen) in der Regel auch physische Objekte beteiligt sind.
reinierpost
8

Aus Wikipedia :

Staat bezieht sich gewöhnlich entweder auf den gegenwärtigen Zustand eines Systems oder einer Entität ...

Das ist ziemlich genau das, was es im Computerkontext bedeutet: die Daten, die den Zustand eines Objekts oder Systems definieren.

Die Bedeutung von 'Zustand' ist nicht spezifisch für die Programmierung. Es gibt Beispiele für "Staat" buchstäblich überall, wo Sie suchen. Der Fernseher ist ausgeschaltet. Der Kaffee ist heiß. Die Turnschuhe sind a) blau; b) stinkt; c) nicht weglegen; d) ziemlich abgenutzt. 'state' im Sinne einer Programmierung ist genauso wie 'state' im Sinne einer Nicht-Programmierung, außer dass wir es auf die Objekte anwenden, mit denen wir uns befassen: Variablen, Objekte, Threads, Datenbanken, Dateisysteme usw. Wenn ja Um es zu erklären, erklären Sie es in Begriffen, die Ihnen vertraut sind - es ist nicht erforderlich, daraus ein fremdes technisches Konzept zu machen.

Eine Uhr ist ein gutes Beispiel für ein einfaches System, das einen bestimmten Status hat: Eine Uhr kann laufen oder nicht laufen und sie zeigt eine Zeit an, die der tatsächlichen Tageszeit entsprechen kann oder nicht. Es ist ziemlich einfach zu erkennen, wie diese Dinge Variablen ähneln und wie sich das Ändern des Status der Uhr auf andere Dinge auswirken kann.

Vergleichen Sie das mit etwas Staatenlosem wie einer Aussage: "Die Tür ist rot." Die Anweisung selbst hat keinen Status. Es kann sein, dass die Tür rot ist oder nicht, aber die Anweisung selbst enthält keinen Zustand. Das Streichen der Tür kann die Wahrheit der Aussage ändern, aber die Aussage selbst ändert sich nie. Ebenso hat eine Zahl wie 42 keinen Status: 42 ist 42 und Sie können nichts daran ändern.

Variablen haben einen Status, Werte nicht.

Caleb
quelle
1
@ hotpaw2 Die Bedeutung von "Zustand" ist nicht spezifisch für die Programmierung. Es gibt Beispiele für "Staat" buchstäblich überall, wo Sie suchen. Der Fernseher ist ausgeschaltet. Der Kaffee ist heiß. Die Turnschuhe sind a) blau; b) stinkt; c) nicht weglegen; d) ziemlich abgenutzt. 'state' im Sinne einer Programmierung ist genauso wie 'state' im Sinne einer Nicht-Programmierung, außer dass wir es auf die Objekte anwenden, mit denen wir uns befassen: Variablen, Objekte, Threads, Datenbanken, Dateisysteme usw.
Caleb
1
Also würden Sie es einem Programmierstudenten anhand konkreter Beispiele erklären? Scheint eine gute Idee zu sein. Wird es wirksam dazu beitragen, dass sie den Zustand in ihren Programmen verstehen?
hotpaw2
2
@ hotpaw2 Meinen Kommentar auf die Antwort verschoben und etwas erweitert. Was das Verständnis angeht, denke ich, dass es am besten ist, sich mit einem Anfänger nicht zu sehr auf den abstrakten Zustand zu konzentrieren. Die meisten Menschen brauchen konkrete Beispiele für etwas, bevor sie wirklich ein allgemeineres Muster erkennen können.
Caleb
1
Nicht klar, warum "der Kaffee ist heiß" ist stateful, aber "die Tür ist rot" ist zustandslos? Bedeutet das im Gegensatz dazu, dass "der Kaffee ist schwarz" zustandslos und "die Tür ist heiß" zustandsbehaftet ist?
Adam Hughes
1
@AdamHughes Sehen Sie sich an, wo ich Zitate verwendet habe - insbesondere habe ich sie nicht verwendet, um über den Kaffee zu sprechen, weil ich mich auf tatsächlichen Kaffee bezog, nicht auf Aussagen über Kaffee. Es geht darum, den Unterschied zwischen Variablen und Werten zu erklären. Die eigentliche Tür meines Hauses hat einen Status: Sie kann offen oder geschlossen sein, rot oder blau oder grün, heiß oder kalt usw. Eine Aussage über die Tür kann auf diesen Status hinweisen, aber die Aussage selbst ist unveränderlich.
Caleb
1

Status ist eine Information, die Ihr Programm manipuliert, um eine Aufgabe auszuführen. Es sind Daten oder Informationen, die während der Laufzeit eines Programms geändert oder manipuliert werden. Der "Status" eines Programms zu einem bestimmten Zeitpunkt bezieht sich auf eine Momentaufnahme aller Daten, die das Programm gerade betrachtet oder analysiert, um zum nächsten Schritt seiner Ausführung zu gelangen.

Meine Universität begann mit Scheme, also haben wir angefangen, mit einem Modell ohne Status zu programmieren. Wir sind dann zu C gewechselt und haben uns sehr genau über den Zustand informiert, warum er nützlich ist und warum er die Dinge möglicherweise sehr kompliziert macht. Einige Universitäten sprechen also von Staat, aber nicht unbedingt von allen

Oleksi
quelle
1

Sie können die Analogie einer Ampel verwenden, die sich in einem von drei Zuständen befinden kann: [GRÜN], [GELB] oder [ROT]. Es darf sich immer nur in einem Zustand befinden. Die Ampel ist die tatsächlich modellierte Zustandsmaschine. Normalerweise wechselt der Status von [GRÜN nach GELB], dann von [GELB nach ROT] und dann von [ROT nach GRÜN].

Bildbeschreibung hier eingeben

Ein alternativer Zustandsübergang (der in einigen Ländern wie Großbritannien in Kraft ist und zwei Übergänge von [ROT nach GELB, dann GELB nach GRÜN] anstelle des Übergangs von [ROT nach GRÜN] aufweist.

dodgy_coder
quelle