Suchen

Definition „Programming Error“ Was ist ein Programmierfehler?

| Autor / Redakteur: zeroshope / Stephan Augsten

Programmierfehler betreffen den Code einer Software. Dieser wird falsch umgesetzt, weshalb die Anwendung nicht wie erwartet funktioniert. Grundsätzlich sind fünf Programmierfehler-Typen zu unterscheiden. Diese können sich gegenseitig bedingen.

Firma zum Thema

Software Bugs gehen oft mit Programmierfehlern einher.
Software Bugs gehen oft mit Programmierfehlern einher.
(Bild: JohnArtsz / Pixabay )

Wohl jeder Nutzer hat schon einmal einen „Bug“ erlebt. Der Bildschirm flackert beispielsweise kurz, dann stürzt das derzeit laufende Programm ab. Hintergrund solcher Bugs, die selbst auch Software- oder Programmfehler heißen, sind Programmierfehler.

Die Begriffe werden oft synonym verwendet, die Grenzen sind fließend. Ein Laufzeitfehler ist beispielsweise zwar ein Softwarefehler, aber nicht zwingend ein Programmierfehler, da er auch durch einen falschen Programmaufruf oder fehlerhafte Eingaben provoziert werden kann.

Der Begriff Programmierfehler impliziert, dass der Code der Software (oder in ernsten Fällen: der Firmware) fehlerhaft umgesetzt wurde. Die Entwickler haben an irgendeiner Stelle eine der Anforderungen der Sprache nicht beachtet, in der sie den Code des Programms verfasst haben. HTML 5 oder auch Java-Script sind Beispiele für Sprachen, in denen Endnutzer häufig Bugs erleben, da diese in der Webentwicklung eine wichtige Rolle spielen.

Arten von Programmierfehlern

Grundsätzlich sind fünf unterschiedliche Arten von Programmierfehlern zu unterscheiden. Problematischerweise können sich diese gegenseitig bedingen. Doch der Reihe nach. Erst einmal seien die fünf Typen genannt und erläutert:

1. Lexikalischer Fehler: Dies ist der einfachste und wohl am schwierigsten aufzufindende Bug. Irgendwo wurde ein Rechtschreibfehler gemacht. Häufig ist es die Groß- und Kleinschreibung, die Probleme macht, aber auch Buchstabendreher fallen auch in diese Kategorie.

2. Syntaktischer Fehler: Die „Grammatik“ der Sprache ist falsch. Im Klartext bedeutet dies: Ein syntaktischer Fehler beschreibt einen falschen Satzbau. Positiv: Compiler und Interpreter können dies erkennen und weisen den Code im Testlauf sofort zurück, um auf den Fehler aufmerksam zu machen.

3. Semantischer Fehler: Dieses Problem entsteht, wenn mit Variablen gearbeitet wird, die vorher nicht definiert wurden. Deshalb ergibt der Code keinen Sinn, obwohl ansonsten eigentlich alles stimmt. Als drastisches Beispiel: „Die Sonne fährt heute Auto.“ Alles passt, trotzdem ist der Satz Unsinn. Wenn die „Sonne“ allerdings eine Variable ist und als „Herr Schulz“ definiert wird, so lautet der Satz: „Herr Schulz fährt heute Auto.“ Nun passt es wieder – der semantische Fehler ist beseitigt.

4. Laufzeitfehler: Diese Probleme treten beim Programmablauf auf und können von Compilern nicht erkannt werden. Sie führen gängig zu einem Abbruch der Anwendung. Laufzeitfehler passieren bei sogenannten „unmöglichen Operationen“ – beispielsweise bei dem Versuch der Division durch Null. Sie lassen sich per Debugger ausfindig machen.

5. Logischer Fehler: Es werden Rechenoperationen vertauscht, wodurch die Befehlskette keinen Sinn ergibt. Bei der Prozentrechnung wird beispielsweise eine Addition statt einer Multiplikation vom Programm angefordert. Das Problem dabei: Weder Debugger noch Compiler können einen logischen Fehler erkennen. Dies ist ausschließlich durch einen ausführlichen Programmtest möglich.

Sich gegenseitig bedingende Fehlerbilder

Ein lexikalischer und syntaktischer Fehler können sich beispielsweise gegenseitig bedingen. Schließlich kann eine andere Schreibweise eines Wortes zu einem anderen Sinn führen und wird deshalb nicht notgedrungen als Rechtschreibfehler erkannt. „Car“ statt „Var“ ist hierfür ein Beispiel. Dadurch kann ein semantischer Fehler entstehen, weil dadurch eine Variable nicht definiert wurde. Bei der „Bugjagd“ sollte deshalb nicht nur nach einem Fehlertyp gesucht werden. Es ist stets zu überprüfen, ob diese auch zu anderen Problemarten geführt haben.

(ID:46661375)