Zum Inhalt springen

Pascal (Programmiersprache)

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 3. Juni 2005 um 10:41 Uhr durch Dr.tux (Diskussion | Beiträge) (Hallo Welt: +Bemerkung). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Pascal ist eine Programmiersprache, die 1968 bis 1972 von dem Schweizer Informatiker Niklaus Wirth entwickelt wurde. Sie ist nach Blaise Pascal benannt.

Allgemeines zur Sprache

Pascal ist eine Weiterentwicklung von ALGOL. Das wichtigste Konstruktionsprinzip war, die Sprache so einfach wie möglich zu gestalten, damit sie in der Ausbildung genutzt werden konnte. Gleichzeitig sollte strukturierte Programmierung möglich sein. Alle Variablen müssen vor der Benutzung deklariert werden. Der erste Pascal-Compiler selbst entstand auf der CDC Cyber 6000 ETH Zürich. Daraus entstand dann Pascal 6000, welches als erste operative Version eines Compilers der Sprache gesehen werden kann.

Später entstanden dann Compiler,die eine plattformunabhängige, assemblerähnliche Zwischensprache erzeugten, den P-Code. Die bekannteste Version wurde unter dem Namen UCSD-Pascal bekannt.

Bei den meisten Pascal-Compilern handelte es sich um so genannte Ein-Pass-Compiler, d. h., der Compiler muss die Quelle nur ein einziges Mal lesen und analysieren. Das Design der Sprache war so gehalten, um genau das zu ermöglichen. Bei der damaligen Geschwindigkeit der Rechner war dies ein großer Vorteil.

Pascal zeichnete sich durch die strikte und einfach verständliche Syntax aus, sowie dadurch, dass es keine kontextabhängigen Interpretationen des Codes gab. Somit erlaubte Pascal im Vergleich zu Sprachen wie C und Fortran eine gute Lesbarkeit und verglichen mit Fortran auch eine bessere Unterstützung von strukturierter Programmierung. Ein wichtiges Konzept, das Wirth dabei zur Anwendung brachte, war die starke Typisierung (strong typing): Variablen sind bereits zur Übersetzungszeit einem bestimmten Datentyp zugeordnet und dieser kann nicht nachträglich verändert werden.

Da die Sprache ursprünglich nur als Lehrsprache konzipiert war, wies das Standard Pascal (wie es N. Wirth definierte) einige Mängel auf, die den kommerziellen Einsatz schwieriger machten: Das File-I/O-Konzept war schwach, die Laufzeitbibliothek eher rudimentär (im Vergleich zur C-Bibliothek), und Zeichenketten konnten nur über seltsame Umwege (packed array) direkt im Code verwendet werden. Das führte dazu, dass praktisch jede kommerzielle Implementierung das auszumerzen versuchte und damit einen neuen Pascal-Dialekt produzierte - und diese Dialekte waren nur sehr bedingt zueinander kompatibel.

Ein anderer wesentlicher Nachteil der ursprünglichen Implementierung war, dass eine Modularisierung im Sinne getrennter Compilierung nicht vorgesehen war - ein Manko, das mit der Weiterentwicklung Modula-2 behoben wurde. Plattformspezifische Implementierungen sahen für diese Lücke ebenfalls immer eine Lösung vor (z.B. die Units von Turbo-Pascal, oder später die Module in ANSI/ISO Extended Pascal).

Trotz dieser Hindernisse erlebte Pascal eine Blütezeit, als die Firma Borland eine Version mit dem Namen Turbo Pascal publizierte, in der die ursprünglich nur zu Lehrzwecken geschaffene Sprache so stark erweitert wurde, dass viele weit verbreitete Programme damit entwickelt wurden. U. a. wurde dabei auch in der Version 5 die Objektorientierung in Pascal eingeführt.

Pascal hatte von Anfang an im universitären Bereich sehr großen Erfolg, was sich u. a. auch in der Programmiersprache Ada, die sehr stark an der Syntax von Pascal angelehnt ist, niederschlug.

Heute gibt es auch verschiedenen Freeware-Implementationen, z. B. Virtual Pascal, welches aber im Unterschied zu Free Pascal nicht mehr weiter entwickelt wird.

Standards

Es gibt 3 Standards, die sich auf Pascal beziehen:

  1. Standard Pascal: ANSI/IEEE770X3.97-1993 oder ISO 7185:1990
  2. Extended Pascal: ANSI/IEEE770X3.160-1989 oder ISO/IEC 10206:1991
  3. sowie einen Entwurf zu „Object-Oriented Extensions to Pascal“

Allerdings sind nur die wenigsten Compiler zu diesen Standards kompatibel. Diese Tatsache verleitete Scott A. Moore zu der bissigen Bemerkung „Pascal is, unfortunately, very much a 'great improvement on its successors'“ („Pascal ist leider so ziemlich eine 'große Verbesserung seiner Nachfolger'“ -- damals bereits ein geflügelter Satz, der schon früher über ALGOL oft gesagt worden war).

Selbst großen Compilern wie Delphi oder FreePascal fehlen bis heute einige Elemente aus Standard Pascal, während Extended Pascal von kaum einem unterstützt wird. Lediglich Prospero Pascal ist vollständig kompatibel zu Extended Pascal, während auch GNU-Pascal vollständige Kompatibilität anstrebt.

Free Pascal

Hauptartikel: Free Pascal

Free Pascal ist eine frei zugängliche hoch entwickelte Implementierung der Programmiersprache Object Pascal. Free Pascal ist objektorientiert und weitgehend Delphi-7-kompatibel. Dadurch, dass es sich hierbei um einen Compiler handelt, der im Gegensatz zu Java und insbesondere zu .NET-Sprachen keinen zu interpretierenden Zwischencode erzeugen muss, unterliegt der Entwickler und der Anwender bei Ausführen des Programms nicht der Kontrolle so genannter Runtime-Engines, deren Kontrollaktivitäten sich eventuell dem Anwender/Entwickler entziehen.

Als Entwicklungsumgebung für Free Pascal, die auch verschiedene Komponenten zur Verfügung stellt, ist zurzeit zum Beispiel Lazarus verfügbar, welches sehr Delphi-ähnlich gestaltet ist und das GTK+ als Grafik-Toolkit verwendet.

Hallo Welt

Das Beispielprogramm Hallo Welt sieht in Pascal folgendermaßen aus:

PROGRAM Hallo (output);
BEGIN
  WRITELN ('Hallo Welt');
  READLN;
END.

Detail am Rande: Das READLN ist eigentlich nicht notwendig. DIe I/O Architektur der CDC Cyber 6000, auf der Wirth den ersten Pascal Compiler entwickelte, brauchte das aber, um die internen Buffer zu leeren - sonst wäre im interaktiven Betrieb kein Output zu sehen gewesen. Im Batch-Betrieb war dieses Statement ohnehin nie notwendig.

Weiterentwicklungen

Literatur