ALGOL

Algol (kurz für die Algorithmische Sprache) ist eine Familie von befehlenden Computerprogrammiersprachen, die ursprünglich Mitte der 1950er Jahre entwickelt sind, die außerordentlich viele andere Sprachen beeinflusst hat und die Standardmethode für die Algorithmus-Beschreibung war, die durch den ACM, in Lehrbüchern und akademischen Arbeiten seit den nächsten 30 Jahren und mehr verwendet ist. Im Sinn, dass am meisten neuere Sprachen "einem ALGOL ähnlich" sind, war es wohl von den vier hohen Programmiersprachen am erfolgreichsten, mit denen es, Fortran, Lispeln und COBOL grob zeitgenössisch war. Es wurde entworfen, um einige der wahrgenommenen Probleme mit FORTRAN zu vermeiden, und hat schließlich viele andere Programmiersprachen, einschließlich BCPL, B, Pascal, Simula und C verursacht. Algol hat Codeblöcke und und Paare eingeführt, um sie abzugrenzen, und es war auch die erste Sprache, die verschachtelte Funktionsdefinitionen mit dem lexikalischen Spielraum durchführt. Außerdem war es die erste Programmiersprache, die ernste Aufmerksamkeit auf die formelle Sprachdefinition gelenkt hat und durch das ALGOL 60 Bericht Backus-Naur-Form, eine Hauptnotation für das Sprachdesign eingeführt hat.

Es gab drei Hauptspezifizierungen:

  • Algol 58 - hat ursprünglich vorgehabt, IAL (nach der Internationalen Algorithmischen Sprache) genannt zu werden.
  • Algol 60 - zuerst durchgeführt als X1 Algol 60 Mitte 1960 - hat 1963 revidiert
  • Algol 68 - revidierter 1973 - hat neue Elemente einschließlich der flexiblen Reihe, Scheiben, Parallelismus, Maschinenbediener-Identifizierung und verschiedene Dehnbarkeitseigenschaften eingeführt.

Niklaus Wirth hat sein eigenes Algol W auf dem Algol 60 vor dem Entwickeln des Pascal gestützt. ALGOL-W war beabsichtigt, um das folgende Generationsalgol zu sein, aber das Algol 68 Komitee hat sich für ein Design entschieden, das komplizierter und aber nicht ein gereinigtes vereinfachtes Algol 60 fortgeschritten war. Die offiziellen Algol-Versionen werden genannt nach dem Jahr wurden sie zuerst veröffentlicht.

ALGOL 68 ist vom ALGOL 60 wesentlich verschieden, aber wurde nicht gut erhalten, so dass im allgemeinen "ALGOL" ALGOL 60 und Dialekte davon bedeutet. Bruchstücke der EINEM ALGOL ähnlichen Syntax werden manchmal noch als Pseudocode verwendet.

Wichtige Durchführungen

International Algorithmic Language (IAL) war äußerst einflussreich und hat allgemein den Vorfahren der meisten modernen Programmiersprachen (die so genannten einem ALGOL ähnlichen Sprachen) gedacht. Zusätzlich, in der Informatik, war Algol-Gegenstand-Code eine einfache und kompakte und Stapel-basierte Befehlssatz-Architektur, die hauptsächlich im lehrenden Bearbeiter-Aufbau und der anderen hohen Ordnungssprache verwendet ist (von denen ALGOL allgemein als das erste betrachtet wird).

Geschichte

Algol wurde gemeinsam von einem Komitee von europäischen und amerikanischen Computerwissenschaftlern in einer Sitzung 1958 am ETH Zürich (vgl Algol 58) entwickelt. Es hat drei verschiedene Syntaxen angegeben: eine Bezugssyntax, eine Veröffentlichungssyntax und eine Durchführungssyntax. Die verschiedenen Syntaxen haben ihm erlaubt, verschiedene Schlüsselwort-Namen und Vereinbarung für dezimale Punkte (Kommas gegen Perioden) für verschiedene Sprachen zu verwenden.

Algol wurde größtenteils von Forschungscomputerwissenschaftlern in den Vereinigten Staaten und in Europa verwendet. Sein Gebrauch in kommerziellen Anwendungen wurde durch die Abwesenheit des normalen Eingangs/Ausgabeeinrichtungen in seiner Beschreibung und des Mangels von Interesse auf der Sprache von großen Computerverkäufern gehindert. Algol 60 ist wirklich jedoch der Standard für die Veröffentlichung von Algorithmen geworden und hatte eine tiefe Wirkung auf die zukünftige Sprachentwicklung.

John Backus hat den Backus normale Form-Methode entwickelt, Programmiersprachen spezifisch für das Algol 58 zu beschreiben. Es wurde revidiert und von Peter Naur für das Algol 60 ausgebreitet, und am Vorschlag von Donald Knuth hat Backus-Naur-Form umbenannt.

Peter Naur: "Als Redakteur der Algol-Meldung wurde ich in die internationalen Diskussionen der Sprache angezogen und wurde ausgewählt, um Mitglied der europäischen Sprachdesigngruppe im November 1959 zu sein. In dieser Kapazität war ich der Redakteur des Algols 60 Bericht, erzeugt als das Ergebnis des Algols 60 Sitzung in Paris im Januar 1960."

Die folgenden Leute haben der Sitzung in Paris (vom 1. bis zum 16. Januar) beigewohnt:

  • Friedrich L. Bauer, Peter Naur, Heinz Rutishauser, Klaus Samelson, Bernard Vauquois, Adriaan van Wijngaarden und Michael Woodger (von Europa)
  • John W. Backus, Julien Green, Charles Katz, John McCarthy, Alan J. Perlis und Joseph Henry Wegstein (von den USA).

Alan Perlis hat eine lebhafte Beschreibung der Sitzung gegeben: "Die Sitzungen, erschöpften endlos, und erheiterten. Man ist erschwert geworden, als jemandes gute Ideen zusammen mit den schlechten von anderen verworfen wurden. Dennoch hat Fleiß während der kompletten Periode angedauert. Die Chemie der 13 war ausgezeichnet."

Algol 60 hat viele Sprachen begeistert, die ihm gefolgt sind. C. A. R. Hoare hat sich geäußert: "Hier ist eine Sprache bis jetzt vor seiner Zeit, dass es nicht nur eine Verbesserung auf seinen Vorgängern sondern auch auf fast allen seinen Nachfolgern war." Die Schema-Programmiersprache, eine Variante des Lispelns, das die Block-Struktur und das lexikalische Spielraum des Algols angenommen hat, hat auch die Formulierung angenommen "Hat Bericht über das Algorithmische Sprachschema" für seine Standarddokumente in der Huldigung zum Algol revidiert.

ALGOL und Programmiersprache-Forschung

Wie Peter Landin bemerkt hat, war das Sprach-ALGOL die erste Sprache, um befehlende Effekten mit (Anruf namentlich) Lambda-Rechnung nahtlos zu verbinden. Vielleicht ist die eleganteste Formulierung der Sprache wegen John C. Reynolds, und es stellt am besten seine syntaktische und semantische Reinheit aus. "Das idealisierte" ALGOL von Reynolds hat auch ein überzeugendes methodologisches Argument bezüglich der Eignung von "lokalen" Effekten im Zusammenhang von Sprachen des Anrufs namentlich gemacht, um mit den "globalen" Effekten gegenübergestellt zu werden, die durch Sprachen des Anrufs durch den Wert wie ML verwendet sind. Die Begriffsintegrität der Sprache hat es einen der Hauptgegenstände der semantischen Forschung, zusammen mit PCF und ML gemacht.

IAL Durchführungszeitachse

Bis heute hat es mindestens 70 Zunahmen, Erweiterungen, Abstammungen und Subsprachen des ALGOL 60 gegeben.

Eine Diskussion von Durchführungsproblemen eines Algols 60 Durchführungen kann im Artikel "The early days of Algol" von Nicholas Enticknap und Pat Woodroffe gefunden werden.

Die Dialekte von Burroughs haben spezielle Urladeverfahren-Dialekte wie ESPOL und NEWP eingeschlossen. Der Letztere wird noch für Unisys MCP Systemsoftware verwendet.

Eigenschaften

Algol 60, hatte wie offiziell definiert, keine Eingabe/Ausgabe-Möglichkeiten; Durchführungen haben ihr eigenes auf Weisen definiert, die mit einander selten vereinbar waren. Im Gegensatz hat Algol 68 eine umfassende Bibliothek von transput (Algol 68 Sprachgebrauch für den Eingang/Produktion) Möglichkeiten angeboten.

Algol 60 hat zwei Einschätzungsstrategien für den Parameter-Übergang berücksichtigt: der allgemeine Anruf durch den Wert und Anruf namentlich. Rufen Sie namentlich hatte bestimmte Beschränkungen im Gegensatz zum Anruf durch die Verweisung, es eine unerwünschte Eigenschaft im befehlenden Sprachdesign machend. Zum Beispiel ist es im Algol 60 unmöglich, ein Verfahren zu entwickeln, das die Werte von zwei Rahmen tauschen wird, wenn die wirklichen Rahmen, die darin passiert werden, eine Variable der ganzen Zahl und eine Reihe sind, die durch diese dieselbe Variable der ganzen Zahl mit einem Inhaltsverzeichnis versehen wird. Denken Sie, einen Zeigestock zum Tausch (ich, [ich]) in zu einer Funktion zu passieren. Jetzt wo jedes Mal tauschen, wird Verweise angebracht, es wird wiederbewertet. Sagen Sie mich: = 1 und [ich]: = 2, so jedes Mal tauschen, wird Verweise angebracht es wird die andere Kombination der Werte ([1,2], [2,1], [1,2] und so weiter) zurückgeben. Eine andere problematische Situation passiert eine zufällige Funktion.

Jedoch ist Anruf namentlich noch vom Algol implementors für die interessanten "thunks" geliebt, die verwendet werden, um es durchzuführen. Donald Knuth hat den "Mann- oder Junge-Test" ausgedacht, um Bearbeiter zu trennen, die richtig "recursion und nichtlokale Verweisungen durchgeführt haben." Dieser Test enthält ein Beispiel des Anrufs namentlich.

Algol 68 wurde mit einem Zwei-Niveaus-Grammatik-Formalismus definiert, der von Adriaan van Wijngaarden erfunden ist, und der seinen Namen trägt. Grammatiken von Van Wijngaarden verwenden eine Grammatik ohne Zusammenhänge, um einen unendlichen Satz der Produktion zu erzeugen, die ein besonderes Algol 68 Programm anerkennen wird; namentlich sind sie im Stande, die Art von Voraussetzungen auszudrücken, die in vielen anderen Programmiersprache-Standards "Semantik" etikettiert werden und in der für die Zweideutigkeit anfälligen Prosa der natürlichen Sprache ausgedrückt, und dann in Bearbeitern als Ad-Hoc-Code durchgeführt werden müssen, der der formellen Sprache parser beigefügt ist.

Beispiele und Beweglichkeitsprobleme

Codieren Sie Beispielvergleiche

ALGOL 60

(Die Weise, wie der kühne Text geschrieben werden muss, hängt von der Durchführung, z.B 'GANZE ZAHL' (einschließlich der Anführungszeichen) für die ganze Zahl ab; das ist als das Abziehen bekannt.)

Verfahren Absmax (a) Größe: (n, m) Ergebnis: (y) Subschriften: (ich, k);

schätzen Sie n, M; Reihe a; ganze Zahl n, M, ich, k; echter y;

kommentieren Sie Das absolute größte Element der Matrix a, der Größe n durch die M

wird y und den Subschriften dieses Elements zu mir und k übertragen;

beginnen Sie ganze Zahl p, q;

y: = 0; ich: = k: = 1;

für p: = 1 Schritt 1 bis tun n

für q: = 1 Schritt 1 bis zur M tun

wenn abs ([p, q])> y dann

beginnen Sie y: = abs ([p, q]);

i: = p; k: = q

Ende

beenden Sie Absmax

Hier ist ein Beispiel dessen, wie man einen Tisch mit Elliott 803 Algol erzeugt.

DAS SCHWIMMEN DES PUNKT-ALGOLS PRÜFT'

BEGINNEN SIE ECHTEN A, B, C, D'

LESEN SIE D'

FÜR A: = 0.0 SCHRITT D BIS 6.3 TUN

BEGINNEN SIE

DRUCKSCHLAG (3), ££L??'

B: = SÜNDE (A)'

C: = WEIL (A)'

DRUCKSCHLAG (3), SAMELINE, HAT SICH (1,6), A, B, C' AUSGERICHTET

ENDEN SIE'

ENDEN SIE'

SCHLAG (3) sendet Produktion an den Fernschreiber aber nicht den Streifenlocher.

SAMELINE unterdrückt die Wagen-Rückkehr + zwischen Argumenten normalerweise gedrucktes Linienfutter.

AUSGERICHTET (1,6) Steuerungen das Format der Produktion mit 1 Ziffer vorher und 6 nach dem dezimalen Punkt.

ALGOL 68

Die folgenden Codeproben sind Algol 68 Versionen des obengenannten Algols 60 Codeproben.

Algol die 68 Wiedergebrauch-Algol-60er Jahre abziehend. In Algol-68-Fall-Jetons mit der fetten Schrift sind vorbestellte Wörter, Typen (Weisen) oder Maschinenbediener.

proc abs max = ([], echter a, bezüglich echten y, bezüglich der internen Nummer i, k) echt:

kommentieren Sie Das absolute größte Element der Matrix a, der Größe a durch 2a

wird y und den Subschriften dieses Elements zu mir und k übertragen; Anmerkung

beginnen Sie

echter y: = 0; ich: = a; k: = 2a;

weil p von a bis a tun

für q von 2a bis 2a tun

wenn abs [p, q]> y dann

y: = abs [p, q];

i: = p; k: = q

fi

od

od;

y

enden Sie # abs max

#

Zeichen: Tiefer sind () und obere () Grenzen einer Reihe und das Reihe-Schneiden, für den Programmierer direkt verfügbar.

das Schwimmen des Punkts algol68 Test:

(

echter a, b, c, d;

printf (($pg$, "Gehen d ein:"));

lesen Sie (d);

für den Schritt von 0 während a: = step*d; a

printf ($p$); - wählt eine neue Seite aus.

printf ($l$); - wählt eine neue Linie aus.

printf (($z-d.6d$, a, b, c)) - formatiert Produktion mit 1 Ziffer vorher und 6 nach dem dezimalen Punkt.

Zeitachse: Hallo Welt

Die Schwankungen und fehlen von der Beweglichkeit der Programme von einer Durchführung bis einen anderen wird vom Klassiker hallo Weltprogramm leicht demonstriert.

ALGOL 58 (IAL)

Algol 58 hatte keine Eingabe/Ausgabe-Möglichkeiten.

Algol 60 Familie

Seitdem Algol 60 keine Eingabe/Ausgabe-Möglichkeiten hatte, dort ist nicht hallo Weltprogramm im Algol tragbar. Das folgende Programm hat gekonnt (und noch wird), kompilieren, und laufen Sie auf einer Algol-Durchführung für einen Unisys A-Reihe-Großrechner, und ist eine aufrichtige Vereinfachung des Codes, der vom Sprachführer an der Universität des Computers des Michigans-Dearborn und der Information genommen ist

Wissenschaftsabteilung Hallo Welt! Algol-Beispiel-Programm-Seite.

BEGINNEN SIE

DATEI F (KIND=REMOTE);

EBCDIC REIHE E [0:11];

ERSETZEN SIE E DURCH "HALLO WELT!";

SCHREIBEN SIE (F, *, E);

ENDE.

Ein einfacheres Programm mit einem Reihenformat:

BEGINNEN SIE DATEI F (KIND=REMOTE);

SCHREIBEN SIE (F,

ENDE.

Ein noch einfacheres Programm mit der Anzeigebehauptung:

BEGINNEN SIE ANZEIGE ("HALLO WELT!") ENDE.

Ein alternatives Beispiel, mit der Eingabe/Ausgabe von Elliott Algol ist wie folgt. Elliott Algol hat verschiedene Charaktere für "das offene Schnur-Zitat" und "nahe Schnur-Zitat", vertreten hier durch verwendet 'und'.

Programm HiFolks;

beginnen Sie

drucken Sie 'Hallo Welt';

Ende;

Hier ist eine Version für den Elliott 803 ALGOL (A104) Der Standard Elliott 803 hat 5 Loch-Lochstreifen verwendet, und hatte so nur Großbuchstaben. Der Code hatte an irgendwelchen Zitat-Charakteren Mangel, so wurde £ (Pfund-Zeichen des Vereinigten Königreichs) für das offene Zitat verwendet und? (Fragezeichen) für das nahe Zitat. Spezielle Folgen wurden in Anführungszeichen gelegt (z.B ££L?? erzeugt eine neue Linie auf dem Fernschreiber).

HIFOLKS'

BEGINNEN SIE

DRUCK-£HELLO-WORLD£L??'

ENDEN SIE'

Der ICT hat 1900 Reihe-ALGOL-Eingabe/Ausgabe-Version Eingang vom Lochstreifen erlaubt oder hat Karte geschlagen. Lochstreifen 'volle' Weise hat untere Umschaltung erlaubt. Produktion war einem Liniendrucker.

'BEGINNEN SIE'

'SCHREIBEN SIE TEXT' ("HALLO WELT");

'ENDE'

ALGOL 68

Algol 68 Code wurde mit vorbestellten Wörtern normalerweise im Kleinbuchstaben, aber bolded veröffentlicht oder unterstrichen.

beginnen Sie

printf (($gl$, "Hallo, Welt!"))

Ende

Auf der Sprache des "ALGOL 68 Bericht" wurde der Eingang/Ausgabeeinrichtungen den "Transput" insgesamt genannt.

Zeitachse des Algols spezielle Charaktere

Die Algole wurden konzipiert, als Codierungen verschieden und sich schnell entwickelnd waren; auch wurden die Algole definiert, so dass nur Großbuchstaben erforderlich waren.

1960: IFIP - Das ALGOL 60 Sprache und Bericht haben mehrere mathematische Symbole eingeschlossen, die auf modernen Computern und Betriebssystemen verfügbar sind, aber leider auf am meisten rechnenden Systemen zurzeit nicht unterstützt wurden. Zum Beispiel: ×, ÷, , , , ¬, , , , ,  und .

1961-September: ASCII - Die ASCII Codierung, dann in einer frühen Bühne der Entwicklung, hatte \(Zurückhieb) dazu hinzugefügter Charakter, um die boolean Maschinenbediener des Algols/\und \/zu unterstützen.

1962: ALCOR - Diese Codierung hat das ungewöhnliche "&#x16ed eingeschlossen;" (Eisen böse / runisch böse) Charakter und der "" (Dezimales Hochzahl-Symbol), um Punkt-Notation schwimmen zu lassen.

1964: GOST - Der russische 1964-Standard GOST 10859 hat die Verschlüsselung von 4 Bit, 5 Bit, 6-bit- und 7-Bit-Charaktere im Algol erlaubt.

1968: Das "ALGOL 68 Bericht" - hat vorhandene Algol-Charaktere verwendet, und hat weiter , , , , , , , , ,  und ¢-Charaktere angenommen, die auf der Tastatur von IBM 2741 mit "Golfball"-Druckköpfen eingefügt (wie der APL golfball) gefunden werden können, sind diese verfügbar Mitte der 1960er Jahre geworden, während Algol 68 entworfen wurde. Der Bericht wurde ins Russisch, Deutsch, Französisch und Bulgarisch übersetzt und erlaubt, auf Sprachen mit größeren Codierungen z.B programmierend. Kyrillisches Alphabet des russischen BESM-4. Charaktere ganzen Algols sind auch ein Teil des Standards von Unicode, und die meisten von ihnen sind in mehreren populären Schriftarten verfügbar.

2009-Oktober: Unicode - Der "" (Dezimales Hochzahl-Symbol), um Punkt-Notation schwimmen zu lassen, wurde zu Unicode 5.2 für die rückwärts gerichtete Vereinbarkeit mit historischem Buran (Raumfahrzeug) Algol-Software hinzugefügt.

Siehe auch

Weiterführende Literatur

  • F.L. Bauer, R. Baumann, M Feliciano, K. Samelson, Einführung ins ALGOL. Prentice Hall, 1964, internationale Standardbuchnummer 0-134-77828-6
  • B. Randell und L.J. Russell, Algol 60 Durchführung: Die Übersetzung und der Gebrauch des Algols 60 Programme auf einem Computer. Akademische Presse, 1964. Das Design des Schleifstein-Bearbeiters. Eine der frühen veröffentlichten Beschreibungen, einen Bearbeiter durchzuführen. Sieh die verwandten Papiere: Schleifstein-ALGOL Wieder besucht, und Der Schleifstein KDF9 ALGOL-Übersetzer durch B. Randell
  • E. W, Dijkstra, ALGOL 60 Übersetzung: Ein ALGOL 60 Übersetzer für den x1 und das Bilden eines Übersetzers für das ALGOL 60 berichtet HERR 35/61. Mathematisch Centrum, Amsterdam, 1961.
http://www.cs.utexas.edu/users/EWD/MCReps/MR35.PDF

Links


APL (Programmiersprache) / AWK
Impressum & Datenschutz