Syntax, statische und dynamische Semantikfehler

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
PyPaiX
User
Beiträge: 9
Registriert: Dienstag 13. Oktober 2020, 00:44

Servus,
ich habe ein kleines Problem mit dem vollständigen Verständnis von Fehlergruppen in Python. Kann jemand meine kleine Erklärung der Fehlertypen erweitern bzw. verbessern.

Lexikalischer Fehler: Rechtschreibfehler wie z.B pirnt("Hello World")
Syntaktischer Fehler: Grammatikfehler z.B else ... if
statisch Semantischer Fehler Inhaltsfehler in der Grammatik des Programms und wird von der Shell vor dem Laufen erkannt z.B wenn die Variable x nicht definiert ist.
dynamisch Semantischer Fehler: hier hab ich ein Problem, kann mir das jemand kurz erklären? Ist es das identische wie statisch, nur wenn es aber läuft?
Sirius3
User
Beiträge: 17761
Registriert: Sonntag 21. Oktober 2012, 17:20

Ich verstehe nicht was du mit "statisch Semantischer Fehler Inhaltsfehler" meinst. Python ist eine weitgehend dynamische Sprache, so dass viele Fehlergruppen, die in anderen Sprachen zur Compilezeit erkannt werden, erst zur Laufzeit erkannt werden. Es gibt eigentlich nur Syntaxfehler, die der Compiler erkennt. Falsch geschriebene Namen führen zu einem NameError, AttributeError, UnboundLocalError, ganz anderen Fehlern oder gar keiner Fehlermeldung, sondern nur falschem Verhalten.
Ein Programm kam halt auf sehr vielfältige Weise falsch sein.
Benutzeravatar
noisefloor
User
Beiträge: 3858
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ich verstehe die Frage nicht wirklich, also den Sinn der Frage... Es gibt einen ganzen Schwung Exceptions (=Fehler), die bei der Ausführung des Skripts auftreten können. Entweder, wenn der Python-Bytecode erzeugt wird oder wenn der abgearbeitet wird. Außerdem kann man im Code eigene Exceptions definieren.
Die Ausgabe, die bei einer Exceptions erscheint, sollte so aussagekräftig sein, dass man den Fehler erkennt und beseitigen kann.

Warum willst du die Fehler gruppieren?

Gruß, noisefloor
Benutzeravatar
__blackjack__
User
Beiträge: 13123
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@PyPaiX: Deine Beschreibung zu „statisch Semantischer Fehler“ ist falsch weil das a) kein grammatikalischer Fehler ist, der wäre nicht am Compiler vorbeigekommen, und b) falsche Namen nicht statisch vom Compiler erkannt werden, sondern erst zur Laufzeit zu einer Ausnahme führen.

Und auch Dein Beispiel für lexikalische Fehler ist falsch, denn `pirnt` ist einfach nur ein falsch geschriebener Name der zur Laufzeit zu einer Ausnahme führt. Also sofern es diesen Namen dann tatsächlich nicht gibt. Kann ja auch sein, das der Name tatsächlich definiert wird bevor er verwendet wird. Ein Grund mehr warum der Compiler so etwas gar nicht erkennen *kann*.

@noisefloor: So etwas ”will” man in der Regel wenn es auf dem Hausaufgabenzettel steht. 😉
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
nezzcarth
User
Beiträge: 1638
Registriert: Samstag 16. April 2011, 12:47

noisefloor hat geschrieben: Sonntag 8. November 2020, 12:13 Warum willst du die Fehler gruppieren?
Das ist nach meiner Kenntnis eine Nomenklatur, die eher im akademischen Bereich bzw. zu Lehrzwecken verbreitet ist; die Quellen dazu sind vor allem irgendwelche Vorlesungsfolien/-skripte und häufig mit Java-Bezug. Siehe für eine Variante z.B.: https://www.inf.unibz.it/~calvanese/tea ... node2.html
Antworten