ALGOL
Paradigma | Prozedural, Imperativ, strukturiert |
---|---|
Familie | Algol |
Entworfen von | Bauer, Bottenbruch, Rutishauer, Samelson, Backus, Katz, Perlis, Wegstein, Naur, Vauquois, Van Wijngaarden, Holz, Grün, McCarthy |
Erstmals erschienen | 1958 |
Disziplin tippen | Statisch, stark |
Zielfernrohr | Lexikalisch |
Beeinflusst | |
Die nachfolgenden imperativen Sprachen (einschließlich so genannter Algol-ähnlich Sprachen) z.B. Pl/i, Simula, Pascal, C und Planen |
Algol (/ˈælɡɒl, -ɡɔːl/; kurz für "Algorithmische Sprache"))[1] ist eine Familie von Imperativ Computer Programmiersprachen ursprünglich 1958 entwickelt. Algol beeinflusste viele andere Sprachen stark und war die Standardmethode für Algorithmus Beschreibung verwendet von der Verband für Rechenmaschinen (ACM) in Lehrbüchern und akademischen Quellen seit mehr als dreißig Jahren.[2]
In dem Sinne, dass die Syntax der meisten modernen Sprachen ist "algolartig",[3] Es war wohl einflussreicher als drei andere Programmiersprachen auf hoher Ebene, unter denen es ungefähr zeitgemäß war: Forran, Lispeln, und Cobol.[4] Es wurde entwickelt, um einige der wahrgenommenen Probleme mit FORTRAN zu vermeiden, und führte schließlich viele andere Programmiersprachen, einschließlich Pl/i, Simula, BCPL, B, Pascal, und C.
Algol eingeführt Codeblöcke und die Start
...Ende
Paare, um sie abzugrenzen. Es war auch die erste Sprache implementiert verschachtelte Funktion Definitionen mit lexikalischer Bereich. Darüber hinaus war es die erste Programmiersprache, die der formalen Sprachdefinition und durch die detaillierte Aufmerksamkeit schenkte Algol 60 Bericht eingeführt Backus -Naur -Form, ein Direktor formelle Grammatik Notation für Sprachdesign.
Es gab drei Hauptspezifikationen, benannt nach den Jahren, in denen sie zum ersten Mal veröffentlicht wurden:
- Algol 58 - ursprünglich vorgeschlagen, genannt zu werden IAL, zum Internationale algebraische Sprache.
- Algol 60 - zuerst implementiert als X1 Algol 60 1961. Überarbeitete 1963.[5][6][7]
- Algol 68 - Einführte neue Elemente, darunter flexible Arrays, Scheiben, Parallelität und Bedieneridentifikation. Überarbeitet 1973.[8]
Algol 68 unterscheidet sich erheblich von Algol 60 und wurde nicht gut aufgenommen. Im Allgemeinen bedeutet "Algol" Algol 60 und seine Dialekte.
Geschichte
Algol wurde in einem Treffen im Jahr 1958 gemeinsam von einem Ausschuss europäischer und amerikanischer Informatiker im Jahr 1958 entwickelt Schweizer Federal Institute of Technology in Zürich (vgl. Algol 58). Es wurde drei verschiedene Syntaxe angegeben: eine Referenzsyntax, eine Publikationssyntax und eine Implementierungssyntax. Die verschiedenen Syntaxe ermöglichten es, verschiedene Schlüsselwortnamen und Konventionen für Dezimalpunkte (Kommas vs Perioden) für verschiedene Sprachen zu verwenden.
Algol wurde hauptsächlich von Forschungs -Informatikern in den USA und in Europa eingesetzt. Die Verwendung in kommerziellen Anwendungen wurde durch das Fehlen von Standard behindert Input-Output Einrichtungen in seiner Beschreibung und des mangelnden Interesses an der Sprache durch große Computeranbieter, andere als Burroughs Corporation. Algol 60 wurde jedoch zum Standard für die Veröffentlichung von Algorithmen und hatte tiefgreifende Auswirkungen auf die zukünftige Sprachentwicklung.
John Backus entwickelte die Backus normale Form Methode zur Beschreibung der Programmiersprachen speziell für Algol 58. Es wurde überarbeitet und erweitert von Peter Naur für Algol 60 und bei Donald Knuth'S Vorschlag umbenannt Backus -Naur -Form.[9]
Peter Naur: "Als Herausgeber des Algol Bulletin wurde ich in die internationalen Diskussionen der Sprache hineingezogen und im November 1959 als Mitglied der European Language Design Group ausgewählt. In dieser Eigenschaft war ich Herausgeber des Algol 60 -Berichts, der produziert wurde Infolge des Algol 60 -Treffens in Paris im Januar 1960. "[10]
Die folgenden Personen nahmen an dem Treffen in Paris teil (vom 1. bis 16. Januar):
- Friedrich L. Bauer, Peter Naur, Heinz Rutishauser, Klaus SamelsonBernard Vauquois, Adriaan van Wijngaarden, und Michael Woodger (aus Europa)
- John W. Backus, Julien Green, Charles Katz, John McCarthy, Alan J. Perlis, und Joseph Henry Wegstein (aus den USA).
Alan Perlis gab eine lebendige Beschreibung des Treffens: "Die Treffen waren anstrengend, endlos und berauschend. Man wurde verschlimmer Die 13 war ausgezeichnet. "
Algol 60 inspirierte viele Sprachen, die darauf folgten. Tony Hoare bemerkte: "Hier ist eine Sprache, die seiner Zeit so weit voraus ist, dass es nicht nur eine Verbesserung seiner Vorgänger, sondern auch für fast alle Nachfolger war."[11] Das Planen Programmiersprache, eine Variante von Lispeln Dies übernahm die Blockstruktur und den lexikalischen Umfang von Algol auch den Wortlaut "überarbeiteten Bericht über das algorithmische Sprachschema" für seine Standarddokumente zur Hommage an Algol.[12]
Algol- und Programmierspracheforschung
Wie Peter Landin Bekannt, Algol war die erste Sprache, die nahtlos imperative Effekte mit dem ((Call-by-Namen) Lambda -Kalkül. Die vielleicht eleganteste Formulierung der Sprache ist darauf zurückzuführen John C. Reynoldsund es zeigt am besten seine syntaktische und semantische Reinheit. Reynolds 'idealisiertes Algol leitete auch ein überzeugendes methodologisches Argument für die Eignung lokaler Effekte im Kontext von Call-by-Namen Call-by-Wert Sprachen wie Ml. Die konzeptionelle Integrität der Sprache machte es zu einem der Hauptziele der semantischen Forschung zusammen mit Programmierbarer Funktionen (PCF) und ML.[13]
IAL Implementierungen Zeitleiste
Bisher gab es mindestens 70 Augmentationen, Erweiterungen, Ableitungen und Subluages von Algol 60.[14]
Name | Jahr | Autor | Land | Beschreibung | Ziel -CPU |
---|---|---|---|---|---|
ZMMD-Implementierung | 1958 | Friedrich L. BauerHeinz Rutishauser, Klaus Samelson, Hermann Bottenbruch | Deutschland | Implementierung von Algol 58 | Z22 (später ZUSE's Z23 wurde mit einem Algol 60 Compiler geliefert)[15] |
X1 Algol 60 | August 1960[16] | Edsger W. Dijkstra und Jaap A. Zonneveld | Niederlande | Erste Implementierung von Algol 60[17] | Electrologica X1 |
Elliott Algol | 1960er Jahre | C. A. R. Hoare | Vereinigtes Königreich | Gegenstand der 1980 Turing Vorlesung[18] | Elliott 803, Elliott 503, Elliott 4100 Serie |
Fröhlich | 1960 | Jules Schwartz | Vereinigte Staaten von Amerika | A Dod Hol vor Ada | Verschiedene (siehe Artikel) |
Burroughs Algol (Mehrere Varianten) | 1961 | Burroughs Corporation (mit Teilnahme von Hoare, Dijkstra, und andere) | Vereinigte Staaten von Amerika | Basis der Burroughs (und nun Unisys MCP basierend) Computer | Burroughs große Systeme und auch ihre Mitteltöner. |
Fallalgol | 1961 | Fallinstitut für Technologie[19] | Vereinigte Staaten von Amerika | Simula wurde ursprünglich als Simulationsverlängerung des Fallalgols beauftragt | Univac 1107 |
Gogol | 1961 | William M. McKeeman | Vereinigte Staaten von Amerika | Für das Odin-Zeit-Sharing-System[20] | PDP-1 |
REGNECENTRALEN ALGOL | 1961 | Peter Naur, Jørn Jensen | Dänemark | Implementierung von Vollalgol 60 | Dask in Regnecentralen |
Dartmouth Algol 30 | 1962 | Thomas Eugene Kurtz et al. | Vereinigte Staaten von Amerika | LGP-30 | |
USS 90 Algol | 1962 | L. Petrone | Italien | ||
Algol -Übersetzer | 1962 | G. van der Mey und W.L. Van der Poel | Niederlande | Staatsbedrijf der posterijen, Telegrafie en Telefonie | ZEBRA |
Kidsgrove Algol | 1963 | F. G. Duncan | Vereinigtes Königreich | Englische Elektrofirma KDF9 | |
Valgol | 1963 | Val Schorre | Vereinigte Staaten von Amerika | Ein Test der Meta II Compiler Compiler | |
Wetzstein | 1964 | Brian Randell und L. J. Russell | Vereinigtes Königreich | Atomic Power Division of English Electric Company. Vorläufer zu Ferranti Pegasus, Nationale physische Laboratorien AS und English Electric Deuce Implementierungen. | Englische Elektrofirma KDF9 |
Nu Algol | 1965 | Norwegen | Univac | ||
Algek | 1965 | UdSSR | А? ээ und basierend auf Algol-60 und Cobol Unterstützung für wirtschaftliche Aufgaben | Minsk-22 | |
Algol w | 1966 | Niklaus Wirth | Vereinigte Staaten von Amerika | Vorgeschlagener Nachfolger von Algol 60 | IBM System/360 |
Malgol | 1966 | publ. A. Viil, M Kotli & M. Rakhendi, | Estland, UdSSR | Minsk-22 | |
Algams | 1967 | GAMS -Gruppe (га м, група автоатизesse | Comecon | Minsk-22, später Es evm, Besm | |
Algol/Zam | 1967 | Polen | Polnischer ZAM -Computer | ||
Simula 67 | 1967 | Ole-Johan Dahl und Kristen Nygaard | Norwegen | Algol 60 mit Klassen | Univac 1107 |
Triplex-Algol Karlsruhe | 1967/1968 | Karlsruhe, Deutschland | Algol 60 (1963) mit Triplex -Zahlen zum Intervallarithmetik | [21] | |
Chinesisches Algol | 1972 | China | Chinesische Zeichen, ausgedrückt über das Symbolsystem | ||
Dg/l | 1972 | Vereinigte Staaten von Amerika | Dg Finsternis Computerfamilie | ||
S-Algol | 1979 | Ron Morrison | Vereinigtes Königreich | Zugabe orthogonaler Datentypen mit beabsichtigter Verwendung als Lehrsprache | PDP-11 mit einer anschließenden Implementierung auf der Java VM |
Die Burroughs -Dialekte enthielten spezielle Bootstrapping -Dialekte wie z. Espol und Newp. Letzteres wird weiterhin für die UNISYS MCP -Systemsoftware verwendet.
Eigenschaften
Algol 60 wie offiziell definiert hatte keine I/o Einrichtungen; Implementierungen definierten ihre eigenen auf eine Weise, die selten miteinander kompatibel war. Im Gegensatz dazu bot Algol 68 eine umfangreiche Bibliothek von Transport (Eingabe/Ausgabe) Einrichtungen.
Algol 60 erlaubte zwei Bewertungsstrategien zum Parameter Vorbeigehen: das gemeinsame Call-by-Wert, und Call-by-Namen. Call-by-Namen hat im Gegensatz zu bestimmte Auswirkungen Call-by-Reference. Zum Beispiel ohne die Parameter als angeben Wert oder HinweisEs ist unmöglich, ein Verfahren zu entwickeln, das die Werte zweier Parameter austauscht, wenn die tatsächlichen Parameter, die in übergeben werden, eine Ganzzahlvariable und ein Array sind, das von derselben Ganzzahlvariablen indiziert wird.[22] Denken Sie daran, einen Zeiger zu übergeben, um (i, a [i]) in eine Funktion zu tauschen. Jedes Mal, wenn der Tausch verwiesen wird, wird er neu bewertet. Sag i: = 1 und a [i]: = 2, also jedes Mal, wenn der Swap verwiesen wird, wird die andere Kombination der Werte zurückgegeben ([1,2], [2,1], [1,2] und so weiter ). Eine ähnliche Situation erfolgt mit einer zufälligen Funktion als tatsächliches Argument.
Call-by-Namen ist vielen Compiler-Designern für die Interessenten bekannt. "Thunks"Die werden verwendet, um es zu implementieren. Donald Knuth entwickelte das "Mann- oder Jungen -Test"Um Compiler zu trennen, die korrekt implementiert wurden"Rekursion und nicht lokale Referenzen. "Dieser Test enthält ein Beispiel für Call-by-Namen.
Algol 68 wurde unter Verwendung eines zweistufigen Grammatikformalismus definiert, der von erfunden wurde Adriaan van Wijngaarden und was seinen Namen trägt. Van Wijngaarden Grammatiken verwenden ein Kontextfreie Grammatik Erzeugen eines unendlichen Produktionssatzes, das ein bestimmtes Algol 68 -Programm erkennen; Insbesondere sind sie in der Lage, die Art von Anforderungen auszudrücken, die in vielen anderen Programmiersprachenstandards als "Semantik" bezeichnet werden und in zweideutig natürlichen Sprachprosa ausgedrückt werden und dann in Compilern als implementiert werden müssen ad hoc Code an den formalen Sprachparser beigefügt.
Beispiele und Portabilitätsprobleme
Code Beispielvergleiche
Algol 60
(Die Art und Weise, wie der kühne Text geschrieben werden muss ganze Zahl. Dies ist bekannt als als Stropping.))
Verfahren Absmax (a) Größe: (n, m) Ergebnis: (y) Unterlagen: (i, k); Wert n, m; Array a; ganze Zahl n, m, i, k; real y;Kommentar Das absolut größte Element der Matrix A, der Größe N durch m wird auf y und die Einbilder dieses Elements an i und k übertragen;Start ganze Zahl p, q; y: = 0; i: = k: = 1; zum P: = 1 Schritt 1 bis um n tun zum F: = 1 Schritt 1 bis um m tun wenn ABS (a [p, q])> y dann Start y: = abs (a [p, q]); I: = P; k: = q Ende Ende Absmax
Hier ist ein Beispiel dafür, wie man a produziert Tisch mit Elliott 803 -Algol.[23]
Floating Point Algol -Test 'Beginnen Sie Real A, B, C, D' Read D 'für a: = 0,0 Schritt D bis 6,3 Beginnen Sie mit Print Punch (3), ££ l ??' B: = sin (a) 'c: = cos (a)' Print Punch (3), Sameline, ausgerichtet (1,6), a, b, c 'Ende' Ende '
Punch (3) sendet die Ausgabe eher an den Teleprinter als an den Bandstempel.
Sameline unterdrückt den Wagenrücklauf + Leitungsvorschub, der normalerweise zwischen Argumenten gedruckt ist.
Ausgerichtete (1,6) steuert das Format der Ausgabe mit 1 Ziffer vor und 6 nach dem Dezimalpunkt.
Algol 68
Die folgenden Codeproben sind Algol 68 -Versionen der obigen Algol 60 -Code -Stichproben.
Algol 68 Implementierungen verwendeten Algol 60er Ansätze an Stropping. In den Falltken von Algol 68 mit dem Fett gedruckt Schrift sind reservierte Wörter, Typ (Moduss) oder Operatoren.
Proc ABS max = ([,]real a, Ref real y, Ref int ich k)real:Kommentar Das absolut größte Element der Matrix A, der Größe ⌈a von 2⌈a wird auf y und die Unterläufe dieses Elements an i und k übertragen; Kommentar Start real y: = 0; i: = ⌊a; K: = 2⌊a; zum p aus ⌊a zu ⌈a tun zum q aus 2⌊a zu 2⌈a tun wenn Abs a [p, q]> y dann y: = Abs a [p, q]; I: = P; k: = q fi Od Od; yEnde # ABS Max # #
HINWEIS: Untere (⌊) und obere (⌈) Grenzen eines Arrays und Array -Slicing sind dem Programmierer direkt zur Verfügung.
Floating Point Algol68 Test: ( real A B C D; # printf - Sendet die Ausgabe an die Datei auffallen. # # printf ($ p $); - wählt a neue Seite # printf (($ pg $, "eingeben D:")); neu hinzufügen); zum Schritt aus 0 während A: = Schritt*d; a <= 2*pi tun printf ($ l $); # $ l $ - wählt a Neue Zeile. # b: = sin (a); C: = cos (a); printf (($ z-d.6d $, a, b, c)) # Formate mit 1 Ziffer vor und 6 nach dem Dezimalpunkt. # Od ))
Zeitleiste: Hallo Welt
Die Variationen und die mangelnde Portabilität der Programme von einer Implementierung zur anderen werden leicht durch den Klassiker demonstriert Hallo Weltprogramm.
Algol 58 (IAL)
Algol 58 hatte keine E/A -Einrichtungen.
Algol 60 Familie
Da Algol 60 keine E/A -Einrichtungen hatte, gibt es keine tragbaren Hallo Weltprogramm in Algol. Die nächsten drei Beispiele sind in Burroughs erweitertem Algol. Die ersten beiden direkten Ausgaben am interaktiven Terminal, an dem sie betrieben werden. Der erste verwendet ein Zeichenarray, ähnlich C. Die Sprache ermöglicht es dem Array -Kennung als Zeiger auf das Array und daher in einer Ersatzanweisung.
START DATEI F(NETT=FERNBEDIENUNG); Ebcdic Array E[0:11]; ERSETZEN E DURCH "HALLO WELT!"; SCHREIBEN(F, *, E); ENDE.
Ein einfacheres Programm mit einem Inline -Format:
START DATEI F(NETT=FERNBEDIENUNG); SCHREIBEN(F, <"HALLO WELT!">); ENDE.
Ein noch einfacheres Programm mit der Anzeigeanweisung. Beachten Sie, dass seine Ausgabe an der Systemkonsole enden würde ('SPO'):
START ANZEIGE("HALLO WELT!") ENDE.
Ein alternatives Beispiel: Die Verwendung von Elliott -Algol -E/A ist wie folgt. Elliott-Algol verwendete verschiedene Zeichen für "Open-STRING-Quote" und "Close-String-Quote", die hier von dargestellt werden ‘ und ’ .
Programm Hallo Leute; Start drucken ‘Hallo Welt’ Ende;
Unten finden Sie eine Version von Elliott 803 Algol (A104). Der Standard-Elliott 803 verwendete fünf Lochpapierband und hatte somit nur oberes Gehäuse. Dem Code fehlten Zitatzeichen, also wurde £ (UK -Pfund -Zeichen) für offenes Angebot verwendet und? (Fragezeichen) für ein enges Zitat. Spezielle Sequenzen wurden in doppelte Zitate platziert (z. B. ££ L ??
Hifolks 'Beginn drucken £ hello world £ l?' ENDE'
Das IKT 1900 Serie Algol E/A -Version erlaubte Eingabe von Papierband oder Lochkarte. Papierband 'Full' -Modus erlaubte eine niedrigere Gehäuse. Die Ausgabe war für einen Liniendrucker. Die offenen und engen Zitatzeichen wurden mit '(' und ')' und Räumen um%dargestellt.[24]
'Begin' schreibe text ('(' hello%world ')'); 'ENDE'
Algol 68
Algol 68 Der Code wurde mit reservierten Wörtern in der Regel in Kleinbuchstaben veröffentlicht, jedoch fett oder unterstrichen.
Start printf (($ gl $, "Hallo, Welt!"))Ende
In der Sprache des "Algol 68 -Berichts" die Input-Output Die Einrichtungen wurden gemeinsam als "Unterbrechung" bezeichnet.
Zeitleiste der Algol -Sonderzeichen
Die Algole wurden zu einer Zeit konzipiert, als die Charakter -Sets vielfältig waren und sich schnell entwickelten; Auch die Algole wurden so definiert, dass nur so Großbuchstaben Briefe waren erforderlich.
1960: Ifip - Die Algol 60 -Sprache und -bericht enthielten mehrere mathematische Symbole, die auf modernen Computern und Betriebssystemen verfügbar sind, aber leider wurden auf den meisten Computersystemen zu dieser Zeit nicht unterstützt. Zum Beispiel: ×, ÷, ≤, ≥, ≠, ¬, ∨, ∧, ⊂, ≡, ␣ und ⏨.
1961 September: ASCII - die ASCII Charakter -Set, dann hatte in einem frühen Entwicklungsstadium das \ (Back Slash) Charakter hinzugefügt, um die Algols zu unterstützen Boolesche Betreiber /\ und \/.[25]
1962: Alcor - Dieses Charakter -Set enthielt das ungewöhnliche "᛭" Runic Cross[26] Charakter für die Multiplikation und das "⏨" -Decimal -Exponentsymbol[27] Für schwimmende Punktnotation.[28][29][30]
1964: Gost - Der sowjetische Standard von 1964 GOST 10859 erlaubte die Codierung von 4-Bit-, 5-Bit-, 6-Bit- und 7-Bit-Zeichen in Algol.[31]
1968: Der "Algol 68 -Bericht" - verwendete vorhandene Algol -Zeichen und weiter übernommen →, ↓, ↑, □, ⌊, ⌈, ⎩, ⎧, ○, ⊥ und ¢ Zeichen, die auf dem gefunden werden können IBM 2741 Tastatur mit Typball (oder Golfball) Druckköpfe eingefügt (wie die APL Golfball). Diese wurden Mitte der 1960er Jahre erhältlich, während Algol 68 eingezogen wurde. Der Bericht wurde in russisch, deutsch, französisch und bulgarisch übersetzt und erlaubte das Programmieren in Sprachen mit größeren Charaktersätzen, z. B.,. kyrillisch Alphabet des Sowjets Besm-4. Alle Charaktere von Algol sind auch Teil der Unicode Standard und die meisten von ihnen sind in mehreren beliebten erhältlich Schriftarten.
2009 Oktober: Unicode - Das ⏨
(Dezimaler Exponentsymbol) Für die Schwimmpunktnotation wurde Unicode 5.2 für die Rückwärtskompatibilität mit historischer Hinsicht hinzugefügt Buranprogramm Algol -Software.[32]
Siehe auch
Verweise
- ^ Der Name dieser Sprachfamilie wird manchmal in gemischtem Fall angegeben (Algol 60 Archiviert 25. Juni 2007 bei der Wayback -Maschine) und manchmal in allen Großbuchstaben (Algol68 Archiviert 13. September 2014 bei der Wayback -Maschine). Der Einfachheit halber verwendet dieser Artikel Algol.
- ^ Gesammelte Algorithmen des ACM Archiviert 17. Oktober 2011 im Wikiwix Compressed Archives of the Algorithmen. ACM.
- ^ O'hearn, P. W.; Tennent, R. D. (September 1996). "Algolähnliche Sprachen, Einführung". Archiviert von das Original am 14. November 2011.
- ^ "Die Algol -Programmiersprache" Archiviert 6. Oktober 2016 bei der Wayback -Maschine, Universität von Michigan-Dearborn
- ^ Backus, J. W.; Bauer, F. L.; Green, J.; Katz, C.; McCarthy, J.; Perlis, A. J.; Rutishauser, H.; Samelson, K.; Vauquois, b.; Wegstein, J. H.; Van Wijngaarden, A.; Woodger, M. (Mai 1960). Naur, Peter (Hrsg.). "Bericht über das algorithmische Sprachalgol 60". Kommunikation der ACM. Kopenhagen. 3 (5): 299–314. doi:10.1145/367236.367262. ISSN 0001-0782. S2CID 278290.
- ^ "Überarbeiteter Bericht über das algorithmische Sprachalgol 60". 1963. Archiviert Aus dem Original am 25. Juni 2007. Abgerufen 8. Juni 2007.
- ^ "Ein Algol 60 -Übersetzer für den x1" (PDF). 1961. Abgerufen 7. Januar 2021.
- ^ "Überarbeiteter Bericht über das algorithmische Sprachalgol 68" (PDF). 1973. Archiviert (PDF) Aus dem Original am 13. September 2014. Abgerufen 13. September 2014.
- ^ Knuth, Donald E. (1964). "Backus Normal Form gegen Backus Naur Form". Kommunikation der ACM. 7 (12): 735–736. doi:10.1145/355588.365140. S2CID 47537431.
- ^ ACM Award Citation: Peter Naur Archiviert 2. April 2012 bei Archiv-It, 2005
- ^ "Hinweise zum Programmiersprache Design" Archiviert 15. September 2009 bei der Wayback -Maschine, WAGEN. Hoare, Dezember 1973. Seite 27. (Diese Aussage wird manchmal fälschlicherweise zugeschrieben Edsger W. Dijkstraauch an der Implementierung des ersten Algol 60 beteiligt Compiler.))
- ^ Dybvig, R. K.; et al. Rees, Jonathan; CLEBER, William; Abelson, Hal (Hrsg.). "Überarbeitete (3) Bericht über das algorithmische Sprachschema (der Erinnerung an Algol 60 gewidmet)". Archiviert Aus dem Original am 14. Januar 2010. Abgerufen 20. Oktober 2009.
- ^ O'hearn, Peter; Tennent, Robert D. (1997). Algolähnliche Sprachen. Cambridge, Massachusetts, USA: Birkhauser Boston. doi:10.1007/978-1-4612-4118-8. ISBN 978-0-8176-3880-1. S2CID 6273486.
- ^ "Die Enzyklopädie der Computersprachen". Archiviert von das Original am 27. September 2011. Abgerufen 20. Januar 2012.
- ^ Geschichte des Computermuseums Archiviert 20. August 2010 bei der Wayback -Maschine, Historischer Zuse-Computer Z23, restauriert vom Konrad Zuse Schule in Hünfeld, für das Computer Museum History Center in Mountain View (Kalifornien) USA
- ^ Daylight, E. G. (2011). "Dijkstra's Rallying -Schrei nach der Verallgemeinerung: Das Aufkommen des rekursiven Verfahrens, Ende der 1950er bis Anfang der 1960er Jahre". Das Computerjournal. 54 (11): 1756–1772. Citeseerx 10.1.1.366.3916. doi:10.1093/comjnl/bxr002. Archiviert Aus dem Original am 12. März 2013.
- ^ Kruseman Aretz, F.E.J. (30. Juni 2003). "Der Dijkstra-Zonneveld-Algol 60 Compiler für den Electrologica x1". Softwareentwicklung (PDF). Geschichte der Informatik. Amsterdam: Centrum Wiskunde & Informatica. Archiviert (PDF) Aus dem Original am 4. März 2016.
- ^ Hoare, Antony (1980). "Die alten Kleider des Kaisers". Kommunikation der ACM. 24 (2): 75–83. doi:10.1145/358549.358561. Archiviert Aus dem Original am 13. September 2017.
- ^ Koffman, Eliot. "Alles, was ich wirklich in CS1 kennenlernen muss" (PDF). Archiviert von das Original (PDF) am 12. Oktober 2012. Abgerufen 20. Mai 2012.
- ^ "Gogol-PDP-1-Algol 60 (Computersprache)". Online Historische Enzyklopädie von Programmiersprachen. Archiviert Aus dem Original am 2. Februar 2018. Abgerufen 1. Februar 2018.
- ^ Wippermann, Hans-Wilm (1968) [1967-06-15, 1966]. "Definition von Schrankenzahl in Triplex-Algol". Computer (auf Deutsch). Karlsruhe, Deutschland: Springer. 3 (2): 99–109. doi:10.1007/bf02277452. ISSN 0010-485x. S2CID 36685400. (11 Seiten)
- ^ Aho, Alfred V.; Sethi, Ravi; Ullman, Jeffrey D. (1986). Compiler: Prinzipien, Techniken und Werkzeuge (1. Aufl.). Addison-Wesley. ISBN 0-201-10194-7., Abschnitt 7.5 und Referenzen darin
- ^ "803 Algol" Archiviert 29. Mai 2010 bei der Wayback -Maschinedas Handbuch für Elliott 803 Algol
- ^ "ICL 1900 -Serie: Algol -Sprache". ICL Technische Veröffentlichung 3340. 1965.
- ^ Wie ASCII seinen Rückgang bekam Archiviert 11. Juli 2014 bei der Wayback -Maschine, Bob Bemer
- ^ Eisen-/Runenkreuz
- ^ Exponentsymbol für Dezimaler
- ^ Baumann, R. (Oktober 1961). "Algol -Handbuch der Alcor -Gruppe, Teil 1" [Algol -Handbuch der Alcor -Gruppe]. Elektronische Readenanlagen (auf Deutsch): 206–212.
- ^ Baumann, R. (Dezember 1961). "Algol -Handbuch der Alcor -Gruppe, Teil 2" [Algol -Handbuch der Alcor -Gruppe]. Elektronische Readenanlagen (auf Deutsch). 6: 259–265.
- ^ Baumann, R. (April 1962). "Algol -Handbuch der Alcor -Gruppe, Teil 3" [Algol -Handbuch der Alcor -Gruppe]. Elektronische Readenanlagen (auf Deutsch). 2.
- ^ "GOST 10859 Standard". Archiviert von das Original am 16. Juni 2007. Abgerufen 5. Juni 2007.
- ^ Broukhis, Leonid (22. Januar 2008). "Überarbeiteter Vorschlag zur Codierung des Dezimal -Exponentensymbols" (PDF). www.unicode.org. ISO/IEC JTC 1/SC 2/WG 2. Archiviert (PDF) Aus dem Original am 31. Juli 2015. Abgerufen 24. Januar 2016.
Dies bedeutet, dass die Notwendigkeit, GOST-basierte Software und Dokumentation zu transkodieren Die Darstellung von BESM-6 kann nicht einfach neu kompiliert werden und erwartet, dass sie zuverlässig funktionieren, und es kann einige menschliche Interventionen erforderlich sein.
Weitere Lektüre
- F.L. Bauer, R. Baumann, M. Feliciano, K. Samelson, Einführung in Algol. Prentice Hall, 1964, ISBN0-13-477828-6
- Brian Randell und L. J. Russell, Algol 60 Implementierung: Die Übersetzung und Verwendung von Algol 60 -Programmen auf einem Computer. Academic Press, 1964. Das Design der Whetstone Compiler. Eine der frühen veröffentlichten Beschreibungen der Implementierung eines Compilers. Siehe die verwandten Papiere: Whetstone Algol Revisited, und Der Whetstone KDF9 -Algol -Übersetzer durch Brian Randell
- Dijkstra, E. W. (1961), Algol 60 Translation: Ein Algol 60 -Übersetzer für den X1 und einen Übersetzer für Algol 60 machen (PDF), Bericht MR 35/61, Amsterdam: Mathematisch Centrum
- Kruseman Aretz, Frans E.J., Der Dijkstra -Zonneveld Algol 60 Compiler für den Electrologica X1 (PDF), Historische Anmerkung Sen, 2, Amsterdam: Centrum Voor Wiskunde en Informatica
- Überarbeiteter Bericht über das algorithmische Sprachalgol 60 von Peter Naur, et al. Algol -Definition
- "Die europäische Seite der letzten Phase der Entwicklung von Algol 60" von Peter Naur
Externe Links
- Geschichte des Algols Bei der Computergeschichte Museum
- Web-aktiviertes Algol-F-Compiler für kleine Experimente[Permanent Dead Link]