Programmiersprachen
Welche Mechanismen sollen in die Sprache eingebaut werden ?
- Systemprogrammiersprachen wie C/C++ bauen möglichst wenig ein.
-
Stattdessen gibt man dem Programmierer Abstraktionsmechanismen in die
Hand, mit denen er sich selber die Datenstrukturen bauen kann, die er
braucht. Natürlich gibt es Bibiotheken von bewährten Algorithmen und Datenstrukturen.
Vorteile:
- Sprache ist klein und Compilerbau einfach, Compiler ist leichter
portierbar
- Ablaufsystem ist so gut wie nicht vorhanden. Damit fällt man nicht
auf teure Operationen herein.
(Gegenbeispiele: JOIN bei SQL, Konstruktoraufrufe in C++)
- In der Systemprogrammierung, d.h. Betriebssystemkern, Compilerbau,
Ablaufsysteme, Datenbanken müssen die Abstraktionen des
Ablaufsystems erst noch hergestellt werden
- Man kann alle Mechanismen vom Betriebssystem, usw. nutzen
Nachteilig ist, daß man sich eben um alles selber kümmern muß.
Deshalb sei die Lehre verworfen, daß Anwendungsprogramme in C/C++
geschrieben werden sollen und daß Anfänger C/C++ lernen
- Problemorientierte Sprachen bauen alles ein
-
Vorteil:
- Der Compiler hat volle Kontrolle über den Ausdruck.
Dies ist die Grundlage, damit optimiert werden kann.
(Beispiel: SQL Zugriffspfadoptimierung)
- Die Syntax kann sehr schön sein und dem Nutzer für sein
Gebiet optimal nach dem Mund reden.
(Beispiel für Übertreibung: COBOL)
Nachteil: Sobald der Programmierer sich außerhalb des gedachten Gebietes
bewegt, kommen fürchterliche Programme heraus.
Entwicklung
Die problemorientierten Sprachen sind gegenüber den universellen Sprachen
zurückgedrängt worden, wahrscheinlich, weil mit der Objektorientierung
der sehr leistungsfähiger Mechanismus der Datenzugriffsabstraktion aufgekommen ist.
Zur Optimierung von Sprachkonstrukten empfiehlt sich folgendes Vorgehen:
Diese Sprachkonstrukte werden ausgelagert in Spezifikationsprachen.
Dazu gibt unabhängige Generatoren, die dann Code in der Systemprogrammierungsspache erzeugen:
Bsp:
- Scannergenerator lex
- Parsergenerator yacc
- Protokollgeneratoren rpcgen für SUN-RPCS und IDL-Compiler für CORBA
- GUI-Designer
Diese sind einfacher und flexibler und müssen nicht in den Sprachcompiler
integriert werden. Im Prinzip handelt es sich hier um Spezialsprachen, die
nur einen sehr wichtigen Aspekt abdecken und keinen Universalitätsanspruch haben. Die Erfahrung zeigt, daß man mit dieser Bescheidenheit gut fährt.
(Bemerkung: Da es für die Programmiersprache C viele Tools gibt,
ist sie heute in aller Munde)
Informatik- und Netzwerkverein Ravensburg e.V
Rudolf Weber