Es gibt verschiedene Arten von Programmiersprachen, oder besser gesagt man kann sie auf unterschiedlicher Art und Weise klassifizieren. Eine Art zur Klassifikation ist die Einteilung in Generationen.
Es gibt folgende Generationen:
- Generation: binäre Maschinensprache
- Generation: Assemblersprachen/Maschinenorientierte Sprachen
- Generation: Prozedurale Sprachen/problemorientierte Sprachen
- Generation: Nichtprozedurale Sprachen/anwendungsbezogen
- Generation: Sprachen der KI und der Objektorientierung
- Generation: Skriptsprachen
Außerdem kann man sie nach Arbeitsweise unterscheiden, also ob sie prozedural, nicht prozedural, objektorientiert, oder wissensbasiert arbeiten oder, ob die Sprache eine Skriptsprache ist.
Des weiteren kann man nach Programmierparadigma unterscheiden:
- strukturierte Programmierung: Steueranweisungen (Bedingungen, Schleifen), Konzepte für Unterroutinen/Prozeduren
- objektorientierte Programmierung: Objekte und Klassen, Datenkapselung, Vererbung, Polymorphie (Java)
- funktionale Programmierung: nur Funktionen als Anweisungen (LISP)
- logische (prädikative) Programmierung: Beschreibung von Aussagen (keine Abläufe)
Eine weiter Möglichkeit (und auch die letzte die ich nenne) ist die Unterscheidung nach Übersetzung. Damit ein Code auch von einem Zielsystem ausgeführt werden kann, muss der Quellcode zunächst in die Maschinensprache des Rechners übersetzt werden, den umgewandelten Code nennt man dann Zielcode. Diese Übersetzung geschieht durch Übersetzungsprogramme: Compiler oder Interpreter.
Compiler: übersetzt das gesamte Quellprogramm in ein ausführbares Zielprogramm. Dabei muss das Programm komplett fehlerfrei sein. Die meisten Sprachen der Software-Entwicklung werden compiliert (z.B. Pascal) . Übersetzte Sprachen haben eine stark ausgeprägte statische Semantik: Der Übersetzer prüft die Regeln der statischen Semantik (z.B. Bindungs- und Typregeln) .
Interpreter: übersetzt jeweils eine einzelne Anweisung eines Programms (kein Zielprogramm). Die Anweisungen werden sofort ausgeführt (z.B. Basic). Sprachen, die interpretiert werden haben eine einfache Struktur und keine statische Semantik, Bindungs- und Typregeln werden erst zur Ausführung geprüft und nicht ausgeführte Programmteile bleiben ungeprüft. Manche Interpretierer erzeugen vor der Ausführung eine interne Repräsentation des Satzes (Programms) und können so Struktur und Regeln der statischen Semantik vor der Ausführung prüfen( z.B. PHP, JavaScript). Interpretierer können auf jedem Rechner verfügbar gemacht werden und in andere Software (z.B. in Browser) integriert werden. Die Interpretation kann wesentlich langsamer sein, als die Ausführung von übersetzten Programmen im Maschinencode .
Java und C# wenden eine Mischung aus beiden an. Wie beim Interpreter wird der Quelltext in Hardware-unabhängige VM-Anweisungen (Bytecode) übersetzt. Bei der Ausführung dieser Anweisungen durch den JIT-Compiler werden die Anweisungen in Maschinencode übersetzt.
HTML, wie auch XML gehören zu den sogenannten Auszeichnungssprachen (engl. markup language). Diese sind maschinenlesbare Sprachen für die Gliederung und Formatierung von Texten und anderen Daten Mit Auszeichnungssprachen werden Eigenschaften, Zugehörigkeiten und Darstellungsformen von Abschnitten eines Textes (Zeichen, Wörtern, Absätzen usw., den sog.„Elementen“) oder einer Datenmenge beschrieben. Dies geschieht in der Regel, indem sie mit Tags markiert werden.
Nun zu den Skriptsprachen. Scripting ist das Zusammensetzen von Kommandos für kleinere Aufgaben und diese sind wiederverwendbar. Die Anforderungen von Skriptsprachen sind: Kleine, einfache Aufgaben lösen ohne komplexe Algorithmen und Datenstrukturen , Existierende Funktionen zu nutzen und zu verknüpfen, auf Sicherheit und prüfbarer Regeln, Textverarbeitung und Eingabe/Ausgabe sind wichtig, wie auch gute Verfügbarkeit und Handhabbarkeit. Skriptsprachen sind leicht zu erlernen, da – es wenige Konstrukte und wenige Regeln gibt und es sich um kurze Programme handelt. Diese Art von Programmiersprachen hat ihren Ursprung aus der Kommandosprache der Betriebssysteme. Skriptsprachen werden interpretiert und sind ohne vorherige Übersetzung ausführbar. Der Skriptcode wird zeilenweise bei der Interpretation übersetzt.