Der Epina Delphi-Kurs bietet Ihnen eine allgemeine Einführung in das Programmieren mit Delphi/Pascal. Mit vielen ausgearbeiteten Beispielen können Sie direkt in die Delphi-Programmierung einsteigen. Mehr dazu finden Sie hier....

Einordnung von Delphi

Da Delphi mehr ist als eine Programmiersprache, lässt sich Delphi auch nicht exakt einordnen. Die Basissprache (Pascal) zählt man zu den Sprachen der 3. Generation, andere Teile von Delphi (z.B. Object-Pascal, die visuellen Komponenten, oder die SQL-Anbindung) zählen zur 4. Generation.

Persönl. Anmerkung: Delphi wird manchmal auch als hybride Programmiersprache bezeichnet. Meine Meinung ist hier sehr akzentuiert: Wer so etwas behauptet zeigt nur, dass er keine Ahnung von Delphi und von Programmieren im Allgemeinen hat. Delphi ist keine Programmiersprache, Delphi ist ein Entwicklungssystem, das sich der Sprache Pascal und deren Weiterentwicklung Object-Pascal bedient.

Um Delphi besser einordnen zu können, sind im Folgenden die einzelnen Generationen von Programmiersprachen beschrieben.

1. Generation: Maschinensprachen

Unter Maschinensprache versteht man die Bitkombinationen, die von der CPU (central processing unit = Mikroprozessor) als Befehle verstanden und ausgeführt werden. Die ersten Computer Ende der 1940er Jahre konnten nur in Maschinensprache programmiert werden. In Maschinensprache wird heute nicht mehr programmiert, da es für jeden CPU-Typ zumindest einen Assembler (siehe unten) gibt. Grundsätzlich ist jedes Programm, das direkt in Maschinensprache geschrieben wird extrem teuer (weil zeitaufwändig) und extrem schlecht zu warten.

Beispiel: 11001011
00110101
11100011
10111101

2. Generation: Assemblersprachen

Um die für den Menschen ziemlich schwierige Maschinensprache leichter zugänglich zu machen, hat man schon sehr früh die sogenannte Assemblersprache eingeführt. Dabei handelt es sich um eine 1:1 Entsprechung von sog. Mnemonics zu den Bits der Maschinensprache. Die Mnemonics können vom Menschen wesentlich leichter erlernt werden, zu mal Adressbezüge gesondert ausgewiesen werden. Für die Übersetzung der Assemblersprache in die Maschinensprache ist der sogenannte Assembler zuständig (den Vorgang nennt man "assemblieren").

Wichtig ist, dass die Assemblersprache immer exakt auf die jeweilige CPU zugeschnitten ist. Wenn man also eine Assemblersprache (zum Beispiel für die 68000er CPU-Familie) beherrscht, kann man keinesfalls Assembler für eine andere CPU-Familien (z.B. Intel Pentium). Um Assembler überhaupt sinnvoll einsetzen zu können, benötigt man sehr detailierte Kenntnisse des jeweiligen Mikroprozessors. Der Vorteil von Assemblersprachen liegt in der maximal möglichen Geschwindigkeit des erzeugten Codes. Daher wird Assembler auch nur an sehr zeitkritischen Stellen eingesetzt.

Beispiel: Das folgende Beispiel zeigt einen Ausschnitt aus einem Assemblerprogramm für die Pentium-Familie:
        PUSHFD
        POP     EAX
        MOV     EDX, EAX
        XOR     EAX, CPUIDID_BIT
        PUSH    EAX
        POPFD
        PUSHFD
        POP     EAX
        XOR     EAX, EDX
        JZ      @exit
        MOV     AL, TRUE

3. Generation: Hochsprachen

Hochsprachen zeichnen sich dadurch aus, dass die Programmiersprache unabhängig vom verwendeten Computer ist. Das Programm wird entweder vor der Ausführung (Compiler) oder während der Ausführung (Interpreter) in die Maschinensprache übersetzt. Manchmal - bei ganz alten Sprachen, wie Basic, und bei ganz neuen Ansätzen, wie .NET (sprich "dotnet") - wird nicht direkt in die Maschinensprache sondern in eine maschinenunabhängige Zwischensprache übersetzt.

Prozedurale Ansätze

Prozedurale Ansätze stellen den Algorithmus, also die Abarbeitung des Programms nach bestimmten von der Aufgabe erzeugten Vorgaben. Zu den prozeduralen Sprachen gehören Basic, Fortran, C, Pascal, und viele andere.

Beispiel:
Readln(kilometer);
Readln(liter);
verbrauch := 100*liter/kilometer;
if verbrauch > 7.0 then
  writeln "Verbrauch zu hoch!";

Objektorientierte Ansätze

Bei objektorientierten Ansätzen steht nicht der Algorithmus, sondern ein Datenobjekt im Mittelpunkt. Dieses Datenobjekt besitzt einerseits entsprechende Felder zur Speicherung der Daten und andererseits sog. Methoden zur Bearbeitung der Daten. Die Algorithmen (der Methoden) werden also zum Teil eines Objekts.

Objektorientierte Ansätze haben viele Vorteile, da von Vorneherein bestimmte Fehler vermieden werden. Die enge Verbindung zwischen Daten und Algorithmen entspricht außerdem mehr der Realität. Zu den objektorientierten Sprachen gehören Object-Pascal (Delphi), Java, C++ oder Smalltalk.

Deklarative Ansätze

Deklarative Ansätze werden manchmal auch als Sprachen zur künstlichen Intelligenz bezeichnet (was aber stark irreführend ist). Solche Sprachen, wie z.B. Lisp, Prolog, oder DataLog verfolgen jeweils eigene Ansätze, die ganz spezielle Merkmale aufweisen. So ist Lisp auf die Bearbeitung von Listen spezialisiert und erlaubt selbst-modifizierenden Code. Prolog dient zur Auflösung logischer Ausdrücke, und Datalog dient als Programmiersprache für relationale Datenbanken.

Last Update: 2008-09-09