www.wikidata.de-de.nina.az
Pascal ist eine Anfang der 1970er Jahre entwickelte imperative Programmiersprache PascalParadigmen imperativ strukturiertErscheinungsjahr 1971Designer Niklaus WirthEntwickler Niklaus WirthTypisierung stark statischDialekte UCSD Pascal Borland Pascal Turbo PascalBeeinflusst von ALGOLBeeinflusste Modula 2 Ada Oberon Object Pascal WEB Seed7Niklaus Wirth 2009 der Entwickler von PascalPascal wurde von Niklaus Wirth an der ETH Zurich als Lehrsprache eingefuhrt um die strukturierte Programmierung zu lehren 1 Inhaltsverzeichnis 1 Allgemeines 2 Syntax 2 1 Hallo Welt 2 2 Datentypen 2 2 1 Standarddatenypen 2 2 2 Selbstdefinierte Datentypen 2 2 3 Strukturierte Datentypen 2 2 4 Zeiger 2 3 Programmstrukturen 2 4 Kontrollstrukturen 2 4 1 Bedingte Anweisung und Verzweigung 2 4 2 Schleifen 3 Compiler 4 Besonderheiten 5 Standards 6 Pascal und Mac OS 7 Implementierungen Compiler Interpreter und IDEs 7 1 Freie Implementierungen 7 2 Integrierte Entwicklungsumgebungen 8 Geschichte 9 Kritik 10 Weiterentwicklungen 11 Literatur 12 Weblinks 13 EinzelnachweiseAllgemeines BearbeitenPascal ist eine Weiterentwicklung von Algol 60 Es lehnt sich in seiner Syntax an die englische Grammatik an Dies soll die Lesbarkeit fur Programmiereinsteiger verbessern Pascal ist daher als Lehrsprache geeignet Seine Verbreitung in der professionellen Programmierung fand es als Borland Turbo Pascal spater Object Pascal Jene sind gegenuber dem Ur Pascal wesentlich erweiterte Versionen Ein wichtiges Konzept der Fehlersicherheit das Wirth zur Anwendung brachte ist die starke Typisierung englisch strong typing Variablen sind bereits zur Ubersetzungszeit einem bestimmten Datentyp zugeordnet und dieser kann nicht nachtraglich verandert werden Typenstrenge bedeutet dass Wertzuweisungen ausschliesslich unter Variablen gleichen Typs erlaubt sind In Pascal gibt es von diesem strikten Zwang lediglich wenige Ausnahmen Wertzuweisungen der Form Variable vom Typ real Wert vom Typ integer In Extended Pascal Wertzuweisungen von ganzzahligen oder reellen Zahlen an Variablen vom Type Complex Wertzuweisungen von eingeschrankten Wertebereichen eines ordinalen Typs Beispiel type int10 1 10 Werte dieses Typs konnen dann Integervariablen zugewiesen werden Wertzuweisungen von Mengen eines eingeschrankten Wertebereiches eines ordinalen Typs Beispiel type set10 set of 1 10 set20 set of 1 20 Werte des Typs set10 konnen dann Variablen des Typs set20 zugewiesen werden Wertzuweisungen auf eingeschrankte Wertebereiche eines ordinalen Typs oder einer Menge In diesem Fall rufen Werte bzw Mengen Elemente ausserhalb des Zielbereichs einen Laufzeitfehler hervor Wertzuweisungen zwischen unterschiedlichen String Typen inkl Char Zeichen Arrays gemass Standard Pascal und den verschiedenen String Typen in Extended Pascal Borland Pascal usw Sofern die Lange des Wertes nicht innerhalb der Kapazitat des Ziels liegt ergibt sich auch hier ein Laufzeitfehler Heute findet Pascal noch im universitaren Bereich Entwicklung Ausbildung und in sicherheitskritischen Bereichen z B Verkehrstechnik Energieversorgung Medizintechnik Raumfahrt Militar teilweise im Banken und Versicherungswesen Anwendung Dies beruht hauptsachlich auf der guten Prufbarkeit und Wartbarkeit des Codes und der klaren Zuordnung der Variablen So war die 2005 eingefuhrte Betriebsleittechnik IV der 2011 stillgelegten Transrapid Versuchsanlage Emsland in Pascal programmiert Eine pascalahnliche Notation wurde in der Informatik und Mathematik zur Darstellung von Algorithmen benutzt 2 Aus didaktischen Grunden es seien hier die Typstrenge Fehlersicherheit und frei verfugbare portierbare Pascalcompiler Free Pascal GNU Pascal genannt wird im aktuellen Informatikunterricht Pascal ebenfalls noch eingesetzt 3 Im Hobby Bereich erlangte Pascal zeitweilig eine weite Verbreitung 4 Syntax BearbeitenHallo Welt Bearbeiten Ein Hallo Welt Programm sieht in Pascal folgendermassen aus program Hallo output begin writeln Hallo Welt end In neueren Pascal Versionen sieht das Programm so aus program Hallo begin writeln Hallo Welt end Ein 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 benotigte um die internen Puffer zu leeren sonst ware im interaktiven Betrieb keine Ausgabe zu sehen gewesen IDEs integrierte Entwicklungsumgebungen konnte man mit diesem READLN zwingen am Ende der Programmausfuhrung nicht sofort wieder in den Editor Modus umzuschalten was die Ausgabe bei manchen IDEs z B Turbo Pascal sonst hatte verschwinden lassen Im Batch Betrieb war das ohnehin nie notwendig Datentypen Bearbeiten Standarddatenypen Bearbeiten Datentyp Werteinteger Ganze Zahlen etwa 4 0 oder 17real Gleitkommazahlen etwa 0 4 oder 17 74445boolean die Werte true und falsechar ein einzelnes Zeichen etwa a oder fJeder Variablen muss in einer Variablendeklaration ein Datentyp zugeordnet werden Der Datentyp bestimmt welche moglichen Werte die Variable wahrend des Programmablaufs speichern kann In Pascal gibt es vier einfache Standardtypen namlich integer real boolean und char Die Lange der verschiedenen Datentypen ausser boolean sind abhangig vom Compiler Weiterhin haben viele Implementationen noch weitere vordefinierte einfache Datentypen Selbstdefinierte Datentypen Bearbeiten In Pascal ist es moglich neben den vier Standardtypen eigene einfache Datentypen zu definieren Dabei handelt es sich entweder um Aufzahlungstypen oder Ausschnittstypen Um einen neuen Aufzahlungstyp zu definieren schreibt man alle Werte die eine Variable dieses Typs speichern konnen soll der Reihe nach auf Im folgenden Beispiel wird ein neuer Typ mit dem Namen tBesteck definiert wobei das optionale t am Anfang fur den weiteren Programmverlauf klarstellen soll dass es sich um einen Namen eines Typs handelt tBesteck Gabel Messer Loeffel Einen Ausschnittstyp definiert man wenn der Wertebereich eines umfassenderen Typs nicht voll ausgeschopft wird Wenn eine Variable beispielsweise nur die Zahlen zwischen 0 und 255 speichern konnen soll so ist es moglich den Datentyp integer auf diese Teilmenge einzuschranken Im folgenden Beispiel wird ein neuer Typ mit dem Namen tByte definiert tByte 0 255 Strukturierte Datentypen Bearbeiten Pascal bietet Programmierern vier strukturierte Datentypen die es ermoglichen mehrere Werte in einer Variablen zu speichern In einem Feld array kann eine feste also wahrend der Laufzeit unveranderbare Anzahl von Werten gespeichert werden die alle vom selben Datentyp sein mussen Im folgenden Beispiel wird ein Feld definiert in dem maximal 100 ganze Zahlen abgespeichert werden konnen tBeispielFeld array 1 100 of integer In einer Menge set konnen ebenfalls Werte vom selben Datentyp gespeichert werden allerdings wird nur festgehalten welche Werte in der Menge enthalten sind wobei es nicht darauf ankommt wie oft ein einzelner Wert genannt wurde oder in welcher Reihenfolge die Werte genannt wurden Ein Beispiel fur die Definition einer Menge tBeispielMenge set of 13 55 In einem Verbund record kann eine feste Anzahl von Werten gespeichert werden wobei die Werte von verschiedenem Datentyp sein durfen Ein Beispiel einer Definition tPerson record Alter 0 150 Haarfarbe braun blond schwarz Groesse real kurzsichtig boolean end Eine beliebig lange Folge von Werten desselben Typs kann in Pascal mithilfe des Datentyps Datei file dargestellt werden Beispiel einer Definition tBeispielDatei file of integer Zeiger Bearbeiten Hauptzweck der Verwendung von Zeigern ist in Pascal das Erstellen von verschiedenen Datenstrukturen je nach den Vorstellungen des Programmierers So lassen sich mithilfe von Zeigern etwa Listen und Baume erstellen die bei der Speicherung von Daten Vorteile gegenuber Feldern Mengen Verbunden und Dateien bieten Ein weiterer Vorteil von Zeigern ist dass Zeigervariablen den von ihnen benotigten Speicherplatz wahrend der Laufzeit anfordern konnen Der Programmierer muss also nicht schon im Vorhinein definieren wie viel Platz die Variablen seines Programms bei der Ausfuhrung benotigen werden und kann grundsatzlich vom Minimum ausgehen uber das je nach Bedarfsfall hinaus erweitert wird Programmstrukturen Bearbeiten Charakteristisch fur Pascal ist das Konzept der Verschachtelung von Prozeduren und Funktionen Im Deklarationsteil einer Prozedur oder Funktion konnen andere Prozeduren und Funktionen definiert werden die ausserhalb nicht sichtbar sind Beispiel program HalloWelt procedure foo procedure bar begin writeln Hallo Welt end begin bar end begin foo kein Compilerfehler bar Compilerfehler da bar nicht sichtbar end Kontrollstrukturen Bearbeiten Bedingte Anweisung und Verzweigung Bearbeiten Als bedingte Anweisungen und Verzweigungen stehen in Pascal die if und die case Anweisung zur Verfugung Ein Beispiel einer if Verzweigung if 1 2 then writeln wird nicht ausgefuhrt else if 1 1 then writeln wird ausgefuhrt else writeln wird nicht ausgefuhrt Schleifen Bearbeiten Pascal bietet drei Arten von Schleifen Soll vor jedem Schleifendurchlauf eine Abbruchbedingung gepruft werden verwendet man die while Anweisung fur eine Prufung nach jedem Durchlauf die repeat Anweisung Fur eine vorgegebene Anzahl von Durchlaufen gibt es die for Anweisung while wert lt 100 do wert wert 1 for i 1 to 100 do wert wert 1 repeat wert wert 1 until wert gt 100 Die WITH Anweisung ist keine Schleife sie vereinfacht nur die Zugriffe auf Komponenten eines Record Sprunganweisungen konnen mit goto auch verwendet werden dessen Gebrauch jedoch umstritten ist siehe Artikel zu Sprunganweisungen Compiler BearbeitenPascal Compilern sind uberwiegend Single Pass Compiler d h die Quelle wird nur ein einziges Mal gelesen und analysiert Das Design der Sprache war so gehalten um genau das zu ermoglichen Bei der damaligen geringen Geschwindigkeit der Rechner Anfang der 1970er Jahre war dies ein grosser Vorteil Der erste Pascal Compiler entstand auf der CDC Cyber 6000 der ETH Zurich Daraus entstand dann Pascal 6000 das als erste operative Version eines Compilers der Sprache gesehen werden kann Ein zweiter Pascal Compiler der P4 Portable Pascal Compiler von Urs Ammann Kesav Nori und Christian Jacobi stammte ebenfalls von der ETH Zurich Der P4 erzeugte eine plattformunabhangige als Assemblersprache ausgelegte Zwischensprache den P Code der durch eine virtuelle Maschine ein Programm interpretiert wird Spater entstanden dann Compiler die auf dem P4 basierten Die verbreitetste 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 und wesentlich zur Verbreitung der Sprache sowohl zuerst in den Vereinigten Staaten spater auch in Europa beitrug Im Mai 2006 wurden die Quelltexte von UCSD Pascal freigegeben Besonderheiten BearbeitenSehr hohe ProzesssicherheitDa Pascal sowie der Quasi Standard Borland Turbo Pascal eine strikte Trennung unterschiedlicher Typen vorsehen und die Zuweisungskompatibilitat von Ausdrucken beachten kommen implizite Typumwandlungen anders als in C praktisch nicht vor Insbesondere bei der Ubergabe von Daten z B aus externen Dateien aber auch innerhalb des Programms an Funktionen oder Prozeduren kann der Compiler schon beim Kompilieren die Korrektheit der Typen kontrollieren Keine nullterminierten ZeichenkettenStandard Pascal hatte zwar Zeichenketten Literale aber keinen Typ string s oben In den meisten spateren Implementierungen wurden Zeichenketten als char Arrays definiert bei denen das erste Feld Byte zur Speicherung der Lange verwendet wurde Daraus ergab sich eine Langenbegrenzung von 255 Zeichen Bei den in der C Standard Bibliothek verwendeten Strings handelt es sich dagegen um NUL terminierte Strings Durch die Langenspeicherung in Pascal konnen verschiedene Operationen wie Stringverkettung effizienter durchgefuhrt werden kein Durchsuchen bis zum NUL Zeichen erforderlich Grossere Zeichenketten mussten selbst definiert werden z als Array of char sofern sie nicht wie z B in Borland Pascal 7 durch die Compilerhersteller bereits implementiert wurden Im Extended Pascal Standard wurden Zeichenketten als Scheme Typ definiert Auch hier muss die Kapazitat angegeben werden sie wird aber in runde Klammern geschrieben und es gibt keine formale Langenbeschrankung String 10240 Strikte Trennung zwischen Programm Funktionen und ProzedurenPascal trennt strikt zwischen einer Funktion mit Ruckgabewert und einer Prozedur kein Ruckgabewert Eine Funktion darf nicht als Prozedur aufgerufen werden d h der Ruckgabewert muss stets entgegengenommen werden Seit Turbo Pascal 4 0 1987 ist es jedoch moglich Funktionen auch ohne Entgegennahme des Funktionsergebnisses aufzurufen Weiterhin wird ein ausfuhrbares Programm in Pascal durch das Schlusselwort PROGRAM gekennzeichnet wohingegen in C der Einstiegspunkt fur ein Programm die Funktion main ist die sich ausser durch ihren Namen nicht von anderen Funktionen unterscheidet DeklarationenProgramme Funktionen und Prozeduren sind im Gegensatz zu C dreigegliedert Es gibt neben dem Kopfteil der den Namen und die Signatur enthalt einen separaten Deklarationsteil in dem Typen Variablen und verschachtelte Prozeduren Funktionen deklariert werden und einen Definitionsteil in dem implementiert wird In C gibt es nur einen Funktionskopf und Funktionsrumpf der den Deklarations und Definitionsteil vereinigt In C durfen Funktionen nicht verschachtelt definiert werden Case sensitivityIm Gegensatz zu C ist Pascal in Bezug auf Schlusselworter Bezeichner von Variablen Funktionen oder Prozeduren case insensitive SemikolonDas Semikolon wird nicht wie in C als Befehlsabschluss interpretiert sondern als Trennzeichen zwischen Anweisungen Vor einem END oder UNTIL kann es somit weggelassen werden Vor einem ELSE darf es in der Regel gar nicht stehen da sonst der IF Zweig als abgeschlossen angesehen werden wurde Ein Fall bei dem es vor dem ELSE steht und stehen muss ist am Ende einer CASE Auflistung DelimiterFur Zeichenketten Literale und Zeichen Literale wird dasselbe Begrenzungszeichen Delimiter namlich der Apostroph verwendet ZuweisungenZuweisungen an Variablen werden durch die Sequenz definiert das Gleichheitszeichen allein dient dem Gleichheitsvergleich und der Definition von Konstanten Damit werden mathematisch falsche Ausdrucke z B i i 1 vermieden Verkurzte Schreibweisen fur Zuweisungen wie i statt i i 1 oder i 2 statt i 2 i existieren in Pascal nicht OperatorenPascal verwendet die Operatoren and or not div nur fur Integer bei Real ist es mod und lt gt anstatt der C Operatoren amp amp und Die Short Circuit Funktionalitat von amp amp und in C sobald das Ergebnis feststeht namlich wenn der linke Teil beim and FALSE beziehungsweise beim or TRUE ist wird der rechte nicht mehr ausgewertet schloss Niklaus Wirth explizit aus da compilerinterne Optimierungsvorgange die Reihenfolge der Auswertung verandern konnen Spatere Pascalversionen implementierten eine lokal oder global zuschaltbare Short Circuit Funktionalitat so dass der Programmierer im Einzelfall entscheiden kann welche Art der Auswertung er wunscht In Standard Pascal gibt es keine Bitoperationen fur Integer wie amp und von C aber stattdessen den Typ set of mit den Operatoren und fur Durchschnitt Vereinigung und Mengendifferenz Strenge TypentrennungPascal betreibt strenge Typentrennung sodass unter anderem der Typ Char nicht austauschbar ist mit Integer Die Umwandlung muss mit den Funktionen ord und chr durchgefuhrt werden Dadurch werden verdeckte oder ungewollte Umwandlungen vermieden z B fuhrt die Anweisung i 7 2 mit i als Integer zu einer Fehlermeldung weil der Operator ein Operator ist der Real als Ergebnis hat Spatere Pascalversionen z B Turbo Pascal fuhrten zusatzlich explizite Typumwandlungen sog type casts ein so dass z B mit longint i der Wertebereich der Ganzzahlvariablen i erweitert oder eingeschrankt werden konnte In Standard Pascal musste dafur ein Umweg uber den Missbrauch von Variantenrecords union in C genommen werden ZeigerarithmetikIn Pascal existiert keine Zeigerarithmetik Iterationen uber Arrays konnen nur uber den Index erfolgen Standards BearbeitenWirths erste Veroffentlichung der neuen Programmiersprache erschien 1971 eine uberarbeitete und erweiterte Version dieses Berichts 1973 Ein weiteres Jahr spater folgte ein mit Kathleen Jensen geschriebener Bericht 5 den Wirth als ultimative Referenz fur Programmierer und Implementoren bezeichnete das darin beschriebene Pascal nannte er Standard Pascal 6 Es gibt drei Standards die sich auf Pascal beziehen Standard Pascal ANSI IEEE770X3 97 1993 oder ISO 7185 1990 Extended Pascal ANSI IEEE770X3 160 1989 oder ISO IEC 10206 1991 sowie einen Entwurf zu Object Oriented Extensions to Pascal Allerdings sind wie bei den meisten anderen Programmiersprachen auch nur die wenigsten Compiler zu diesen Standards vollstandig 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 grosse Verbesserung seiner Nachfolger damals bereits ein geflugelter Satz Selbst grossen Compilern wie Delphi oder Free Pascal fehlen bis heute einige Elemente aus Standard Pascal wahrend Extended Pascal von kaum einem unterstutzt wird Lediglich Prospero Pascal ist vollstandig kompatibel zu Extended Pascal wahrend auch GNU Pascal vollstandige Kompatibilitat anstrebt Pascal und Mac OS BearbeitenHistorisch interessant ist die Tatsache dass Apple bei der Entwicklung des Betriebssystems und der darauf laufenden Applikationen des Apple II Nachfolgers Macintosh auf Pascal gesetzt hatte Hierzu wurde bei Apple in einem von Larry Tesler gefuhrten Team unter Konsultation von Niklaus Wirth eine eigene Object Pascal Variante entwickelt die von einer fruheren objektorientierten Pascal Variante namens Clascal abgeleitet wurde die schon auf Lisa verfugbar war Object Pascal war fur die Unterstutzung von MacApp einem Macintosh Application Framework erforderlich das heute unter den Begriff Klassen Bibliothek fallen wurde Object Pascal wurde 1986 fertiggestellt Apple beendete den Fokus auf Object Pascal mit der Umstellung von Motorola 68K CPUs auf PowerPC CPUs von IBM im Jahr 1994 mit der Betriebssystem Version Mac OS 7 5 Zwecks Ruckwartskompatibilitat blieb die Ubergabe von Parametern fur Betriebssystemaufrufe bis zur letzten Mac OS Version 9 2 2 des Jahres 2002 an Pascal Konventionen angelehnt Implementierungen Compiler Interpreter und IDEs BearbeitenPascal hatte von Anfang an im universitaren Bereich sehr grossen Erfolg was sich u a auch in der Programmiersprache Ada niederschlug die sehr stark an der Syntax von Pascal angelehnt ist Ebenfalls fand es weite Verbreitung auch im kommerziellen Bereich mit den Produkten der Firma Borland Turbo Pascal Borland Pascal und Delphi Diese Versionen sind durch starke Erweiterungen des ursprunglichen Sprachstandards gekennzeichnet Die Objektorientierung wurde dabei mit Version 5 5 eingefuhrt Freie Implementierungen Bearbeiten UCSD Pascal Eine Pascal Implementierung der University of California San Diego UCSD Free Pascal Ein unter der GNU Lesser General Public License stehendes Open Source Projekt das sich zum Ziel gesetzt hat einen freien 32 64 Bit Compiler zu erzeugen der 100 prozentig kompatibel zu Turbo Pascal und Delphi sein soll und mittlerweile eine leichte Portierung von Pascal Programmen auf fast alle gangigen Betriebssysteme und Hardwareplattformen ermoglicht GNU Pascal GPC Ein Pascal Compiler der als Frontend zur GNU Compiler Collection konzipiert ist Er ist kein Bestandteil der GCC selbst ist aber durch die Verwendung der GCC plattformunabhangig GPC wird nicht mehr weiterentwickelt Virtual Pascal Diese inzwischen freie Implementierung eines Borland kompatiblen Pascal Compilers fur OS 2 wurde auch auf andere Plattformen portiert wird aber seit 2005 nicht mehr weiterentwickelt Integrierte Entwicklungsumgebungen Bearbeiten Lazarus Eine Entwicklungsumgebung fur Free Pascal die auch verschiedene Komponenten zur Verfugung stellt Die IDE ist sehr Delphi ahnlich gestaltet und verwendet unter Unix das GTK als Grafik Toolkit unter Windows win32 win64 wince setzt es auf der nativen API auf und auf Apple Betriebssystemen kann wahlweise die native Carbon API oder das X Window System verwendet werden Daruber hinaus unterstutzt Lazarus Cross Compiling so dass auch Software fur weitere Plattformen wie Windows CE OS 2 Palm OS oder Nintendo DS entwickelt werden kann Dev Pascal Eine unter Windows laufende IDE die auf Free Pascal oder GNU Pascal als Compiler aufsetzen kann Sie wird nicht mehr weiterentwickelt Kyan Pascal Eine 1986 von Kyan Software veroffentlichte auf dem Heimcomputer Apple II lauffahige Pascal Entwicklungsumgebung inklusive Editor Assembler Makroassembler und Programmierkurs Kyan Pascal 128 Eine 1987 von Kyan Software weiterentwickelte Version fur die Heimcomputer Commodore 128 und Atari 800 Pascal C128 Eine vom Markt Technik Verlag veroffentlichte auf dem Commodore 128 im C128 Modus lauffahige Pascal Entwicklungsumgebung mit Compiler Editor und Linker Profi Pascal Plus Eine 1987 von Data Becker veroffentlichte auf dem Commodore 128 im C128 Modus lauffahige Pascal Entwicklungsumgebung mit Compiler Editor und Linker Super Pascal 128 Eine 1986 von Abacus Software veroffentlichte auf dem Commodore 128 im C128 Modus lauffahige Pascal Entwicklungsumgebung inklusive Editor Assembler und Dienstprogrammpaket HP 64800 Pascal compiler package Beispielsweise bei der Entwicklung von Donkey Kong fur ColecoVision Geschichte BearbeitenPascal wurde nach dem franzosischen Mathematiker Blaise Pascal benannt Die Entwicklung der Programmiersprache Algol bis 1958 wie auch die ihrer Nachfolger war Produkt von Entwicklungskomitees Niklaus Wirth war massgeblich an der Erstellung des Abkommlings Algol W beteiligt das in Zurich entwickelt und 1966 fertiggestellt wurde 7 Er berichtete spater von den Nachteilen einer gemeinsamen Entwicklung Konsens innerhalb des Komitees musste muhsam erarbeitet werden auch erschienen dem praktisch denkenden Wirth der sich nicht nur als Wissenschaftler sondern auch als Ingenieur sah einige Entwicklungsziele mancher Kollegen als ubertrieben und unumsetzbar 8 Im Jahr 1968 erhielt Wirth eine Professur an der ETH Zurich wo er neben seiner Lehrtatigkeit Zeit fand mit der Entwicklung einer neuen Sprache zu beginnen Er arbeitete diesmal alleine und konnte Pascal im Lauf des Jahres 1969 fertigstellen Einer der Grunde fur die Neuentwicklung war laut Wirth das Fehlen einer fur den universitaren Unterricht geeigneten Sprache Weder das zu unwissenschaftlich angelegte Fortran noch das fur die praktische Ingenieurstatigkeit ungeeignete Algol konnten Wirths Anspruchen genugen Uber den Programmierunterricht hinaus sollte Pascal aber ebenso in der Wirtschaft der Forschung und bei der Entwicklung von Compilern und Betriebssystemen einsetzbar sein 8 nbsp CDC 6600Nachdem Wirth die Sprache 1969 fertiggestellt hatte folgte ein Jahr spater die Entwicklung des ersten Pascal Compilers Dieser wurde fur Computer der CDC 6000 Serie geschrieben und ging bereits 1970 in Betrieb Im Jahr 1971 veroffentlichte Wirth die nur 28 Seiten lange Beschreibung 9 der Sprache 1972 konnten Lehrende Pascal erstmals fur einfuhrende Programmierkurse verwenden 8 1973 folgte eine uberarbeitete und 54 Seiten lange Uberarbeitung der Spezifikation 10 Oft wurde ich gefragt wie man eine Programmiersprache erfindet Man kann das nicht wirklich beantworten aber es ist sicherlich eine Frage der Erfahrung auf dem Gebiet der Programmierung und von sorgfaltiger Uberlegung Manchmal sage ich So wie man ein Flugzeug entwickelt Man muss eine gewisse Anzahl notiger Bauelemente identifizieren und diese dann zu einem funktionierenden Ganzen zusammenbauen Diese Antwort ist vielleicht nicht voll zufriedenstellend aber zumindest passiert dem Resultat in beiden Fallen dasselbe entweder es fliegt oder es sturzt ab Niklaus Wirth 11 Kritik BearbeitenDa die Sprache als Lehrsprache konzipiert war wies das Standard Pascal einige Merkmale auf die den kommerziellen Einsatz erschwerten Das Konzept fur Dateizugriffe file I O war nicht machtig die Laufzeitbibliothek wenig umfangreich und Zeichenketten konnten nur uber Umwege packed array direkt im Code verwendet werden Das fuhrte dazu dass praktisch jede kommerzielle Implementierung hierzu eigene Losungen anbot was zunachst ahnlich wie die Diversifizierung bei C zu eigenen Pascal Dialekten und damit zu Kompatibilitatsproblemen fuhrte Mit der monopolartigen Dominanz der Turbo Pascal Produkte von Borland verschwanden diese Unterschiede fast vollstandig Ein anderer wesentlicher Nachteil war dass eine Modularisierung im Sinne getrennter Kompilierung nicht vorgesehen war was mit der Weiterentwicklung Modula 2 geandert wurde Plattformspezifische Implementierungen sahen dafur eigene Losungen vor z B die Units von Turbo Pascal fortgefuhrt in aquivalenten Unit Implementierungen in Freepascal und Delphi oder spater die Module in ANSI ISO Extended Pascal Weiterentwicklungen BearbeitenPascal XSC Pascal Dialekt mit Language eXtensions for Scientific Computation Oberon Oberon 2 POW basiert auf Oberon und Pascal Component Pascal Weiterentwicklung von Oberon 2 Embarcadero Delphi Objektorientiertes Pascal als Weiterentwicklung von Borland Pascal Free Pascal eine zu Delphi weitgehend kompatible freie Implementierung Dazu gibt es die Delphi ahnliche IDE Lazarus RemObjects Chrome Oxygene nun lizenziert als Delphi Prism von CodeGear PocketStudio Pascal Script StatPascal Modula 2 Concurrent Pascal Pascal fur nebenlaufige Programme HP PPL eine von HP entwickelte Pascal Variante fur ComputeralgebraLiteratur BearbeitenNiklaus Wirth The Programming Language Pascal In Acta Informatica Volume 1 1971 S 35 63 online Niklaus Wirth The Programming Language Pascal Revised Report Eidgenossische Technische Hochschule Zurich 1973 online Niklaus Wirth Algorithmen und Datenstrukturen Stuttgart 1975 ISBN 3 519 02330 X Niklaus Wirth Pascal and its Successors In Manfred Broy Ernst Denert Hrsg Software Pioneers Contributions to Software Engineering Springer Verlag Berlin Heidelberg 2002 ISBN 3 540 43081 4 S 108 119 online Kathleen Jensen Niklaus Wirth Pascal User Manual and Report Lecture notes in computer science 18 Springer Berlin 1974 Kathleen Jensen Niklaus Wirth Pascal User Manual and Report ISO Pascal Standard 4 Auflage Springer Verlag 1991 ISBN 3 540 97649 3 Steven Pemberton Martin Daniels Ellis Horwood Pascal Implementation The P4 Compiler and Interpreter ISBN 0 13 653031 1 online Weblinks Bearbeiten nbsp Commons Pascal Programmiersprache Sammlung von Bildern Videos und Audiodateien nbsp Wikibooks GNU Pascal in Beispielen Lern und Lehrmaterialien UCSD Pascal Source Code englisch Brian W Kernighan Why Pascal is Not My Favorite Programming Language AT amp T Bell Laboratories Murray Hill New Jersey 1981 Ein Artikel der ausfuhrlich anhand von Beispielen auf die Nachteile von Pascal eingeht und Pascal mit anderen Programmiersprachen wie C oder Fortran vergleicht Einzelnachweise Bearbeiten Niklaus Wirth The Programming Language Pascal In Acta Informatica Band 1 1971 S 35 63 doi 10 1007 BF00264291 M Jordan Tag der Erfinder Heute Niklaus Wirth www land der erfinder ch 15 Februar 2011 abgerufen am 21 Mai 2012 Andreas Schwill Programmierstile im Anfangsunterricht PDF Universitat Paderborn Fachbereich Mathematik Informatik abgerufen am 21 Mai 2012 Programmierstile im Anfangsunterricht delphi treff de abgerufen am 21 Mai 2012 Kathleen Jensen Niklaus Wirth Pascal User Manual and Report Springer Berlin 1974 Kathleen Jensen Niklaus Wirth Pascal User Manual and Report Springer Berlin 1974 Vorwort N Wirth C A R Hoare A Contribution to the development of ALGOL In Comm ACM 9 6 Juni 1966 S 413 432 a b c Niklaus Wirth Pascal and its Successors 2002 S 108 119 Niklaus Wirth The Programming Language Pascal 1971 Niklaus Wirth The Programming Language Pascal Revised Report 1973 Niklaus Wirth Pascal and its Successors 2002 S 108 119 Many times I have been asked how one invents a programming language One cannot really tell but it certainly is a matter of experience with the subject of programming and of careful deliberation Sometimes I answered Like one designs an airplane One must identify a number of necessary building blocks and materials and then assemble and combine them properly to a functioning whole This answer may not be entirely satisfactory but at least in both cases the result either flies or crashes Abgerufen von https de wikipedia org w index php title Pascal Programmiersprache amp oldid 237253259