Programmiersprachen: Syntax, Semantik und Konzepte
Classified in Informatik
Written at on Deutsch with a size of 6,59 KB.
Orthogonalität in Programmiersprachen
Orthogonalität in der Informatik bedeutet, dass Sprachelemente ohne Einschränkungen oder Sonderfälle kombiniert werden können. Es gibt keine ungültigen Kombinationen. Programmierer müssen wissen, ob es Ausnahmen von der Regel gibt.
Beispiel für mangelnde Orthogonalität
Parameter werden automatisch als Wert übergeben, Arrays jedoch automatisch als Referenz.
Vorteile der Orthogonalität
- Einfach zu erlernen.
- Ermöglicht einfaches Schreiben, da keine Ausnahmen und Sonderfälle zu beachten sind.
Nachteile der Orthogonalität
Kann zu vielen Einschränkungen führen, insbesondere beim Umgang mit komplexen Daten, obwohl der Code fehlerfrei kompiliert wird.
Syntax und Semantik von Programmiersprachen
Syntaktische Klarheit
Eine Anweisung oder Operation sollte nicht mehrere Schreibweisen in derselben Sprache haben.
Semantik einer Programmiersprache
Die Semantik einer Programmiersprache ist die Bedeutung, die jeder Anweisung, Operation usw. zugeordnet ist.
Orientierung
Bereitstellung einer Syntax, um die Ausrichtung der Sprache (Geschichte, Engagement für die Menschen) zu unterstützen.
Erweiterung
Erleichterung der Implementierung von Strukturen, die in der Funktion, die sie bietet, nicht vorhanden sind. Ermöglicht es dem Benutzer, eigene Datentypen und Operatoren zu definieren.
Portabilität
Die Fähigkeit, ein Softwareprogramm auf verschiedenen Computern zu verwenden.
Effizienz in Programmiersprachen
Effizienz in der Übersetzung
Schnelle Kompilierung (wichtig für ausbildungsorientierte Programmiersprachen).
Effizienz in der Ausführung
Wichtig für Programmiersprachen, die in Routinen mit hoher Auslastung verwendet werden, z. B. bei der Schlüsselüberprüfung.
Effizienz in der Konstruktion
Programmiersprachen, die eine schnelle und klare Konstruktion von Programmen ermöglichen und bei der Diagnose unterstützen.
Syntax von Programmiersprachen
Die Syntax besteht aus Regeln, die bestimmen, ob die Anweisungen eines Programms wohlgeformt sind oder nicht. Ziel ist es, die Kommunikation zwischen dem Programmierer und dem Compiler zu ermöglichen.
Compiler-Mechanismus
Der Compiler ist der Mechanismus, der bestimmt, ob das Programm gut geschrieben ist.
Syntaktische Kriterien
- Lesbarkeit: Programmiersprachen sollten leicht vom Programmierer interpretiert werden können.
- Schreibbarkeit: Einfaches Schreiben von Elementen, nicht weit hergeholt.
- Übersetzungsfreundlichkeit: Der Compiler sollte wenig Maschinencode generieren.
- Eindeutigkeit: Eine Struktur oder Anweisung sollte nicht mehr als eine Bedeutung haben.
Syntaktische Elemente
Zeichen, Bezeichner, Operatorsymbole, Schlüsselwörter, reservierte Wörter, Kommentare, Abkürzungen, Trennzeichen, Phrasen, Sätze.
Bezeichner
Grundlegende Kenntnisse über die Programmiersprache. Die maximale Anzahl von Symbolen ist in der Version definiert. Längere Bezeichner erhöhen die Lesbarkeit, wenn sie aus verschiedenen Zeichen bestehen.
Schlüsselwörter
Ein Schlüsselwort ist ein Bezeichner, der den unveränderlichen Teil einer Anweisung bildet. Ein Schlüsselwort ist nicht als Benutzer-ID meldepflichtig. Vorteile: Die syntaktische Analyse ist einfacher und die Fehlererkennung effizienter.
Kommentare
Kommentare dienen der Selbstdokumentation des Quellcodes.
Abkürzungen
Abkürzungen dienen der Verbesserung der Lesbarkeit.
Trennzeichen
Trennzeichen werden verwendet, um eine syntaktische Einheit zu markieren. Vorteile: Sie verbessern die Lesbarkeit, vereinfachen das Parsen und helfen, Unklarheiten zu beseitigen.
Festes und freies Format
- Festes Format: Die Anweisung muss in einem bestimmten Teil der Zeile stehen.
- Freies Format: Die Anweisungen können ohne Rücksicht auf ihre Position oder Länge aufgezeichnet werden.
Ausdrücke
Bezeichner, Ausdrücke, Variablen.
Imperative Ausdrücke in Programmiersprachen
Bilden die grundlegenden Operationen, die Anweisungen, die den Zustand der Variablen ändern können.
Ausdrücke in funktionalen Programmiersprachen
Bilden die grundlegende Ablaufsteuerung, die die Ausführung eines Programms verwaltet.
Einfache und strukturierte Sätze
- Einfacher Satz: Erlaubt keine verschachtelten Anweisungen.
- Strukturierter Satz: Erlaubt verschachtelte Anweisungen.
Grammatik
Die Grammatik ist die formale Definition der Syntax einer Programmiersprache. Sie besteht aus einer Reihe von Regeln, die die Schreibregeln angeben.
Metasprache
Eine formale Grammatik zur Beschreibung anderer Sprachen (BNF, Syntaxdiagramme, CBL).
BNF (Backus-Naur-Form)
Wird verwendet, um kontextfreie Grammatiken auszudrücken, eine formale Methode zur Beschreibung formaler Sprachen. Wird als Notation für die Grammatiken von Programmiersprachen, Betriebssystemen und Kommunikationsprotokollen verwendet.
BNF-Notation
<>
: Nicht-terminales Symbol.::=
: Ist definiert als.|
: Oder.()
: Wiederholung (mindestens n-mal).- Bezeichner: Schlüsselwort oder konstantes Terminal.
Die Symbole <
, >
, |
, ()
, ::=
sind keine Bestandteile der definierten Sprache, sondern des Beschreibungsmechanismus und werden als Metasymbole bezeichnet.
Beispiel einer For-Schleife in BNF
<for-Schleife> ::= for (<Initialisierung>; <Bedingung>; <Inkrement>) <Anweisung>
Initialisierung ::= (<Ausdruck>, <Ausdruck>)
Bedingung ::= (<Ausdruck>, <Ausdruck>)
Inkrement ::= (<Ausdruck>, <Ausdruck>)
Anweisung ::= <einfach> | <zusammengesetzt>
einfach ::= <Ausdruck> (; <Ausdruck>)
zusammengesetzt ::= (<einfach> (; <einfach>))
Ausdruck ::= <Zuweisungsausdruck> | <Inkrementausdruck> | <Bedingungsausdruck>