Pascal ist eine Programmiersprache, die 1968 bis 1972 von dem Schweizer Informatiker Niklaus Wirth entwickelt wurde. Sie ist nach Blaise Pascal benannt.
Ein zweiter Pascal-Compiler - der P4 "Portable Pascal Compiler" von Urs Ammann, Kesav Nori und Christian Jacobi - stammte ebenfalls von der ETH Zürich. Der P4 erzeugte eine plattformunabhängige, an Assembler erinnernde Zwischensprache, den P-Code, der durch die sogenannte virtuelle Maschine (ein Programm) interpretiert wird. Später entstanden dann Compiler, die auf dem P4 basierten. Die bekannteste Version wurde unter dem Namen UCSD-Pascal bekannt, das auf vielen Systemen implementiert wurde, u.a auf Apple II und Texas Instruments TI-99/4A. Im Mai 2006 wurden die Sourcen von UCSD-Pascal freigegeben. 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 zeichnet sich durch eine strikte und einfach verständliche Syntax aus, sowie dadurch, dass es keine kontextabhängigen Interpretationen des Codes gibt. Somit erlaubt 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, ist die starke Typisierung (strong typing): Variablen sind bereits zur Übersetzungszeit einem bestimmten Datentyp zugeordnet und dieser kann nicht nachträglich verändert werden.
Typenstrenge bedeutet, dass Wertzuweisungen ausschließlich unter Variablen gleichen Typs erlaubt sind. In Pascal gibt es von diesem strikten Zwang lediglich zwei Ausnahmen:
Pascal kennt als einfache Datentypen char, boolean, integer, real und ordinale Datentypen. In Dialekten wurden die einfachen numerischen Datentypen teilweise erweitert, um passende Wortlängen abzudecken. Strukturierte Datentypen sind array, record, set (Mengen) und file. Der Datentyp text entspricht der Definition file text = file of char;
Charakteristisch für Pascal war das Konzept der Verschachtelung von Prozeduren und Funktionen. Im Deklarationsteil einer Prozedur bzw. Funktion konnten andere Prozeduren und Funktionen auftauchen. Dabei gibt es klar verständliche Prinzipien über die Sichtbarkeit von Deklarationen in übergeordneten Funktionen und Prozeduren.
Kontrollstrukturen sind if then else, case (in Dialekten mit einem else bzw. otherwise versehen), for, repeat, while und goto. Da Pascal der strukturierten Programmierung dient, soll das Goto lediglich strukturerhöhend eingesetzt werden. Pascal unterstützt in seiner Urform keine Anweisungen, mit denen Prozeduren oder Schleifen hart verlassen werden können. Als strukturerhöhendes goto werden Sprünge ans Ende von Prozeduren oder unmittelbar hinter Schleifendenden akzeptiert, sofern sich dadurch umfangreiche Konstruktionen schlecht lesbarer if-Anweisungen oder undurchschaubarer boolescher Ausdrucke vermeiden lassen. Viele Pascal-Compiler erlauben keine goto, die zu instabilen Systemzuständen führen, z. B. der Sprung in den Anweisungsblock einer Schleife oder eines if.
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.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 verschiedene Freeware-Implementationen, z. B. Virtual Pascal, welches aber im Unterschied zu Free Pascal und GNU Pascal nicht mehr weiter entwickelt wird oder auch Dev-Pascal, dessen Entwicklung bei der Version 1.9.2 stehengeblieben ist.
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 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.
program Hallo(input, output); begin writeln('Hallo Welt'); readln end.
Detail am Rande: In manchen alten Beispielen findet man ein READLN- nach dem WRITELN-Befehl. Das war nur notwendig, weil die I/O-Architektur der CDC-Cyber 6000, auf der Wirth den ersten Pascal-Compiler entwickelte, das benötigte, um die internen Buffer zu leeren - sonst wäre im interaktiven Betrieb kein Output zu sehen gewesen. IDEs konnte man mit diesem READLN zwingen, am Ende der Programmausführung nicht sofort wieder in den Editor-Modus umzuschalten, was den Output bei manchen IDEs (z. B. Turbo-Pascal) sonst hätte verschwinden lassen. Im Batch-Betrieb war das ohnehin nie notwendig.
Programmiersprache Pascal | Programmiersprache
Lenguache de programazión Pascal | باسكال (برمجة) | Pascal | Паскал (език) | Pascal (programovací jazyk) | Pascal (programmeringssprog) | Pascal programming language | Paskalo (programlingvo) | Lenguaje de programación Pascal | Pascal | Pascal programazio lengoaia | زبان برنامهنویسی پاسکال | Pascal (ohjelmointikieli) | Pascal (langage) | Linguaxe Pascal | פסקל (שפת תכנות) | Pascal programozási nyelv | Pascal (bahasa pemrograman) | Pascal (linguaggio) | Pascal | 파스칼 프로그래밍 언어 | Pascal | Паскал | Pascal (programmeertaal) | Pascal (język programowania) | Pascal (linguagem de programação) | Limbajul Pascal | Паскаль (язык программирования) | Pascal (programovací jazyk) | Programski jezik pascal | Програмски језик Паскал | Pascal (programspråk) | ภาษาปาสกาล | Pascal (programming language) | Pascal programlama dili | Pascal (мова програмування) | Pascal (ngôn ngữ lập trình) | Pascal
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Pascal (Programmiersprache)".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world