Pascal (Programmiersprache)

Pascal
LagrangePAS.png
Paradigma
Familie Wirth Pascal
Entworfen von Niklaus Wirth
Erstmals erschienen 1970; Vor 52 Jahren
Disziplin tippen
Zielfernrohr Lexikalisch
Dateiname -Erweiterungen .PP, .pas, .inc
Haupt Implementierungen
Dialekte
Beeinflusst von
Beeinflusst

Pascal ist ein Imperativ und prozedural Programmiersprache, entworfen von Niklaus Wirth Als kleine, effiziente Sprache, die gute Programmierpraktiken mithilfe verwenden soll Strukturierte Programmierung und Datenstrukturierung. Es wird zu Ehren des französischen Mathematikers, Philosophen und Physiker benannt Blaise Pascal.

Pascal wurde auf dem Muster der entwickelt Algol 60 Sprache. Wirth war in den Prozess verwickelt, um die Sprache als Teil der zu verbessern Algol x Bemühungen und schlug eine Version mit dem Namen vor Algol w. Dies wurde nicht akzeptiert und der Algol X -Prozess steckte fest. Im Jahr 1968 beschloss Wirth, den Algol X -Prozess aufzugeben und das Algol W weiter zu verbessern, wobei dies 1970 als Pascal veröffentlicht wurde.

Über Algols Skalare und ArraysPascal ermöglicht das Definieren komplexer Datenatypen und das Erstellen von dynamischen und rekursiven Datenstrukturen wie z. Listen, Bäume und Grafiken. Pascal hat Starke Typisierung Bei allen Objekten, was bedeutet, dass eine Art von Daten nicht ohne explizite Konvertierungen in eine andere konvertiert oder als eine andere interpretiert werden kann. Im Gegensatz zu C (und den meisten Sprachen in der C-Familie), Pascal erlaubt es verschachteltes Verfahren Definitionen für jede Ebene der Tiefe und ermöglicht auch die meisten Arten von Definitionen und Erklärungen im Inneren Unterroutinen (Verfahren und Funktionen). Ein Programm ist somit syntaktisch einer einzelnen Prozedur oder Funktion ähnlich. Dies ähnelt der Blockstruktur von Algol 60, ist jedoch von willkürlichen Blockanweisungen auf nur Verfahren und Funktionen beschränkt.

Pascal wurde in den 1970er Jahren sehr erfolgreich, insbesondere auf dem Aufprall Minicomputer Markt. Compiler waren auch für viele verfügbar Mikrocomputer Als das Feld Ende der 1970er Jahre auftauchte. Es wurde weithin als Lehrsprache in verwendet Universität-Level -Programmierkurse in den 1980er Jahren und auch in Produktionsumgebungen zum Schreiben von kommerzieller Software im gleichen Zeitraum verwendet. Es wurde von der vertrieben C Programmiersprache In den späten 1980er und frühen 1990er Jahren als Unix-basierte Systeme wurden populär und insbesondere mit der Veröffentlichung von C ++.

Ein Derivat namens Objekt Pascal designed für Objekt orientierte Programmierung wurde 1985 entwickelt. Dies wurde von verwendet von Apple Computer (für die Maschinen Lisa und Macintosh) und Borland in den späten 1980er Jahren und später entwickelte sich zu Delphi auf der Microsoft Windows Plattform. Erweiterungen zu den Pascal -Konzepten führten zu den Sprachen Modula-2 und Oberon.

Geschichte

Frühere Bemühungen

Ein Großteil der Geschichte von Computer Sprache Das Design in den 1960er Jahren kann auf die verfolgt werden Algol 60 Sprache. Algol wurde in den 1950er Jahren mit dem expliziten Ziel entwickelt, Algorithmen klar zu beschreiben. Es enthielt eine Reihe von Funktionen für Strukturierte Programmierung Das bleibt bis heute in Sprachen üblich.

Kurz nach seiner Einführung 1962 begann Wirth an seiner Dissertation mit Helmut Weber auf dem Euler -Programmiersprache. Euler basierte auf Algols Syntax und vielen Konzepten, war jedoch kein Derivat. Das Hauptziel war es, dynamische Listen und Typen hinzuzufügen, sodass es in ähnlichen Rollen verwendet werden kann Lispeln. Die Sprache wurde 1965 veröffentlicht.

Zu diesem Zeitpunkt wurde eine Reihe von Problemen im Algol identifiziert, insbesondere das Fehlen eines standardisierten Saite System. Die Gruppe, die mit der Aufrechterhaltung der Sprache beauftragt war Algol x Prozess, um Verbesserungen zu identifizieren und Beiträge zu fordern. Wirth und Tony Hoare reichte eine konservative Reihe von Modifikationen ein, um Strings hinzuzufügen und einige der Syntax zu beseitigen. Diese wurden als zu klein angesehen, um es wert zu sein, als neues Standardalgol zu verwenden, so dass Wirth einen Compiler für die Sprache schrieb, der benannt wurde Algol w.

Die Bemühungen von Algol X würden weiterhin eine viel komplexere Sprache wählen, Algol 68. Die Komplexität dieser Sprache führte zu erheblichen Schwierigkeiten bei der Herstellung von Hochleistungs-Compilern und war in der Branche nicht weit verbreitet. Dies ließ eine Öffnung für neuere Sprachen.

Pascal

Pascal wurde von den Bemühungen der Algol W beeinflusst, mit den expliziten Zielen des Lehrprogramms in a strukturierte Mode und für die Entwicklung von Systemsoftware.[4] Eine Generation von Studenten verwendete Pascal als einleitende Sprache in Bachelor -Kursen.

Einer der frühen Erfolge für die Sprache war die Einführung von UCSD Pascal, eine Version, die auf einem Brauch lief Betriebssystem Das könnte auf verschiedene Plattformen portiert werden. Eine Schlüsselplattform war die Apple II, wo es weit verbreitete Verwendung als sah als Apple Pascal. Dies führte dazu, dass Pascal die primäre hochrangige Sprache wurde, die für die Entwicklung in der verwendet wurde Apple Lisaund später die Macintosh. Teile des Originals Macintosh -Betriebssystem wurden handgetransliert in Motorola 68000 Montagesprache vom Pascal Quellcode.[5]

Das Artensett System Tex durch Donald E. Knuth wurde geschrieben NETZ, das Original Lemerkörperprogrammierung System basierend auf Dez PDP-10 Pascal. Erfolgreiche kommerzielle Anwendungen wie Adobe Photoshop[6] wurden geschrieben Macintosh Programmer Workshop Pascal, während Anwendungen mögen Total Commander, Skype[7] und Macromedia Captivate wurden in Delphi geschrieben (Objekt Pascal). Apollo -Computer verwendet Pascal als Systemprogrammiersprache für seine Betriebssysteme ab 1980.

Varianten von Pascal wurden auch für alles von Forschungsprojekten bis hin zu verwendet Computerspiele und eingebettete Systeme. Es gibt neuere Pascal -Compiler, die weit verbreitet sind.[8]

Objekt Pascal

Während der Arbeit an der Lisa, Larry Tesler begann mit Wirth auf die Idee, objektorientierte Erweiterungen in die Sprache hinzuzufügen. Dies führte zunächst zu Clascal, eingeführt 1983. Als das LISA -Programm verblasste und durch den Macintosh ersetzt wurde, wurde eine weitere Version erstellt und benannt Objekt Pascal. Dies wurde 1985 auf dem Mac als Teil der eingeführt MacApp Anwendungsrahmenund wurde die Hauptentwicklungssprache von Apple in den frühen neunziger Jahren.

Die Objekt -Pascal -Erweiterungen wurden hinzugefügt Turbo Pascal mit der Veröffentlichung von Version 5.5 im Jahr 1989.[9] Im Laufe der Jahre wurde Objekt Pascal zur Grundlage der Delphi System für Microsoft Windows, was immer noch zur Entwicklung von Windows -Anwendungen verwendet wird und kann Cross-Compile Code für andere Systeme. Kostenloser Pascal ist eine open-Source-plattformübergreifende Alternative mit einer eigenen grafischen IDE genannt Lazarus.

Implementierungen

Frühe Pascal -Compiler

Das erste Pascal Compiler wurde entworfen in Zürich für die CDC 6000 -Serie Hauptrechner Familie. Niklaus Wirth berichtet, dass ein erster Versuch, es zu implementieren Forran 66 1969 war es aufgrund der Unzulänglichkeit von Fortran 66 nicht erfolglos, komplexe Datenstrukturen auszudrücken. Der zweite Versuch wurde in einer C-ähnlichen Sprache (Scallop von Max Engeli) implementiert und dann von Hand (von R. Schild) in Pascal selbst zum Stiefelbrecher übersetzt.[10] Es war Mitte 1970 betriebsbereit. Viele Pascal -Compiler waren seitdem ähnlich SelbsthostingDas heißt, der Compiler ist selbst in Pascal geschrieben, und der Compiler kann sich normalerweise neu kompilieren, wenn die Sprache neue Funktionen hinzugefügt werden oder wenn der Compiler sein soll portiert zu einer neuen Umgebung. Das Gnu Pascal Compiler ist eine bemerkenswerte Ausnahme, die in C geschrieben wird.

Der erste erfolgreiche Port des CDC -Pascal -Compilers für einen anderen Mainframe wurde von Welsh und Quinn an der Fertigstellung abgeschlossen Queen's University of Belfast (Qub) 1972. Das Ziel war das Internationale Computer Limited (ICL) 1900 Serie. Dieser Compiler war wiederum der Elternteil des Pascal -Compilers für die Informationscomputersysteme (ICS) Multum Minicomputer. Der Multum -Port wurde von Findlay, Cupples, Cavouras und Davis, der am Department of Computing Science in der Abteilung für Computerwissenschaften arbeitet, - im Hinblick auf die Verwendung von Pascal als Systemprogrammiersprache entwickelt - Glasgow University. Es wird angenommen, dass Multum Pascal, das im Sommer 1973 fertiggestellt wurde, die erste 16-Bit-Implementierung gewesen sein könnte.

Ein völlig neuer Compiler wurde von Welsh et al. 1977 bei Qub. Es bot eine diagnostische Quell-diagnostische Funktion (postmortalische Dumps mit Profilerstellung, Verfolgung und vom Typ bewusstes formatiertem Format), das von Findlay und Watt an der Glasgow University implementiert wurde. Diese Implementierung wurde 1980 auf die portiert ICL 2900 Serie von einem Team mit Sitz bei Southampton University und Glasgow University. Die Standard -Pascal -Modellimplementierung basierte auch auf diesem Compiler, der von Walisisch und Heu angepasst wurde Manchester University 1984, um die Konformität mit dem BSI 6192/ISO 7185 -Standard streng zu überprüfen und Code für eine tragbare abstrakte Maschine zu generieren.

Das erste Pascal Compiler In Nordamerika geschrieben wurde an der gebaut Universität von Illinois unter Donald B. Gillies für die PDP-11 und generierten nativen Maschinencode.

Das Pascal-P-System

Um die Sprache schnell zu verbreiten, einen Compiler Porting -Kit wurde in Zürich erstellt, das einen Compiler enthielt, der so genannt wurde P-Code Für ein virtuell Stapelmaschine, d. H. Code, der sich für eine angemessene effiziente Interpretation zusammen mit einem Interpreter für diesen Code eignet - die Pascal-P System. Die P-System-Compiler wurden PASCAL-P1, PASCAL-P2, PASCAL-P3 und PASCAL-P4 genannt. Pascal-P1 war die erste Version, und Pascal-P4 stammte die letzte, die aus Zürich kam. Die Version als Pascal-P1 wurde nach der Tatsache für die vielen verschiedenen Quellen für Pascal-P geprägt. Der Compiler wurde neu gestaltet, um die Portabilität zu verbessern und als Pascal-P2 ausgestellt zu haben. Dieser Code wurde später zu Pascal-P3 mit einem Zwischencode verbessert rückwärtskompatibel mit pascal-p2 und pascal-p4, was nicht rückwärtskompatibel war.

Der Pascal-P4-Compiler-Interpret kann weiterhin ausgeführt und auf Systemen kompiliert werden, die mit dem ursprünglichen Pascal kompatibel sind. Es akzeptiert jedoch nur eine Untergruppe der Pascal -Sprache.

Pascal-P5, das außerhalb der Zürich-Gruppe erstellt wurde, akzeptiert die vollständige Pascal-Sprache und umfasst ISO 7185-Kompatibilität.

UCSD Pascal von Pascal-p2 verzweigt, wo Kenneth Bowles benutzte es, um das zu erstellen Interpretativ UCSD P-System. Es war eines von drei Betriebssystemen, die beim Start des Originals erhältlich waren IBM PC.[11] UCSD Pascal verwendete einen Zwischencode, der auf Byte -Werten basiert, und war daher einer der frühesten Bytecode Compiler. Apple Pascal wurde 1979 für die Computersysteme Apple 2 und Apple 3 veröffentlicht. Es war eine Implementierung von oder weitgehend auf UCSD -Pascal. Pascal-P1 bis Pascal-P4 war nicht, sondern basierend auf der CDC 6600 60-Bit-Wortlänge.

Ein Compiler basierend auf dem Pascal-P5-Compiler, der native binäre entstand Objektdateien, wurde für die freigelassen IBM System/370 Hauptrechner bis zum Australian Atomic Energy Commission; es wurde der genannt AAEC Pascal 8000 Compiler Nach der Abkürzung des Namens der Kommission.[12]

Objekt Pascal und Turbo Pascal

Apple Computer schuf 1982 einen eigenen Lisa Pascal für den LISA -Workshop und pagte den Compiler auf den Apple Macintosh und um Mpw 1985. 1985 Larry TeslerIn Absprache mit Niklaus Wirth wurden definierte Objekte Pascal und diese Erweiterungen sowohl in die Lisa Pascal- als auch in die Mac -Pascal -Compiler eingebaut.

In den 1980er Jahren, Anders Hejlsberg schrieb den Blue Label Pascal Compiler für die Nascom-2. Eine Neuauflagen dieses Compilers für die IBM PC wurde unter den Namen Compas Pascal und Polypascal vermarktet, bevor es von erworben wurde von Borland und umbenannt Turbo Pascal.

Turbo Pascal wurde dank einer aggressiven Preisstrategie sehr beliebt, eine der ersten Vollbild-IDEs und eine sehr schnelle Turnaround-Zeit (nur Sekunden zum Kompilieren, Link und Laufen). Es wurde geschrieben und vollständig optimiert Montagesprache, Ich mach das kleiner und schneller als ein Großteil des Wettbewerbs.

1986 portierte Anders Turbo -Pascal auf den Macintosh und nahm Apples Objekt -Pascal -Erweiterungen in Turbo Pascal ein. Diese Erweiterungen wurden dann in die PC -Version von Turbo Pascal für Version 5.5 zurückgegeben. Zur selben Zeit Microsoft Implementierte auch den Objekt -Pascal -Compiler.[13][14] Turbo Pascal 5.5 hatte einen großen Einfluss auf die Pascal -Community, die sich hauptsächlich auf den IBM PC Ende der 1980er Jahre konzentrierte. Viele PC -Hobbyisten auf der Suche nach einem strukturierten Ersatz für Basic verwendeten dieses Produkt. Es wurde auch von professionellen Entwicklern übernommen. Etwa zur gleichen Zeit wurde eine Reihe von Konzepten aus importiert C Um Pascal-Programmierer die C-basierte C-basiert zu lassen Programmierschnittstelle (API) von Microsoft Windows direkt. Diese Erweiterungen umfassten null-terminierte Saiten, Zeigerarithmetik, Funktionszeiger, ein Bedienungsadresse und unsicher Typecasts.

Turbo Pascal und andere Derivate mit Einheit oder Modul Strukturen sind Modulare Programmierung Sprachen. Es bietet jedoch kein verschachteltes Modulkonzept oder ein qualifiziertes Import und Export spezifischer Symbole.

Andere Varianten

Super Pascal ist eine Variante, die nicht numerische Etiketten, eine Rückgabeanweisung und Ausdrücke als Namen von Typen hinzugefügt.

TMT Pascal war der erste Borland-kompatibler Compiler für 32-Bit DOS Sicherheitsmodus, OS/2, und Win32 Betriebssysteme. Die TMT -Pascal -Sprache war die erste, die eine Funktion erlaubte und Bedienerüberlastung.

Die Universitäten von Wisconsin-Madison, Zürich, Karlsruhe, und Wuppertal entwickelte die Pascal-sc[15][16] und Pascal-XSC[17][18][19] (Erweiterungen für wissenschaftliche Berechnungen) Compiler, die auf die Programmierung numerischer Berechnungen abzielen. Die Entwicklung von Pascal-SC begann 1978 mit der Unterstützung von ISO 7185 Pascal Level 0, aber die Unterstützung von Level 2 wurde zu einem späteren Zeitpunkt hinzugefügt.[20] Pascal-SC zielte ursprünglich auf die Z80 Prozessor, wurde aber später für DOS (umgeschriebenx86) und 68000. Pascal-XSC wurde zu verschiedenen Zeiten auf UNIX portiert (Linux, Sonnenos, HP-UX, AIX) und Microsoft/IBM (dos mit EMX, Os/2, Fenster) Betriebssysteme. Es wird durch Generierung von COSC -CODE COSCE generiert, der dann mit einer nativen ausführbaren Datei kompiliert wird. Einige der Pascal-SC-Sprachverlängerungen wurden von übernommen von übernommen Gnu Pascal.

Pascal Sol wurde um 1983 von einem französischen Team entworfen, um a zu implementieren Unix-artig System namens Sol. Es war Standard-Pascal-Stufe-1 (mit parametrisierten Array-Grenzen), aber die Definition erlaubte alternative Schlüsselwörter und vordefinierte Kennungen in Französisch und die Sprache enthielt einige Erweiterungen, um die Systemprogrammierung (z. B. ein Äquivalent zu LSEEK) zu erleichtern.[21] Das SOL -Team wechselte später zur Chorusos Projekt zum Entwerfen eines verteilten Betriebssystems.[22]

IP Pascal war eine Implementierung der Pascal -Programmiersprache mit Verwendung Mikropolis Dos, wurde aber schnell zu bewegt auf CP/M-80 Laufen auf dem Z80. Es wurde in die bewegt 80386 Maschinentypen im Jahr 1994 und existiert heute als Windows/XP- und Linux -Implementierungen. Im Jahr 2008 wurde das System auf ein neues Niveau und die daraus resultierende Sprache als "Pascaline" gebracht (danach Pascal's Taschenrechner). Es enthält Objekte, Namespace Kontrollen, Dynamische Arraysund viele andere Erweiterungen und verfügt im Allgemeinen im Allgemeinen um die gleiche Funktionalität und den gleichen Typschutz wie C#. Es ist die einzige solche Implementierung, die auch mit der ursprünglichen Pascal -Implementierung kompatibel ist, die als ISO 7185 standardisiert ist.

Sprachkonstrukte

Pascal ist in seiner ursprünglichen Form rein Verfahrenssprache und schließt die traditionelle Auswahl an Algol-ähnliche Kontrollstrukturen mit reservierten Wörtern wie z. wenn, dann, anders, während, zum, und Fall, reicht auf einer einzigen Aussage oder a Start-Ende Aussagen Block. Pascal verfügt auch über Datenstrukturkonstrukte, die nicht im Original enthalten sind Algol 60 Typen, wie Aufzeichnungen, Varianten, Zeiger, Aufzählungen, und Sets und Verfahrenszeiger. Solche Konstrukte wurden teilweise erbten oder inspiriert von Simula 67, Algol 68, Niklaus Wirtheigene Algol w und Vorschläge von C. A. R. Hoare.

Pascal -Programme beginnen mit dem Programm Stichwort mit einer Liste von externem Dateideskriptoren als Parameter[23] (nicht in Turbo Pascal usw. erforderlich); dann folgt die Haupt Block von der Start und Ende Schlüsselwörter. Semikolons getrennt Aussagen, und die Punkt (d.h. eine Periode) beendet das gesamte Programm (oder Einheit). Brieffall wird in Pascal -Quelle ignoriert.

Hier ist ein Beispiel für den für eine sehr einfachen verwendeten Quellcode "Hallo Welt!" Programm:

Programm Hallo Welt(Ausgang); Start  Schreiben('Hallo Welt!')  {Nein ";" ist nach der letzten Aussage eines Blocks erforderlich -         Das Hinzufügen eines fügt dem Programm eine "Null -Anweisung" hinzu, die vom Compiler ignoriert wird.} Ende. 

Datentypen

Eine Typdeklaration in Pascal wird verwendet, um einen Wertebereich zu definieren, den eine Variable dieser Art speichern kann. Es definiert auch eine Reihe von Operationen, die für Variablen dieser Art zulässig sind. Die vordefinierten Typen sind:

Datentyp Art der Werte, die die Variable speichern kann
ganze Zahl Ganzzahl (ganze) Zahlen
real Gleitkommazahlen
Boolesche die Werte wahr oder falsch
verkohlen ein einzelnes Zeichen aus einem geordneten Zeichensatz
einstellen entspricht einer Reihe von einer Reihe von Boolesche Werte
Array Eine zählbare Gruppe von vorangegangenen Datentypen oder Datensätzen
Aufzeichnung Eine Sammlung eines der vorhergehenden Datentypen
Saite Eine Sequenz oder eine "Zeichenfolge" von Zeichen wird als "verpacktes Zeichen von Zeichen" mit einem Startindex von 1 deklariert. Diese können String -Konstanten zugewiesen werden und einzelne Zeichen können als Elemente des Arrays zugegriffen werden.

Der Wertebereich für die Grundtypen (außer Boolean) ist die Implementierung definiert. Funktionen werden für einige Datenkonvertierungen bereitgestellt. Für Umwandlung von real zu ganze ZahlDie folgenden Funktionen sind verfügbar: runden (was zu Ganzzahl verwendet Bankerrundung) und Kreisel (Runden in Richtung Null).

Der Programmierer hat die Freiheit, andere häufig verwendete Datentypen (z. B. Byte, String usw.) in Bezug auf die vordefinierten Typen unter Verwendung der Typ -Deklarationsfunktion von Pascal zu definieren, z. B.

Typ  Byte  = 0..255;  signed_byte = -128..127;  Saite  = gepackt Array[1..255] von verkohlen; 

Oft verwendete Typen wie Byte und String sind bereits in vielen Implementierungen definiert.

Normalerweise verwendet das System a Wort Um die Daten zu speichern. Zum Beispiel die byte Der Typ kann in einer Maschinenbezahlung gelagert werden - vielleicht 32 Bit - und nicht in einem 8 -Bit -Wert. Pascal enthält keine Sprachelemente, mit denen die grundlegenden Speichertypen granularer definiert werden können. Diese Fähigkeit wurde in einer Reihe von Pascal-Erweiterungen und Folgesprachen enthalten, während andere wie Modula-2erweiterte den eingebauten Satz, um die meisten Maschinendatentypen wie 16-Bit-Ganzzahlen abzudecken.

Das packed Das Schlüsselwort sagt dem Compiler, die effizienteste Speichermethode für die strukturierten Datentypen zu verwenden: Mengen, Arrays und Datensätze anstatt eines zu verwenden Wort Für jedes Element. Das Verpacken kann den Zugriff auf Maschinen verlangsamen, die keinen einfachen Zugriff auf Teile eines Wortes bieten.

Unterabschnitttypen

Teilungen von allen Ordinaler Datentyp (Jeder einfache Typ außer real) kann auch hergestellt werden:

var  x : 1..10;  y : 'a'..'z'; 

Setzen Sie Typen

Im Gegensatz zu anderen Programmiersprachen aus seiner Zeit unterstützt Pascal einen festgelegten Typ:[24]

var  Set 1 : einstellen von 1..10;  Set2 : einstellen von 'a'..'z'; 

Ein Set ist ein grundlegendes Konzept für die moderne Mathematik und kann in vielen Algorithmen verwendet werden. Eine solche Funktion ist nützlich und kann schneller sein als ein äquivalentes Konstrukt in einer Sprache, die keine Sätze unterstützt. Zum Beispiel für viele Pascal -Compiler:

wenn i in [5..10] dann ... 

führt schneller ausgeführt als:

wenn (i > 4) und (i < 11) dann ... 

Sätze nicht zusammenhaltender Werte können besonders nützlich sein, sowohl in Bezug auf Leistung als auch Lesbarkeit:

wenn i in [0..3, 7, 9, 12..15] dann ... 

Für diese Beispiele, die Sätze über kleine Domänen beinhalten, wird die verbesserte Leistung normalerweise durch den Compiler erzielt, der festgelegte Variablen darstellt Bitvektoren. Der Satz Betreiber kann dann effizient als Bitwise -Maschinencode -Vorgänge implementiert werden.

Gewerkschaftstypen

In Pascal gibt es zwei Möglichkeiten, Gewerkschaften zu schaffen. Einer ist der Standardweg durch einen Variante -Datensatz. Das zweite ist ein nicht standardmäßiges Mittel, um eine Variable als absolut zu deklarieren, was bedeutet, dass sie an derselben Speicherstelle wie eine andere Variable oder an einer absoluten Adresse platziert wird. Während alle Pascal -Compiler Variantenaufzeichnungen unterstützen, unterstützen nur einige absolute Variablen.

Für die Zwecke dieses Beispiels sind alle ganzzahligen Typen: Ein Byte ist 8-Bit, ein Wort 16 Bit und eine Ganzzahl beträgt 32 Bit.

Das folgende Beispiel zeigt die nicht standardmäßige absolute Form:

Var  A: Ganze Zahl;  B: Array[1..4] von Byte absolut A;  C: Ganze Zahl absolut 0; 

Im ersten Beispiel kartiert jedes der Elemente des Array B zu einem der spezifischen Bytes der Variablen A. Im zweiten Beispiel wird die Variable C der exakten Maschinenadresse 0 zugeordnet.

Im folgenden Beispiel hat ein Datensatz Varianten, von denen einige den gleichen Ort wie andere teilen:

TYP  Tsystem = Aufzeichnung  Jahr, Monat, Wochentag, Tag : Wort;  Stunde, Minute, Zweite, Millisekunde: Wort;  Ende;    Tperson = AUFZEICHNUNG  Vorname, Nachname: Saite;  Geburtsdatum: Tsystem;  Fall ist schwanger: Boolesche von   Stimmt: (Veraltet:Tsystem);  FALSCH: (ISPLANNINGPregnancy: Boolesche);  ENDE; 

Typdeklarationen

Typen können aus anderen Typen unter Verwendung von Typ -Deklarationen definiert werden:

Typ  x = ganze Zahl;  y = x; ... 

Darüber hinaus können komplexe Typen aus einfachen Typen konstruiert werden:

Typ  a = Array[1..10] von ganze Zahl;  b = Aufzeichnung  x : ganze Zahl;  y : verkohlen  {zusätzliches Semikolon nicht streng erforderlich}  Ende;  c = Datei von a; 

Dateityp

Wie im obigen Beispiel gezeigt, pascal Dateien sind Sequenzen von Komponenten. Jede Datei hat eine Puffervariable, die von bezeichnet wird f^. Die Verfahren erhalten (zum Lesen) und stellen (Zum Schreiben) Verschieben Sie die Puffervariable auf das nächste Element. Lesen wird so eingeführt, dass Read (f, x) ist das gleiche wie x: = f^; Holen Sie sich (f);. Schreiben wird so eingeführt, dass Schreiben Sie (f, x) ist das gleiche wie f^: = x; platz (f); Der Typ text ist als Datei von char vordefiniert. Während die Puffervariable zur Überprüfung des nächsten zu verwendenden Charakters verwendet werden könnte (prüfen Sie, ob Sie eine Ziffer vor dem Lesen einer Ganzzahl überprüfen), führt dies zu ernsthaften Problemen mit interaktiven Programmen in frühen Implementierungen, wurde jedoch später mit dem "faulen I/O" gelöst, um zu gelöst, aber mit dem "faulen I/O" gelöst, wurde jedoch mit dem "Lazy I/O" gelöst. Konzept.

In Jensen & Wirth Pascal werden Saiten als gepackte Arrays von Chars dargestellt. Sie haben daher eine feste Länge und sind in der Regel Platz für Platz.

Zeigertypen

Pascal unterstützt die Verwendung von Zeiger:

Typ  Pnode = ^Knoten;  Knoten  = Aufzeichnung  a : ganze Zahl;  b : verkohlen;  c : Pnode    Ende; var  Nodeptr : Pnode;  Intptr  : ^ganze Zahl; 

Hier die Variable Nodeptr ist ein Zeiger auf den Datentyp Knoten, ein Rekord. Zeiger können verwendet werden, bevor sie deklariert werden. Das ist ein Vorwärtsdeklaration, eine Ausnahme von der Regel, dass die Dinge deklariert werden müssen, bevor sie verwendet werden.

Um einen neuen Datensatz zu erstellen und den Wert zuzuweisen 10 und Charakter A zu den Feldern a und b im Datensatz und um den Zeiger zu initialisieren c zum Null Zeiger ("Nil" in Pascal), die Aussagen wären:

Neu(Nodeptr); ... Nodeptr^a : = 10; Nodeptr^b : = 'EIN'; Nodeptr^c : = NULL; ... 

Dies könnte auch mit dem durchgeführt werden mit Aussage wie folgt:

Neu(Nodeptr); ... mit Nodeptr^ tun Start  a : = 10;  b : = 'EIN';  c : = NULL Ende; ... 

Im Rahmen des Rahmens der mit Aussage A und B beziehen sich auf die Teilfelder des Datensatzzeigers Nodeptr und nicht zum Datensatzknoten oder zum Pnode des Zeigertyps.

Verlinkte Listen, Stapel und Warteschlangen Kann erstellt werden, indem ein Zeigertypfeld (c) in den Datensatz aufgenommen wird.

Im Gegensatz zu vielen Sprachen, die Zeiger aufweisen, ermöglicht Pascal nur Zeiger, dynamisch erstellte Variablen zu verweisen, die anonym sind, und erlaubt ihnen nicht, statische oder lokale Variablen zu referenzieren. Zeiger müssen auch einen zugeordneten Typ haben, und ein Zeiger auf einen Typ ist nicht mit einem Zeiger auf einen anderen Typ kompatibel (z. B. ein Zeiger auf ein Zeichen ist nicht mit einem Zeiger auf eine Ganzzahl kompatibel). Dies hilft dabei Pl/i oder C. Es entfernt auch einige Risiken durch Zeiger baumeln, aber die Fähigkeit, dynamisch zu verhandeln, referenzierte den Raum mit der Verwendung der entsorgen Funktion (was den gleichen Effekt hat wie das frei Bibliotheksfunktion gefunden in C) bedeutet, dass das Risiko, Zeiger zu baumeln[25] wie in Sprachen wie Java und C#, die bieten Automatische Müllsammlung (die aber das damit verbundene Problem nicht beseitigen Speicherlecks).

Einige dieser Einschränkungen können in neueren Dialekten aufgehoben werden.

Kontrollstrukturen

Pascal ist a Strukturierte Programmierung Sprache, was bedeutet, dass der Kontrollfluss in Standard strukturiert ist Aussagen, normalerweise ohne 'gehe zu'Befehle.

während a <> b tun  Writeln('Warten'); wenn a > b dann Writeln("Zustand erfüllt")  {Kein Semikolon zuvor zulässig}}  anders Writeln("Zustand nicht erfüllt"); zum i : = 1 zu 10 tun  {Kein Semikolon hier, wie es die nächste Aussage abnehmen würde}  Writeln('Wiederholung: ', i); wiederholen  a : = a + 1 bis um a = 10; Fall i von  0 : Schreiben('Null');  1 : Schreiben('eines');  2 : Schreiben('zwei');  3,4,5,6,7,8,9,10: Schreiben('?') Ende; 

Verfahren und Funktionen

Pascal strukturiert Programme zu Verfahren und Funktionen. Im Allgemeinen wird ein Verfahren für seine Nebenwirkungen verwendet, während eine Funktion für ihren Rückgabewert verwendet wird.

Programm Drucken; var i : ganze Zahl; Verfahren Printaninteger(j : ganze Zahl); Start  ... Ende; Funktion verdreifachen(Const x: ganze Zahl): ganze Zahl; Start 	verdreifachen : = x * 3 Ende; Start { Hauptprogramm }  ...  Printaninteger(i);  Printaninteger(verdreifachen(i)) Ende. 

Verfahren und Funktionen können in jede Tiefe verschachtelt werden, und das Programm "Programm" ist der logisch äußerste Block.

Standardmäßig werden Parameter mit Wert übergeben. Wenn 'var' dem Namen eines Parameters vorausgeht, wird er mit Referenz übergeben.

Jedes Verfahren oder jede Funktion kann eigene Erklärungen von GOTO -Bezeichnungen, Konstanten, Typen, Variablen und anderen Verfahren und Funktionen haben, die alle in dieser Reihenfolge enthalten sein müssen. Diese Bestellanforderung war ursprünglich dazu gedacht, effizient zu ermöglichen Einzelpass-Zusammenstellung. In einigen Dialekten (wie z. Delphi) Die strenge Bestellanforderung von Deklarationsabschnitten wurde gelockert.

Semikolons als Statement -Separatoren

Pascal übernahm viele Sprachsyntaxfunktionen aus dem Algol Sprache, einschließlich der Verwendung eines Semikolons als Statement -Separator. Dies steht im Gegensatz zu anderen Sprachen, wie z. Pl/i und C, die das Semikolon als Erklärungsterminator verwenden. Vor dem wird kein Semikolon benötigt Ende Schlüsselwort einer Datensatztypdeklaration, eines Blocks oder a Fall Aussage; Vor dem bis um Schlüsselwort einer Wiederholungsanweisung; und vor dem anders Schlüsselwort von an wenn Aussage.

Das Vorhandensein eines zusätzlichen Semikolons war in frühen Pascal -Versionen nicht zulässig. Die Hinzufügung von Algol-Eleichte leere Aussagen in der 1973 Überarbeiteter Bericht und später Änderungen der Sprache in ISO 7185: 1983 ermöglichen nun in den meisten Fällen optionale Semikolons. Ein Semikolon ist immer noch nicht unmittelbar vor dem erlaubt anders Schlüsselwort in an wenn Aussage, weil die anders folgt einer einzelnen Anweisung, nicht einer Statementsequenz. Bei verschachtelten IFs kann ein Semikolon nicht verwendet werden, um die zu vermeiden sonst baumeln Problem (wo das Inner, wenn es keine sonst hat, aber das Außen, wenn es tut) durch mutmaßliche Beendigung des verschachtelten If mit einem Semikolon - dies endet stattdessen beide, wenn sie Klauseln. Stattdessen ein explizites Start...Ende Block muss verwendet werden.[26]

Ressourcen

Compiler und Dolmetscher

Mehrere Pascal -Compiler und Dolmetscher stehen für den allgemeinen Gebrauch zur Verfügung:

  • Delphi ist Embarcaderos Flaggschiff (ehemals Borland/Codehear) Schnelle Anwendungsentwicklung (Rad) Produkt. Es verwendet die Objekt -Pascal -Sprache (von Borland als "Delphi" bezeichnet) aus Pascal, um Anwendungen für zu erstellen Fenster, Mac OS, iOS, und Android. Die .NET -Unterstützung, die von D8 bis D2005, D2006 und D2007 existierte, wurde beendet und durch eine neue Sprache (Prisma, die umbenannt wird, Oxygen, siehe unten), die nicht vollständig rückwärtskompatibel ist. In den vergangenen Jahren Unicode Unterstützung und Generika wurden hinzugefügt (D2009, D2010, Delphi XE).
  • Kostenloser Pascal ist ein plattformübergreifend Compiler geschrieben in Objekt Pascal (und ist Selbsthosting). Es zielt darauf ab, einen bequemen und leistungsstarken Compiler bereitzustellen, der beide Legacy -Anwendungen zusammenstellen und die Mittel zur Entwicklung neuer sind. Es ist unter dem verteilt GNU Allgemeine öffentliche Lizenz (GNU GPL), während Pakete und Laufzeit Bibliothek sich modifiziert machen Gnu weniger allgemeine öffentliche Lizenz (Gnu lgpl). Zusätzlich zu Kompatibilitätsmodi für Turbo Pascal, Delphi und Mac Pascal, es hat seine eigenen prozeduralen und objektorientierten Syntaxmodi mit Unterstützung für erweiterte Funktionen wie z. Bedienerüberlastung. Es unterstützt viele Plattformen und Betriebssysteme. Aktuelle Versionen haben auch einen ISO -Modus.
  • Turbo51 ist ein freier Pascal -Compiler für die Intel 8051 Familie von Mikrocontrollern mit Turbo Pascal7 Syntax.
  • Oxygen (früher benannt Chrom) ist ein Objekt Pascal Compiler für die .NETZ und Mono Plattformen. Es wurde erstellt und von RemObjects -Software verkauft und für eine Weile von Embarcadero als Backend -Compiler von verkauft Prisma.
  • Kylix war ein Nachkomme von Delphi, mit Unterstützung für die Linux Betriebssystem und eine verbesserte Objektbibliothek. Es wird nicht mehr unterstützt. Compiler und IDE sind ab sofort für den nichtkommerziellen Gebrauch erhältlich.
  • Gnu Pascal Compiler (GPC) ist der Pascal -Compiler der GNU Compiler -Sammlung (GCC). Der Compiler ist in C, der Laufzeitbibliothek, hauptsächlich in Pascal. Verteilt unter dem GNU Allgemeine öffentliche LizenzEs wird auf vielen Plattformen und Betriebssystemen ausgeführt. Es unterstützt die ANSI/ISO -Standardsprachen und verfügt über einen teilweisen Turbo -Pascal -Dialektunterstützung. Eine der schmerzhafteren Auslassungen ist das Fehlen eines 100% igen Turbo-Pascal-kompatiblen (kurzen) String-Typs. Die Unterstützung für Borland Delphi und andere Sprachvarianten ist ziemlich begrenzt. Es gibt jedoch einige Unterstützung für Mac-Pascal.
  • Virtueller Pascal wurde 1995 von Vitaly Miryanov als natives OS/2 -Compiler erstellt, das mit der Borland -Pascal -Syntax kompatibel ist. Dann wurde es von FPRint kommerziell entwickelt, win32 Support und im Jahr 2000 wurde es Freeware. Heute kann es für Win32, OS/2 und Linux kompilieren und ist hauptsächlich mit Borland Pascal und Delphi kompatibel. Die Entwicklung wurde am 4. April 2005 abgesagt.
  • P4-Compiler, die Grundlage für viele nachfolgende pascal-implementierte In-Pascal-Compiler. Es implementiert eine Untergruppe von vollem Pascal.
  • Der P5 -Compiler ist eine ISO 7185 -Adaption von P4.
  • Smart Mobile Studio ist ein Pascal zu HTML5/JavaScript -Compiler
  • Turbo Pascal war in den 1980er und frühen 1990er Jahren der dominierende Pascal -Compiler für PCs, sowohl aufgrund seiner leistungsstarken Verlängerungen als auch aufgrund extrem kurzer Zusammenstellungszeiten beliebt. Turbo Pascal wurde kompakt geschrieben und konnte alle aus dem Gedächtnis kompilieren, laufen und debuggen, ohne auf die Festplatte zuzugreifen. Zu dieser Zeit waren langsame Diskettenlaufwerke für Programmierer üblich, was den Geschwindigkeitsvorteil von Turbo Pascal weiter vergrößerte. Derzeit sind ältere Versionen von Turbo Pascal (bis zu 5,5) für kostenlosen Download von Borlands Website zur Verfügung.
  • IP Pascal implementiert die Sprache "Pascaline" (benannt nach Pascal's Taschenrechner), ein hoch erweitertes Pascal, das gemäß ISO 7185 mit Original -Pascal kompatibel ist Andere Erweiterungen. IP Pascal verfügt über eine integrierte Portabilitätsbibliothek, die auf die Pascal-Sprache zugeschnitten ist. Beispielsweise kann eine Standard -Textausgabeanwendung aus dem ursprünglichen Pascal aus den 1970er Jahren neu kompiliert werden, um in einem Fenster zu arbeiten, und sogar grafische Konstrukte hinzugefügt werden.
  • Pascal-oxt wurde von erstellt von Siemens für ihre Mainframe Betriebssysteme BS2000 und Sinix.
  • Taschenstudio ist ein Pascal -Untergruppen -Compiler und ein Rad -Tool für Palm os und MC68XXX -Prozessoren mit einigen seiner eigenen Erweiterungen, um die Vernetzung mit der Palm OS -API zu unterstützen. Es ähnelt Delphi und Lazarus mit einem visuellen Formulardesigner, einem Objektinspektor und a Quellcode -Editor.
  • Midletpascal - Ein Pascal -Compiler und eine IDE, die ein kleines und schnelles Java -Bytecode erzeugt, das speziell für die Erstellung von Software für Mobiltelefon entwickelt wurde.
  • Vector Pascal ist eine Sprache für Simd Anweisungssätze wie MMX und AMD 3D, die jetzt alle Intel- und AMD -Prozessoren und die PlayStation 2 Emotion Engine von Sony unterstützen.
  • Morfik Pascal ermöglicht die Entwicklung von Webanwendungen, die vollständig in Objekt Pascal (sowohl Server als auch Browser -Seite) geschrieben wurden.
  • WDSIBYL - Umgebung für visuelle Entwicklung und Pascal -Compiler für Win32 und OS/2.
  • PP Compiler, ein Compiler für Palm OS, der direkt auf dem Handcomputer ausgeführt wird.
  • CDC 6000 Pascal Compiler ist der Quellcode für den ersten Pascal -Compiler (CDC 6000).
  • Pascal-s[27]
  • Amigapascal ist ein kostenloser Pascal -Compiler für den Amiga -Computer.
  • VSI Pascal für OpenVMs (ehemals HP Pascal für OpenVMS, Compaq Pascal, DEC Pascal, Vax Pascal und ursprünglich Vax-11 Pascal[28]) ist ein Pascal -Compiler, der weiterläuft OpenVMS Systeme.[29] Es wurde auch unter unterstützt unter Tru64.[30][31] VSI Pascal für OpenVMS ist mit ISO/IEC 7185: 1990 -Pascal sowie einigen von ISO/IEC 10206: 1990 Extended Pascal kompatibel und umfasst auch seine eigenen Erweiterungen.[29] Der Compiler Frontend wird in implementiert WONNE.[32]
  • Stony Brook Pascal+ war ein 16-Bit (später 32-Bit) -Optimierender Compiler für DOS und OS/2, der als direkter Ersatz für Turbo Pascal vermarktet wurde, aber Code produzierte, der mindestens doppelt so schnell ausgeführt wurde.

Ides

Bibliotheken

  • WOL -Bibliothek zum Erstellen von GUI -Anwendungen mit dem kostenlosen Pascal -Compiler.

Standards

ISO/IEC 7185: 1990 Pascal

1983 wurde die Sprache im internationalen Standard IEC/ISO 7185 standardisiert[33] und mehrere lokale länderspezifische Standards, darunter der amerikanische ANSI/IEEE770X3.97-1983 und ISO 7185: 1983. Diese beiden Standards unterschieden Version) Sprache. 1989 wurde ISO 7185 überarbeitet (ISO 7185: 1990), um verschiedene Fehler und Unklarheiten im Originaldokument zu korrigieren.

Der ISO 7185 wurde als eine Klärung der Wirth -Sprache von 1974 angegeben, die im Benutzerhandbuch und Bericht [Jensen und Wirth] beschrieben wurde, war jedoch auch für das Hinzufügen von "konformanten Array -Parametern" als Stufe 1 zu Standard, Stufe 0, Pascal ohne Konformantarrays. Diese Ergänzung wurde auf Wunsch von vorgenommen C. A. R. Hoareund mit Zustimmung von Niklaus Wirth. Die ausfällige Ursache war, dass Hoare eine Pascal -Version des (NAG) Numerische Algorithmenbibliothek, die ursprünglich in Forran geschrieben worden war und feststellte, dass es ohne eine Erweiterung nicht möglich war, die Array -Parameter unterschiedlicher Größe zulässt. Ähnliche Überlegungen motivierten die Aufnahme in ISO 7185 der Einrichtung, die Parametertypen von prozeduralen und funktionellen Parametern anzugeben.

Niklaus Wirth selbst bezeichnete die Sprache von 1974 als "Standard", um sie von den maschinenspezifischen Merkmalen der zu unterscheiden CDC 6000 Compiler. Diese Sprache wurde in dokumentiert Der Pascal -Bericht,[34] Der zweite Teil des "Handbuchs und Berichts von Pascal Users".

Auf den großen Maschinen (Mainframes und Minicomputer) wurden die Standards im Allgemeinen befolgt. Auf der IBM PC, Sie waren nicht. Auf IBM PCs haben die Borland Standards Turbo Pascal und Delphi die größte Anzahl von Benutzern. Daher ist es in der Regel wichtig zu verstehen, ob eine bestimmte Implementierung der ursprünglichen Pascal -Sprache oder einem Borland -Dialekt davon entspricht.

Die IBM PC -Versionen der Sprache unterschieden sich mit dem Aufkommen von UCSD Pascal, einer interpretierten Implementierung, die mehrere Erweiterungen der Sprache sowie mehrere Auslassungen und Änderungen aufwies. Viele UCSD -Sprachmerkmale überleben heute, einschließlich in Borlands Dialekt.

ISO/IEC 10206: 1990 erweiterter Pascal

Im Jahr 1990 wurde ein erweiterter Pascal -Standard als ISO/IEC 10206 erstellt.[35] was in technischen Inhalten identisch ist[36] an IEEE/ANSI 770X3.160-1989[37] Ab 2019 Unterstützung von erweitertem Pascal in Freepascal Compiler ist geplant.[38]

Variationen

Niklaus Wirths Zürich -Version von Pascal wurde draußen herausgegeben Eth In zwei grundlegenden Formen: die CDC 6000-Compiler-Quelle und ein Portierungskit namens Pascal-P-System. Der Pascal-P-Compiler ließ mehrere Merkmale der vollen Sprache aus, die nicht erforderlich waren, um den Compiler zu starten. Beispielsweise wurden Verfahren und Funktionen, die als Parameter, nicht kriminierte Variantenaufzeichnungen, Verpacken, Entsorgung, interprozeduraler Gotos und andere Merkmale des vollständigen Compilers verwendet werden.

UCSD Pascalunter Professor Kenneth Bowles, basiert auf dem Pascal-P2-Kit und teilte folglich mehrere der Pascal-P-Sprachbeschränkungen mit. UCSD Pascal wurde später als Apple Pascal übernommen und wurde dort durch mehrere Versionen fortgesetzt. Obwohl UCSD-Pascal das Teilmensch Pascal im Pascal-P-Kit durch Hinzufügen von Standard-Pascal-Konstrukten tatsächlich erweiterte, war es immer noch keine vollständige Standardinstallation von Pascal.

Anfang der neunziger Jahre,, Alan Burns und Geoff Davies entwickelte Pascal-FC, eine Erweiterung auf PL/0 (aus dem Buch von Niklaus 'Buch Algorithmen + Datenstrukturen = Programme). Mehrere Konstrukte wurden hinzugefügt, um Pascal-FC als Lehrmittel für die gleichzeitige Programmierung (wie Semaphoren, Monitore, Kanäle, Remote-Invokation und Ressourcen) zu verwenden. Um Parallelität nachweisen zu können, die Compiler -Ausgabe (eine Art Art von P-Code) könnte dann auf einer virtuellen Maschine ausgeführt werden. Diese virtuelle Maschine simulierte nicht nur eine normale - faire - Umgebung, sondern könnte auch extreme Bedingungen simulieren (unfairer Modus).

Borland-ähnliche Pascal-Compiler

Borland's Turbo Pascal, geschrieben von Anders Hejlsberg, wurde unabhängig von UCSD und den Zürich -Compilern in Versammlungssprache geschrieben. Es wurde jedoch viel von derselben Untergruppe und Erweiterungen wie der UCSD -Compiler angewendet. Dies liegt wahrscheinlich daran, dass das UCSD-System das häufigste Pascal-System war, das für die Entwicklung von Anwendungen für die zu diesem Zeitpunkt verfügbaren ressourcenbegrenzten Mikroprozessorsysteme geeignet war.

Das eingeschweißt Turbo Pascal Version 3 und spätere Inkarnationen, einschließlich Borlands Objekt Pascal und Delphi und Nicht-Borland-Beinahe-Kompatibeln wurden bei Programmierern, einschließlich Shareware-Autoren, beliebt, und so verfügt die Swag-Bibliothek von Pascal Code über eine große Menge von Code, die mit den Versionen von Versionen wie Delphi geschrieben wurden.

Softwareprodukte (Compilerund ide/Schnelle Anwendungsentwicklung (Rad)) in dieser Kategorie:

  • Turbo Pascal - "Turbo.exe" bis Version 7 und Turbo Pascal für Windows ("TPW") und Turbo Pascal für Macintosh.
  • Reine Pascal- und Hispeed Pascal 2 Pascal -Sprachumgebung für den Atari -St -Bereich von Computern.
  • Borland Pascal 7 - Eine professionelle Version von Turbo Pascal Line, die sowohl DOS als auch Windows abzielte.
  • Objekt Pascal - Eine Erweiterung der Pascal -Sprache, die bei entwickelt wurde Apple Computer von einem Team angeführt von Larry Tesler in Absprache mit Niklaus Wirth, der Erfinder von Pascal; Die Merkmale wurden zu Borlands hinzugefügt Turbo Pascal für Macintosh und 1989 für Turbo Pascal 5.5 für DOS.
  • Delphi - Objekt Pascal ist im Wesentlichen seine zugrunde liegende Sprache.
  • Kostenloser Pascal Compiler (FPC) - Free Pascal übernahm den De -facto -Standard -Dialekt der Pascal -Programmierer, Borland Pascal und später Delphi. Freepascal unterstützt auch beide ISO -Standards.
  • Pascalabc.net - Eine Pascal -Programmiersprache der neuen Generation einschließlich Compiler und IDE.
  • Borland Kylix ist ein Compiler und ide, der früher von Borland verkauft wurde, aber später eingestellt wurde. Es ist ein Linux Version des Borland Delphi Softwareentwicklungsumgebung und C ++ Builder.
  • Lazarus -Ähnlich wie bei Kylix in der Funktion ist eine freie plattformübergreifende visuelle IDE für RAD unter Verwendung des freien Pascal-Compilers, der Dialekte von unterstützt Objekt Pascal in unterschiedlichen Graden.
  • Virtueller Pascal -VP2/1 ist ein voll borland-Pascal- und Borland-Delphi-kompatibler 32-Bit-Pascal-Compiler für OS/2 und Windows 32 (mit einer Linux-Version "auf dem Weg").[39]
  • Sybil ist eine Open-Source-Delphi-ähnliche Ide und Compiler; Implementierungen umfassen:
    • Wdsibyl[40] zum Microsoft Windows und OS/2, ein kommerzielles Borland-Pascal-kompatibler Umfeld, das von einem Unternehmen namens Speedsoft veröffentlicht wurde, das später zu einem Delphi-ähnlichen entwickelt wurde Schnelle Anwendungsentwicklung (Rad) Umgebung namens Sybil und dann offen unter der GPL, wenn diese Firma geschlossen wurde;
    • Open Sybil, ein laufendes Projekt, ein Open Source Tool für OS/2 und ECS, das ursprünglich auf den Quellen der WDSYBL SIBYL Tragbaren Komponentenklassen (SIPSYBL SIBYL Tragable Komponenten) und SIBYL Visual Development Tool (SIBYL Visual Development) basiert, aber jetzt ist sein Kern der Kern IBM -Systemobjektmodell (Som), WPS und Opendoc.[41]

Liste der verwandten Standards

  • ISO 8651-2: 1988 Informationsverarbeitungssysteme - Computergrafik - Sprachbindungen für grafische Kernelsysteme (GKS) - Teil 2: Pascal

Rezeption

Pascal erzeugte eine Vielzahl von Antworten in der Computing -Community, sowohl kritisch als auch kostenlos.

Frühe Kritik

Während in den 1980er und frühen 1990er Jahren sehr beliebt war, wurden die Implementierungen von Pascal, die Wirths anfängliche Definition der Sprache eng verfolgten, als ungeeignet für den Einsatz außerhalb des Unterrichts. Brian Kernighan, der die populär gemacht hat C Spracheskizzierte seine bemerkenswerteste Kritik an Pascal bereits 1981 in seinem Artikel "Warum Pascal nicht meine Lieblingsprogrammiersprache ist".[42] Das schwerwiegendste Problem, das Kernighan beschrieben hat, war, dass Arraygrößen und Stringlängen Teil des Typs waren. Daher war es nicht möglich, eine Funktion zu schreiben, die Arrays oder sogar Zeichenfolgen variabler Länge akzeptieren würde. Dies machte es nicht durchführbar, beispielsweise eine Sortierbibliothek zu schreiben. Kernighan kritisierte auch die unvorhersehbare Reihenfolge der Bewertung von Booleschen Ausdrücken, Unterstützung der schlechten Bibliothek und Mangel an Statische Variablen, and raised a number of smaller issues. Also, he stated that the language did not provide any simple constructs to "escape" (knowingly and forcibly ignore) restrictions and limitations. More general complaints from other sources[25][43] noted that the scope of declarations was not clearly defined in the original language definition, which sometimes had serious consequences when using Vorwärtsdeklarationen Zeigertypen definieren oder wenn Datensatzdeklarationen zu einer Leitung geführt werden gegenseitige Rekursion, or when an identifier may or may not have been used in an enumeration list. Another difficulty was that, like Algol 60, the language did not allow procedures or functions passed as parameters to predefine the expected type of their parameters.

Despite initial criticisms, Pascal continued to evolve, and most of Kernighan's points do not apply to versions of the language which were enhanced to be suitable for commercial product development, such as Borland's Turbo Pascal. As Kernighan predicted in his article, most of the extensions to fix these issues were incompatible from compiler to compiler. Since the early 1990s, however, most of the varieties seem condensed into two categories: ISO and Borland-like. Extended Pascal addresses many of these early criticisms. It supports variable-length strings, variable initialization, separate compilation, short-circuit boolean operators, and default (Andernfalls) clauses for case statements.[44]

Siehe auch

Verweise

  1. ^ "About Microsoft's "Delegates"". Archiviert von das Original on 2012-06-27. We looked very carefully at Delphi Objekt Pascal and built a working prototype of bound method references in order to understand their interaction with the Java programming language and its APIs ... Our conclusion was that bound method references are unnecessary and detrimental to the language. This decision was made in consultation with Borland International, who had previous experience with bound method references in Delphi Objekt Pascal.
  2. ^ TechMetrix Research (1999). "Geschichte von Java" (PDF). Java -Anwendungsserverbericht. Archiviert von das Original (PDF) Am 2010-12-29. The project went ahead under the name "green" and the language was based on an old model of UCSD Pascal, which makes it possible to generate interpretive code
  3. ^ "Ein Gespräch mit James Gosling - ACM -Warteschlange". Archiviert Aus dem Original am 16. Juli 2015. Abgerufen 11. August 2015.
  4. ^ Wirth, Niklaus (2000). "The Development of Procedural Programming Languages Personal Contributions and Perspectives". Modulare Programmiersprachen. Vorlesungsnotizen in Informatik. Vol. 1897. pp. 1–10. doi:10.1007/10722581_1. ISBN 978-3-540-67958-5.
  5. ^ Hertzfeld, Andy. "Hungarian folklore.org Archiviert 2015-11-18 bei der Wayback -Maschine: Macintosh Stories. Retrieved 2012-03-06.
  6. ^ https://www.computerhistory.org/atchm/adobe-photoshop-source-code/ Archiviert 2014-05-07 at the Wayback -Maschine, Adobe Photoshop Source Code
  7. ^ "RAD Studio Application Showcase". 2021-10-29.
  8. ^ tiobe.com Archiviert 2012-03-15 in der Wayback -Maschine, Programming Community Index for January 2011.
  9. ^ "Antique Software: Turbo Pascal v5.5".
  10. ^ Computers and Computing. A Personal Perspective. Archiviert 2017-05-10 at the Wayback -Maschine by Niklaus Wirth
  11. ^ cbi.umn.edu, "An Interview with John Brackett and Doug Ross"[Permanent Dead Link], p15, Charles Babbage Institute, 2004
  12. ^ Australian Atomic Energy Commission Research Establishment, Lucas Heights, Nuclear Science and Technology Branch Report, Divisional Research (PDF). International Atomic Energy Agency (IEAE) (Bericht). 1977. p. 22.
  13. ^ Jon Udell, Crash of the Object-Oriented Pascals, BYTE, July, 1989.
  14. ^ M. I. Trofimov, The End of Pascal?, BYTE, March, 1990, p. 36.
  15. ^ Rall, L. B. (1987). "An introduction to the scientific computing language Pascal-SC". Computers. 14: 53–69. doi:10.1016/0898-1221(87)90181-7.
  16. ^ PI (1986-08-29). "Cadmus jetzt mit Kulisch-Arithmetik - Uni Karlsruhe gibt Pascal-Compiler nach München" [Cadmus now comes with Kulisch arithmetic - University Karlsruhe delivers Pascal compiler to Munich]. ComputerWoche (auf Deutsch). Munich – Karlsruhe, Germany: IDG Business Media GmbH. Archiviert von das Original am 2016-05-30. Abgerufen 2016-05-30.
  17. ^ "Pascal-XSC: Pascal for Extended Scientific Computing". Archiviert von das Original on 2014-01-05.
  18. ^ "XSC Software". Archiviert von das Original am 1. November 2015. Abgerufen 11. August 2015.
  19. ^ "Universitaet Wuppertal: Wissenschaftliches Rechnen / Softwaretechnologie". Archiviert von das Original am 6. November 2015. Abgerufen 11. August 2015.
  20. ^ Bamberger, Lothar; Davenport, James H.; Fischer, Hans-Christoph; Kok, Jan; Schumacher, Günter; Ullrich, Christian; Wallis, Peter J. L.; Winter, Dik T.; Wolff von Gudenberg, Jürgen (1990). Wallis, Peter J. L. (ed.). Improving Floating-Point Programming (1. Aufl.). Bath, United Kingdom: John Wiley & Sons Ltd. ISBN 0-471-92437-7.
  21. ^ Michel Gien, "The SOL Operating System", in Usenix Summer '83 Conference, Toronto, ON, (July 1983), pp. 75–78
  22. ^ cs.berkeley.edu Archiviert 2015-02-07 im Wayback -Maschine
  23. ^ Pascal ISO 7185:1990 Archiviert 2012-06-17 at the Wayback -Maschine 6.10
  24. ^ Mandell, Steven L. (1987). Pascal Programming Today. West Publishing Company. ISBN 978-0-314-33935-5.
  25. ^ a b J. Welsh, W. J. Sneeringer, and C. A. R. Hoare, "Ambiguities and Insecurities in Pascal", Software: Practice and Experience 7, pp. 685–696 (1977)
  26. ^ Pascal, Nell Dale and Chip Weems, "Dangling Else", p. 160–161 Archiviert 2017-03-18 at the Wayback -Maschine
  27. ^ "Pascal-S: A Subset and Its Implementation", N. Wirth in Pascal – The Language and Its Implementation, by D.W. Barron, Wiley 1979.
  28. ^ "VAX-11 Pascal V1.0 User's Guide" (PDF).
  29. ^ a b "VSI Pascal for OpenVMS Software Product Description" (PDF). VSI. 2017. Abgerufen 2022-02-07.
  30. ^ "Interview with a Pascal Architect - Compaq Pascal".
  31. ^ "Compaq Pascal Version 5.8 for Tru64 UNIX Software Product Description".
  32. ^ "VSI's John Reagan Interview on GEM vs. LLVM for X86/64". eCube Systems. 2019-03-12. Archiviert von das Original on 2020-08-12. Abgerufen 2022-02-07.
  33. ^ ISO/IEC 7185: 1990 Pascal (PDF). Archiviert von das Original (PDF) am 27. Januar 2016. Abgerufen 16. September 2014.
  34. ^ Wirth, Niklaus (July 1973). The Programming Language Pascal (Revised Report). ETH Zürich. doi:10.3929/ethz-a-000814158.
  35. ^ Extended Pascal: ISO/IEC 10206:1990. Archiviert von das Original am 2016-03-27. Abgerufen 16. September 2014.
  36. ^ "Sprachstandards: Pascal, erweitertes Pascal, Fortan". Archiviert von das Original Am 2014-07-14. Abgerufen 16. September 2014.
  37. ^ 770x3.160-1989-IEEE/ANSI-Standard für die Programmiersprache erweiterte Pascal. 1990. doi:10.1109/IEEESTD.1990.101061. ISBN 978-0-7381-4247-0.
  38. ^ "Erweiterter Pascal - freies Pascal -Wiki".
  39. ^ "Virtual Pascal für OS/2". Archiviert von das Original am 30. August 2011. Abgerufen 3. April 2016.
  40. ^ Wolfgang (15. Oktober 2020). "WDSIBYL: Visuelle Entwicklungsumgebung". WDSibyl.org. Archiviert vom Original am 2020-02-12. Abgerufen 2020-04-20.
  41. ^ "netlabs.org - Projekt: Open Sibyl". Archiviert von das Original am 4. März 2016. Abgerufen 3. April 2016.
  42. ^ Brian W. Kernighan (1981). "Warum Pascal nicht meine Lieblingsprogrammiersprache ist". Archiviert 2009-04-28 bei der Wayback -Maschine
  43. ^ O. Lecarme, P. Desjardins, "Weitere Kommentare zur Programmiersprache Pascal", Acta Informatica 4, S. 231–243 (1975).
  44. ^ "Erweiterter Pascal". Archiviert von das Original Am 2015-10-18.

Weitere Lektüre

  • Niklaus Wirth: Die Programmiersprache Pascal. 35–63, Acta Informatica, Band 1, 1971.
  • C. A. R. Hoare: "Hinweise zur Datenstrukturierung". In O.-J. Dahl, E. W. Dijkstra und C. A. R. Hoare, Herausgeber, Strukturierte Programmierung, Seiten 83–174. Academic Press, 1972.
  • C. A. R. Hoare, Niklaus Wirth: Eine axiomatische Definition der Programmiersprache Pascal. 335–355, Acta Informatica, Band 2, 1973.
  • Kathleen Jensen und Niklaus Wirth: Pascal - Benutzerhandbuch und Bericht. Springer-Verlag, 1974, 1985, 1991,, ISBN0-387-97649-3 und ISBN3-540-97649-3.
  • Niklaus Wirth: Algorithmen + Datenstrukturen = Programme. Prentice-Hall, 1975, ISBN0-13-022418-9.
  • Niklaus Wirth: Eine Bewertung der Programmiersprache Pascal. 23–30 ACM Sigplan Hinweise auf Band 10, Ausgabe 6, Juni 1975.
  • N. Wirth und A. I. Wasserman, ed: Programmiersprache Design. IEEE Computer Society Press, 1980
  • D. W. Barron (Hrsg.): Pascal - Die Sprache und ihre Implementierung. John Wiley 1981, ISBN0-471-27835-1
  • Peter Grogono: Programmierung in Pascal, Überarbeitete Ausgabe, Addison-Wesley, 1980
  • Richard S. Forsyth: Pascal in Arbeit und Spiel, Chapman und Hall, 1982
  • N. Wirth, M. Broy, Ed und E. Denert, ed: Pascal und seine Nachfolger in Software -Pioniere: Beiträge zum Software -Engineering. Springer-Verlag, 2002, ISBN3-540-43081-4
  • N. Wirth: Erinnerungen an die Entwicklung von Pascal. ACM Sigplan Notices, Band 28, Nr. 3, März 1993.