Andrey Terekhov: von Fortran nach Python





In diesem Herbst berichtete Andrei Terekhov, Leiter der Abteilung für Systemprogrammierung an der Matmek St. Petersburg State University, Professor, Doktor der Physik und Mathematik, unseren Kollegen über die Geschichte der populären Programmiersprachen und deren Eindringen in die UdSSR. Zusammen mit Andrei Nikolaevich haben wir auf der Grundlage seines Vortrags Material darüber vorbereitet, wie verschiedene Sprachen den Eisernen Vorhang überquerten, wie sie in verschiedene Architekturen übersetzt wurden und wie einige von ihnen in Mode kamen. Allgemeine Trends und persönliche Eindrücke - für alle, die sich einen Überblick über die Geschichte des Themas verschaffen möchten.



Für diejenigen , die es vorziehen, ein Video der Vorlesung zu sehen oder hören gebucht hier .



Programmierung in Codes



Die erste wirklich elektronische Maschine hieß ENIAC - Electronic Numerical Integrator and Computer - und wurde 1946 von den Amerikanern hergestellt. Das Herzstück solcher Computer ist ein Auslöser, der 1918 von einem Einwohner von Petrograd, Michail Aleksandrowitsch Bonch-Bruevich, erfunden wurde. Im Gegensatz zu Popov gelang es ihm sogar, die Rechte an der Erfindung zu sichern. Die Schaltung selbst war ziemlich berühmt: Mein Vater, ein militärischer Elektronikingenieur, benutzte diese Auslöser vor dem Krieg.



Bereits 1949 stellte der sowjetische Ingenieur Sergej Alekseevich Lebedev in Kiew eine MESM-Maschine her. Es blieb nur drei Jahre hinter den Amerikanern zurück, obwohl Kiew fast vollständig zerstört wurde. Lebedev erhielt sogar ein Gebäude in der Stadt Feofania - damals noch 30 km von der Stadt entfernt -, wo es vor dem Krieg eine psychiatrische Klinik gab. Aber dann gab es einfach keine anderen Gebäude.





Ein Gebäude in Feofaniya, heute ein Stadtteil, und in den 1950er Jahren - einem Vorort von Kiew, in dem Sergei Lebedev arbeitete.



Für diese ersten Computer wurde in Binärcodes geschrieben. Angenommen, das Programm sieht folgendermaßen aus: 01 100 101 110. Angenommen, 01 ist ein Additionscode. Dann heißt es hier: Fügen Sie das Wort an Adresse 100 mit dem Wort an Adresse 101 hinzu und schreiben Sie das Ergebnis an Adresse 110. Im Allgemeinen ist alles klar, aber als Person, die Programmierung in Codes gefunden hat, sage ich Ihnen, dass dies schrecklich unpraktisch ist ... Ja, das verstehen Sie wahrscheinlich selbst.



Von 1964 bis 1966 studierte ich an der 157. Mathematikschule in der Nähe von Smolny, einer der bekanntesten in Leningrad, die nicht RONO, sondern der Akademie der Pädagogischen Wissenschaften unterstellt war. Dort hatten wir zwei "Ural-1" und zwei Technikerinnen, die nicht wussten, wie man sie programmiert, aber diese Autos reparieren konnten. Ich selbst musste auch erst lernen, wie man sie repariert, aber dann haben wir im Ural viele nützliche Programme geschrieben, auch für Geologen haben wir etwas gezählt.



Das Hauptprogrammierproblem in Codes ist nicht "01 02 03" - es ist leicht zu merken. Wenn Sie jedoch gemäß der Arbeitslogik etwas zwischen zwei Zellen einfügen müssen, damit einige Arrays synchronisiert werden, werden alle Adressen unter dieser Einfügung gecrawlt. Wir müssen alles neu schreiben und vor allem neu füllen.



Wir haben Programme auf 35-mm-Film gestopft, den wir in einen Ring geklebt haben, wenn eine Schleife benötigt wurde. Geben Sie das Programm ein - notieren Sie die Prüfsumme mit einem Bleistift. Sie geben erneut ein: Wenn die Prüfsummen übereinstimmen, ist alles korrekt. Wenn sie nicht übereinstimmen, geben Sie sie zum dritten Mal ein und so weiter, bis sie abfallen.



Es war so unpraktisch, dass die Leute schnell symbolische Ersetzungen fanden. Anstelle von 01 wurde es möglich, nur das Symbol "+" und anstelle der Adresse - a, b oder c - zu schreiben. Es war Assemblersprache, mit einem sehr einfachen Übersetzer konnte das Programm in Maschinencodes übersetzt werden. Es gab zwei Ansichten: In der ersten erstellen Sie eine Tabelle aller Bezeichner und ihrer Adressen, in der zweiten ersetzen Sie die Bezeichner durch Adressen, und das war's.



( ). 101? ? . 102? . , , .





Der Amerikaner John Backus, der 1957 die Sprache FORmula TRANslator erfand, machte eine echte Revolution. IBM, wo er arbeitete, hat sich im Allgemeinen viele Dinge ausgedacht, darunter zum Beispiel Lochkarten. Fortran ermöglichte es, eine Formel zu schreiben, und die ersten Übersetzer wurden daraus erstellt, viel komplexer als ein Übersetzer aus der Assemblersprache. Das heißt, die Leute konnten normale Programme in einer normalen algorithmischen Sprache schreiben.





John Backus gab zu, dass der Hauptanreiz bei seiner Suche Faulheit und der Wunsch war, den Prozess des Schreibens von Programmen zu vereinfachen. Im Bild - Backus auf dem Cover von Think, dem IBM Unternehmensmagazin



Ironischerweise ist Fortran bis heute beliebt, besonders bei Physikern und Ingenieuren, die glauben, dass sie nichts anderes brauchen, obwohl so viele Jahre vergangen sind. Tonnenweise Standardprogramme haben sich angesammelt - riesige Bibliotheken.



Aber wie immer gab es einige bedeutende Fehler. Das teuerste ereignete sich vor mehr als einem halben Jahrhundert. Ein Ingenieur hat ein Programm wie dieses geschrieben:

DO 3 I = 1.4



Dies ist ein Zyklus. Operatoren bis zur Note 3 müssen mit I gleich 1,2, 3, 4 ausgeführt werden. Der Amerikaner hat jedoch einen Fehler gemacht und anstelle eines Kommas zwischen 1 und 4 einen Punkt gesetzt. In Fortran gibt es keine obligatorische Beschreibung, daher wurde kein Fehler gefunden. Infolgedessen wurde der Raumflug zur Venus unterbrochen.



Sogar Lomonosov entdeckte, dass es um die Venus eine sehr dichte Atmosphäre gibt, aber niemand sah die Oberfläche des Planeten. Die Amerikaner schickten eine Rakete mit einer wichtigen Aufgabe: Sie sollte zur Venus fliegen, ein paar Umdrehungen machen, dann unter die Atmosphäre tauchen und die Oberfläche fotografieren. Die Rakete flog drei Monate lang und flog. Als ich tauchte, öffnete sich die Kameraklappe nicht, weil diese Linien für das Öffnen verantwortlich waren. So viele Milliarden Dollar flogen buchstäblich in die Luft. Der Skandal war unglaublich, die Person, die den Fehler gemacht hat, wurde gefunden. 6-7 Milliarden sind selbst für reiche Amerikaner ein spürbarer Verlust. Aber dieser Programmierer wurde nicht verletzt, weil die Dokumente die Unterschriften aller möglichen Chefs hatten.Nach langen Versuchen wurde entschieden, dass Fortran für alles verantwortlich war: Die Regeln für die Bestimmung der Sprache erwiesen sich als sehr unpraktisch und unzuverlässig.



Mitte der 1970er Jahre haben wir den ersten Übersetzer aus Algol 68 gemacht und alle aus den alten Sprachen in ihn übersetzt. Insbesondere wurde die 93. Box übertragen - jetzt ist es das Institut für Funknavigation und Präzise Zeit.





Das Gebäude des Leningrader Forschungsinstituts für Funktechnik - des russischen Instituts für Funknavigation und Zeit - beherbergt heute das Büro der Rossiya-Bank.



Früher befand es sich in einem riesigen gelben Gebäude gegenüber von Smolny, jetzt befindet sich dort eine Bank, und das Institut wurde in die Außenbezirke der Stadt vertrieben.Dann haben wir Dutzende von Programmen von Fortran nach Algol 68 übertragen und immer viermal gewonnen. Ich dachte, es wäre eine Art Betrug, weil wir zweimal gewinnen mussten - nur auf Kosten des besten Übersetzers. Warum gewinnen wir um vier? Verstanden. Wir haben Algol 68 unterrichtet - ich habe Vorlesungen gehalten, meine Schülerin Leha Rokhlin hat geübt. Und in Fortran schrieben sie wie ein Huhn mit einer Pfote.



Einmal rief mich mein ehemaliger Student, ein Major der sowjetischen Armee in Reserve, Andrei Sergeevich Agapov, an: „Andrei, in einem der Programme war die Antwort viermal anders als in der Vorstadt". Da mehrere Dutzend Programme gut gelaufen sind, antworte ich: "Es ist mir egal, es passiert." Er: „Nein, dies ist die Steuerung des Radars, die die Koordinaten für das Schießen bestimmt. Wenn die Rakete aufgrund eines Programmfehlers in die falsche Richtung fliegt, scheint dies niemandem ausreichend zu sein. " Ich begann zu verstehen. Ich dachte, dass ALGOL 68 immerhin ein neuer Übersetzer ist. Ich habe alles überprüft - es lügt nicht. Ich fing an, Assembler-Produkte zu lesen - nein, es lügt nicht. Dann begann ich das Fortran-Programm sorgfältig zu lesen. Nichts gefunden. Bereits brutalisiert, verbrachte einen Monat. Ich habe angefangen, Fortrans Assembler-Produktion zu lesen, aber es ist dumm. Gefunden! Aussehen.



Es wurde geschrieben:

X = 9,3.

Aber X war doppelt und 9,3 war kurz. Als Ergebnis wurden zwei Teams geboren.

LE 0, = E '9,3'

STD 0, X.

Auf dem ES-Computer - es gab eine solche Maschine, eine Kopie des IBM 360 - ein 64-Bit-Wort. Und jetzt wurde der LE-Befehl nur in die linke Hälfte des Registers geladen und der Müll in die rechte Hälfte. Und der STD-Befehl hat das gesamte Register ausgegeben. Da der Prozess schlecht konditioniert war, dh kleine Änderungen in den Eingabedaten das Ergebnis stark beeinflussten, ging die Antwort nach 11 Minuten CPU-Zeit viermal auseinander. Es stellt sich heraus, dass ich hier sechs weitere Nullen schreiben musste:

X = 9.3000000

Ich habe diesen Fehler gefunden und mich für den Rest meines Lebens daran erinnert, obwohl es vor 40 Jahren war.




Es gibt das Konzept des "freundlichen Systems" und es gibt - "unfreundlich". Dies ist ein typisches Beispiel für ein unfreundliches System.



Oder ein einfacheres Beispiel, unter dem alle meine Schüler leiden.

X = 1/3

Jeder normale Mensch glaubt, dass es 0,33 sein wird. Feigen Sie! Es wird Null geben. Zwei Ganzzahlen, was bedeutet, dass es eine Ganzzahldivision gibt. Und wenn Sie 0,33 erhalten möchten, setzen Sie zwei Punkte:

X = 1. / 3.

Genug an einem Ort, dann ist es richtig. Aber nochmal - wer wird es bemerken?



Algol 60



Fortran wurde aller Todsünden für schuldig befunden, und die Leute begannen, neue Programmiersprachen zu erfinden. Die Europäer haben sich Algol 60 ausgedacht. Es gibt auch einige Unfug mit Zahlen: Sie haben es sich 1958 ausgedacht - ein Jahr nach Fortran. Aber es war so ungeschickt und schlecht, dass die Sprache erst 1960 auf dem IFIP-Kongress (International Federation of Information Processing) überarbeitet und akzeptiert wurde - daher der Name. Aber die Arbeit ging weiter und 1964 wurde eine überarbeitete Nachricht über Algol 60 veröffentlicht. Wir haben 6 Jahre daran gearbeitet. Denken Sie an diese Zahl, sie wird noch mehrmals angetroffen. Es dauert sechs Jahre, bis die ursprüngliche Version der Sprache perfekt ist.



Der erste Übersetzer in der UdSSR aus Algol 60 wurde im Korolev-Zentrum (dies ist ein Weltrauminstitut, jetzt NPO Energia) unter der Leitung von Svyatoslav Sergeevich Lavrov hergestellt, der seit 1972 Leiter der Abteilung für Computersoftware ist, in der ich jetzt arbeite.





Svyatoslav Lawrow, 1987. Foto aus dem Archiv des Akademikers Andrei Ershov.



Lawrow war der Leiter der externen Abteilung für Ballistik - er war derjenige, der die Flugbahn des ersten Satelliten, die Flugbahn von Gagarin, berechnete. Er erzählte, wie es in der Zeit vor dem Computer aussah, als mehrere hundert Frauen ganze Tage damit verbrachten, Maschinen hinzuzufügen und etwas zu zählen.Nachdem Lawrow irgendwo von den ersten Computern gehört hatte, interessierte er sich für sie, wurde mitgerissen und wechselte schließlich die externe Ballistik zur Programmierung, was den ersten Übersetzer machte. Dann schuf Andrej Petrowitsch Erschow in Nowosibirsk einen optimierenden Übersetzer "Alpha". Sie sagen, dass sogar die Amerikaner es als den besten optimierenden Übersetzer erkannten. Dann machten sie in Moskau TA2 aus dem vollen Algol 60, aber zu diesem Zeitpunkt wurde der volle Algol 60 mit seinen dummen Eigenschaften von niemandem benötigt. Soweit ich weiß, wurde TA2 nie verwendet, aber ich habe viele Jahre am Lawrowski TA1M-Übersetzer gearbeitet. Wir hatten zwei M 20 Maschinen an der Mattech, sie waren mit einem TA1M ausgestattet, der später "Signal" genannt wurde.



PL / 1



Die Amerikaner wurden verbittert, als Algol 60 in Europa erschien und PL / I (Programmiersprache I) machte. Schreckliche Sprache! Hunderte von automatischen Typkonvertierungen in andere Typen. Eine Shell-Sprache, wie sie sagten. Mehrere hundert Bediener: Für jeden einzelnen Bediener - wer wird sich an alle erinnern? Trotzdem wurde diese Sprache auch in der UdSSR sehr beliebt, da die ES-Computer erschienen. Ich habe darüber geschrieben, aber es sind auch Albträume passiert. Sie beschreiben in einer Prozedur die globale Variable A bin fix (Ganzzahl) und in einer anderen Variablen A bin float (Gleitkomma). Dann werden Sie lange nach einem Fehler suchen - der Übersetzer wird nichts sagen.



Kurz gesagt, PL / 1 und in Europa waren nicht nur in der UdSSR stark unbeliebt. Ich war schon oft in den USA und habe das gehörtEs gibt keine kapitalistische und kommunistische Programmierung, aber es gibt verschiedene Stile .



Amerikanischer Stil ist eine Brute-Force-Methode. Wenn jemandem die Rechenleistung einer Maschine fehlt, geht er zu seinem Chef und sagt: "Kaufen Sie mir ein Auto, das doppelt so leistungsstark ist." Normalerweise kaufen sie es.



In Europa - und natürlich in der UdSSR - wurde dies nicht akzeptiert. Ich musste mit dem Kopf nachdenken und einen effizienteren Algorithmus finden.



Einmal traf ich den Chefdesigner der PL / 1-Übersetzer. Sein Nachname Marx ist für einen Sowjet leicht zu merken. Er ist kein Amerikaner, kein Engländer, und diese Übersetzer wurden nicht weit von London entfernt - es gab ein IBM-Zentrum in Europa. Wir haben ihn in Nowosibirsk getroffen, wo es eine große Konferenz gab, auf der Marx einen Bericht erstattete. Er wurde gefragt: "Wie viele Fehler wurden während des Debugging-Prozesses gefunden?" Er: "Ich kann diese Frage nicht beantworten - das Geheimnis der Firma." - "Wie viele Leute hattest du?" Die Antwort ist die gleiche. Dann springt Kes Koster, einer der Autoren von Algol 68 (ich war ihm als Übersetzer verbunden) auf und beginnt in einem ziemlich spezifischen Englisch zu schreien, das alle Kinder jetzt wissen: "Sie entehren unsere freie Welt angesichts dieser unterdrückten Kollegen." Und für mich: "Übersetzen!" Ich: "Es wird hier nicht akzeptiert, Kes." - „Sie haben dich mir zugewiesen, also übersetze!" Ah, gut? Ich fing an zu übersetzen, wie ich es verstand, aber ich verstand es ziemlich genau. Aber niemand hat mich verurteilt. Dann gab es eine Pause mit Gläsern Kaffee und Brandy - dann war es so. Dieser arme Marx steht, und um einen Meter herum gibt es zwei Hohlräume. Ich ging mit zwei Behältern auf ihn zu: "Lass uns trinken!" Er knallte das Glas zu und sagte: „Lass mich dir alles erzählen.In einem privaten Gespräch kann ich, aber vom Podium aus kann ich nicht . " Und so sagte er, dass er 51 Programmierer hatte, dass sie so viele Fehler fanden, dass dies eine so wilde Struktur ist - ein Übersetzer mit PL / 1.



Dann stellte sich heraus, dass wir viel gemeinsam haben. Beide wurden 1949 geboren, beide haben 1971 ihren Universitätsabschluss gemacht - er ist London, ich bin Leningrad. Ich sage: „Wie ist das? Wir haben Sie viermal in der Sendezeit, dreimal in der Zählgeschwindigkeit und unendlich oft in der Codelänge geschlagen. Warum bist du so dumm? " Er: "Wie viele Jahre haben Sie an dem Übersetzer von Algol 68 gearbeitet?" - "Sieben Jahre". - „Wir hätten dich vor langer Zeit aus deinem Job geworfen. Jahr - fahren Sie die Ware, sonst sind Sie auf der Straße. " Damals habe ich zum ersten Mal erfahren, was Time to Market ist.Es ist wichtig, schnell zu arbeiten, sonst wird jemand diese Nische auf dem Markt besetzen. Dann wirst du es besser machen, aber niemand wird davon erfahren. In der UdSSR wussten wir das nicht.



ALGOL 68



Die Europäer antworteten auf PL / I mit ALGOL 68. Es gab eine solche Arbeitsgruppe 2.1 IFIP zu algolähnlichen Sprachen. Als 1964 eine überarbeitete Nachricht über Algol 60 veröffentlicht wurde, entschieden sie, dass diese Richtung vorbei war, etwas völlig anderes musste entwickelt werden. Sie warfen einen Schrei: Was machen wir als nächstes? Die Antwort war das Weißbuch - ich habe es in meinem Regal, eine Seltenheit, nicht im Internet - mit Vorschlägen an dieselbe Gruppe 2.1.



Es enthält einen langen Artikel von Ralph London über Beweise für die Programmkorrektheit, Barbara Liskovs Artikel "The CLU Language", in dem sie zuerst das Konzept abstrakter Datentypen formulierte. Es gab auch einen Artikel des niederländischen Gelehrten van Weingaarden über zweistufige Grammatiken. Die zweistufige Grammatik ist in Bezug auf die Leistung wie eine Turing-Maschine. Sie kann verwendet werden, um nicht nur die genaue Syntax zu beschreiben - jetzt werden Sie niemanden überraschen -, sondern auch die genaue Semantik der Sprachausführung. Und nach vielen Treffen beschlossen die Mitarbeiter der Arbeitsgruppe 2.1, die zweistufigen Grammatiken von van Weingaarden als Grundlage für die zukünftige Sprache zu verwenden . Gesagt, getan.



Die Gruppe umfasste etwa 200 Personen, darunter sowjetische Wissenschaftler: Ershov, Lawrov. Mein wissenschaftlicher Berater Grigory Samuilovich Tseitin schrieb viele Briefe an die Teilnehmer - sie dankten ihm sogar. Im Dezember 1968 nahm die IFIP eine neue Sprache namens Algol 68 an.



Es war eine unheimliche Sprache, ein Albtraum. Einerseits war es sehr formal und präzise, ​​andererseits war es unmöglich, darin zu schreiben.



Und so kommt Grigory Samuilovich Tseitin in unser Labor für Systemprogrammierung, in dem ich dann als Mathematikstudent im dritten Jahr gearbeitet habe, und sagt: „Leute, sie haben sich eine solche Sprache ausgedacht - niemand kann sie implementieren. Lassen Sie es uns implementieren. " Wir: "Lass uns gehen" - und kamen zu diesem Geschäft. Mein Diplom im Jahr 1971 hieß "Suche nach einer Geisterkette in einem Übersetzer aus Algol 68 für ES-Computer". 11 Seiten handgeschriebener Text und ein Arbeitsprogramm. Fünf Jahre später fand ich einen Fehler in diesem Diplom, aber als ich mich verteidigte, bemerkte es niemand.



Die Sprache war sehr schwierig, und wir waren nicht allein, wenn wir so dachten. Gruppe 2.1 wurde fortgesetzt, und 74 wurde ein überarbeiteter Bericht über ALgol 68 veröffentlicht. Weitere sechs Jahre harte Arbeit des großen Ausschusses.Diese Sprache hat sich bereits als ziemlich verständlich erwiesen und wurde in vielen Gruppen sowohl in Europa als auch in Amerika implementiert. In der UdSSR gab es eine Gruppe von Mikhail Ruvimovich Levinson am Zentralwirtschaftsinstitut Ekaterina Logvinovna Yushchenko in Kiew. Sasha Maslov und sein Team machten Algol 68 für Elbrus. Andrey Petrovich Ershov schuf einen optimierenden Übersetzer aus Algol 68 in Nowosibirsk. In Leningrad, als Grigory Tseitin diese Werke verließ, fiel die Aufgabe buchstäblich auf mich.





"Algol: Erfolg und Misserfolg", Zusammenfassung des Berichts des Schweizer Wissenschaftlers Peter Naur, der am 31. Mai 1968 auf dem Kolloquium "10 Jahre Algol" in Zürich vorgestellt wurde. Aus dem Archiv des Akademikers Andrei Ershov



Ich musste mich nicht mit jemandem zusammensetzen, um Leiter des Labors zu werden. Alles stellte sich von selbst heraus, als wir mit dem Debuggen von IBM / 360 in Moskau NITSEVT begannen. Wir hatten einen Doktor der Wissenschaften, ungefähr fünf Kandidaten und ungefähr 15 Studenten, während wir Artikel und Bücher schrieben, war alles in Ordnung. Aber dann begannen die Menschen der älteren Generation langsam abzufallen. Die Zeit bei NITSEVT wurde uns nur nachts zugewiesen. Wir waren drei Tage in Moskau - wir arbeiten nachts, wir schlafen tagsüber, aber die Jungen kümmerten sich nicht darum. Außerdem habe ich gerne nachts gearbeitet. Es gab amerikanische und sowjetische Geräte. Werfen Sie das Kabel, und Sie arbeiten normal an guten amerikanischen Geräten und wechseln am Morgen zurück. Tagsüber durften sie das nicht.Aber meine älteren Kollegen konnten es nicht ertragen: Als sie den Übersetzer übergaben, war ich bereits sowohl Chefdesigner als auch Leiter des Labors.



Wir haben den ersten Übersetzer aus Algol 68 in der UdSSR gemacht. Mit einiger Verzögerung die Gruppen von Maslov und Levinson. Juschtschenko machte eine interessante Entwicklung in Kombination mit einer Datenbank. In Nowosibirsk wurde eine große wissenschaftliche Forschung namens "Beta Project" durchgeführt. Sie versuchten, das Problem stark zu verallgemeinern, so dass ALgol 68 und PL / I und Pascal mit einem Übersetzer durchgeführt werden konnten. Sowohl in den BESM-6-Codes als auch in den ES EVM-Codes. Das Projekt wurde nie vollständig abgeschlossen, aber sie haben einige einzelne Übersetzer.



Als wir mit der Implementierung von Algol 68 begannen, stellte sich heraus, dass niemand außer dem Militär wirklich seine Zuverlässigkeit brauchte.Aber dann fielen sie darauf herein und viele Militärorganisationen wechselten dazu.





Inhaltsverzeichnis des überarbeiteten Berichts über ALgol 68 der Arbeitsgruppe 2.1. An erster Stelle steht Adrian van Weingaarden



Pascal



Einer der Teilnehmer der Arbeitsgruppe 2.1 war Niklaus Wirth. Er und einige andere bekannte Wissenschaftler - Hoare, Dijkstra, leider unser Lawrow - stimmten der Meinung der Mehrheit nicht zu und verfassten im Dezember 1968 den sogenannten Minderheitenbericht. Darin drückten sie die Idee aus, dass "der Berg eine Maus geboren hat: Diese Sprache ist so groß und komplex, dass niemand sie jemals in ihrem Leben verstehen wird." In der Tat ist dies wahr, aber nach sechs Jahren Arbeit und der Veröffentlichung der überarbeiteten Botschaft ist Algol 68 eine recht nette und verständliche Sprache geworden . In akademischen Kreisen hat es eine ziemlich große Popularität erlangt, in der industriellen Programmierung, insbesondere in Amerika, jedoch nicht. Und so machte Genosse Wirth einen solchen Trick mit seinen Ohren - er schuf eine Sprache, die er Pascal nannte. Er selbst stammt aus Zürich, war aber in diesem Moment Praktikant bei Stanford.



Pascal - "beschnitten" Algol 68. Das heißt, er nahm eine Schere, schnitt dies, das, das ab ... Die erste Beschreibung war - wie ein Notizbuch für 2 Kopeken: 24 Blatt, dünn, dünn. Da wir zu diesem Zeitpunkt bereits die Arbeit an ALGOL 68 abgeschlossen hatten, verpflichtete sich einer meiner Schüler, Pascal mit unseren eigenen Methoden zu implementieren. Aber jeder Morgen begann mit seinen Fragen an mich: "Warum können Sie viele Operatoren zwischen Wiederholung und bis ohne zusätzliche Klammern und danach schreiben - nur eine?", "Warum können Sie schreiben, wenn danach, aber nicht danach?" Was tun, wenn ich die Prozedur selbst als Parameter übergeben möchte, um beispielsweise ein Mehrfachintegral zu berechnen? ". Es gab viele Inkonsistenzen. Algol 68 hatte Einschränkungen, so dass unendliches Gedächtnis nicht funktionieren würde, so dass Selbstreduktion nicht funktionieren würde. In Pascal nein.



In jenen Jahren war ein Witz in der UdSSR beliebt: „Ich arbeite in der Bettfabrik, jeden Tag, wenn ich die Details nach Hause trage, möchte ich ein Bett machen, aber egal wie ich es zusammenstelle, ich bekomme ein Maschinengewehr“. Also, wenn wir begannen Pascal zu beheben, haben wir Algol 68 . Alle lachten, sagten, es sei seltsam, aber ich finde daran nichts Überraschendes. Es ist nur so, dass dreihundert Menschen, einschließlich uns, seit vielen Jahren an Algol 68 arbeiten.



Es ist lustig, dass meine Frau Kes Coster, dem Autor der Austauschabteilung, über die Fehler schrieb, die sie gefunden und Antworten erhalten hat: "Sehr geehrter Herr Terekhova." Zuerst waren wir beleidigt und dann sagten sie uns: "Wie wird er erraten, dass Terekhova sie ist?" Dann haben wir angefangen, Galiy Terekhov zu unterzeichnen, und er hat alles verstanden.



Wirth ist ein kluger Kerl, er arbeitete an der Verfeinerung von Pascal und 1974 zusammen mit einem Mann namens Jensenmachte den Standard dicker, Seiten 100–120. Als Wirth seinen 80. Geburtstag feierte, gab es in Zürich ein kleines Symposium, zu dem ich unter 20-30 Gästen eingeladen wurde. Als ich ankam, stellte sich heraus, dass Jensen eine Frau war, Kathleen. Um ehrlich zu sein, war es eine Überraschung für mich. Sie hat viel getan, um Pascal von einem Spielzeug in eine ernsthafte Sprache zu verwandeln.





Kathleen Jensens Rede auf dem Symposium zum 80. Geburtstag von Niklaus Wirth



Dann machte sich Borland an die Arbeit und machte Borland Pascal - bereits zwei dicke Bände. So entstand eine Sprache, die bereits verwendet werden konnte . Vorher - Schule verwöhnen.



Als der überarbeitete Bericht über Pascal Wirth und Jensen herauskam - ebenfalls einige Jahre nach der Veröffentlichung des ersten Standards - schrieb Wirth im Vorwort: "Pascal hat ein höheres Niveau als Algol 60". Der Übersetzungsredakteur war der berühmte sowjetische Programmierer Dmitry Podshivalov, ein ziemlich böser Onkel. Er liebte es, scharf zu sprechen. Nach Wirths Bemerkung erschien in der Übersetzung eine Fußnote: „Es ist schwierig, dieser Aussage zuzustimmen. Versuchen Sie, eine Matrixmultiplikationsprozedur in Pascal zu schreiben. “ Tatsache ist, dass Sie in Pascal wie in C übrigens ein Array von null bis einhundert bis tausend beschreiben können, aber Sie können es nicht bis zu N beschreiben - es gibt keine dynamischen Arrays. Wie beschreiben Sie das Matrixmultiplikationsverfahren? Sie wissen nicht, welche Matrizen multipliziert werden sollen. Daher hatte Podshivalov absolut Recht. Auch für mich eine übergeordnete Sprache, in der Sie kein Matrixmultiplikationsverfahren schreiben können!





Nikolaus Wirth und der Lilith-Computer wurden an der Schweizerischen Hochschule Zürich entwickelt. Wirth hat eine neue Sprache, Modula-2, speziell für die Implementierung der Software für dieses System entwickelt . 1981 wurde



Pascal schließlich bei Schülern und Schülern sehr beliebt. Für das Grundlernen des Programmierens ist er wirklich gut. Für Dummies bedeutet Zuverlässigkeit wenig: Denken Sie nur an ein Loch in der Sprache - eins, zwei, drei. Aber es kann leicht gelesen und geschrieben werden. Meiner Meinung nach hat sich Pascal nicht mit industrieller Programmierung befasst - wo Verantwortung erforderlich ist und Sie große Softwaresysteme mit hoher Zuverlässigkeit schreiben müssen.



Hölle



Nachdem die Europäer Algol 68 gemacht hatten, entschieden die Amerikaner - warum geht es uns schlechter? Und sie beschlossen, eine neue Sprache für das US-Verteidigungsministerium zu schaffen. Es ist nach wie vor der größte IT-Kunde der Welt, da kein Unternehmen in Bezug auf die Finanzierung mithalten kann. Die Amerikaner beschlossen, dies wissenschaftlich anzugehen. Formulieren Sie zunächst die Anforderungen für die Sprache. Sie wurden so genannt: Strohmann, Holzmann, Stahlmann. Und der letzte ist Stein. Ich habe diese dicken Bände klar und gut artikuliert gelesen.



Dann kündigten sie einen Wettbewerb mit einem Preisgeld von mehreren Millionen Dollar an. Aber sie verstanden, wenn keine besonderen Maßnahmen ergriffen würden, würde IBM definitiv gewinnen.Es ist wie das Sprichwort über Fußball: "Jeder spielt, aber die Deutschen gewinnen." In diesen Jahren hatte IBM 20-mal mehr Finanzumsatz als sein engster Konkurrent. Sie sagten auch "IBM und die 6 Zwerge": ein Unternehmen mit einem Umsatz von 16 Milliarden und sechs weiteren - jeweils 1 Milliarde Tonnen. IBM würde jeden vernichten. Daher stufte das Verteidigungsministerium die Teilnehmer ein, niemand wusste, wer wer war. In der ersten Phase wurden 17 Teams ausgewählt. Sie gaben ihnen ziemlich viel Geld - jeweils Millionen von Dollar. In der zweiten Phase wurden vier Teams ausgewählt und nach Farben benannt: Rot, Gelb, Grün, Blau. Ihre Finanzierung lag bereits in Milliardenhöhe, und sie mussten nicht nur die Sprache, sondern auch einen Testübersetzer erstellen, damit sie getestet werden konnten. Erst als sie ihre Arbeit beendet hatten, wurden die Umschläge geöffnet.



Es gab einen wilden Skandal, denn plötzlich gewannen die Europäer - das Team von Jean Ishbia aus Paris. Mit einer Sprache, die ALgol 68 sehr ähnlich und PL / 1 völlig unähnlich ist. Die Sprache wurde Ada genannt - zu Ehren der weltweit ersten Programmiererin Ada Lovelace, Assistentin von Charles Babbage und übrigens Tochter von Lord Byron, aber das wissen Sie wahrscheinlich gut.





Jean David Ishbia arbeitete in der Forschungs- und Entwicklungsabteilung des französischen Computerherstellers Bull



Um all diese "Steinmänner" zu schaffen, dh Forderungen zu formulieren, beriefen die Amerikaner Komitees ein. Hunderte von Spezialisten wurden benötigt, um die ganze Angelegenheit zu bewerten. Daher wurden ganze Gruppen von Programmierern von Europa in die USA gelockt. In einem der Komitees wurde ein Kommunist gefasst - der Ungar Ivan Bach, Mitglied der Ungarischen Sozialistischen Arbeiterpartei, landete praktisch im Pentagon. 1976 lehrte ich an der Universität von Budapest, wo ich ihm vorgestellt wurde. Wir wurden Freunde, gingen durch Budapest und er erzählte mir, wie alles mit den Amerikanern arrangiert ist. Schließlich schickte er mir eine der vorläufigen Beschreibungen der Sprache der Hölle auf Band. Wir haben noch drei Jahre später daran gearbeitet. Denken Sie auch hier an die Nummer 6.



Und so brachte ich der UdSSR die erste Beschreibung der Sprache der Hölle durch das Land. Natürlich haben wir uns für einen Übersetzer entschieden. Ich bin in dieser Angelegenheit bereits erfahren und dachte: Da dies der Standard des US-Verteidigungsministeriums ist, werden unsere Soldaten ihn sicherlich nutzen wollen. Dann werde ich ihnen sagen: "Ich habe einen Übersetzer." Aber ich habe viel vermisst - unsere Krieger waren nicht an Ada interessiert. Meiner Meinung nach vergebens. Sie haben alles gestohlen - es war auch notwendig, es zu stehlen.



Als ich mich entschied, einen Übersetzer zu machen, sagte ein Mitarbeiter meines Labors, vier Jahre älter als ich: „Andrei, Sie haben viel beaufsichtigt. Warum seid ihr alle für euch und für euch selbst? Lassen Sie mich diese Arbeit leiten. " Ich antworte: „Ich habe es mitgebracht, überlegt, ich weiß, wie es geht. Aber okay, führe. " Er hat mich überzeugt, und ich hatte schon etwas zu tun. Drei Monate vergingen und es stellte sich heraus, dass die Gruppe, die in der Nähe von Ada gegründet wurde, von einem Absolventen von fast diesem Jahr geleitet wurde. Es war mein Schüler Arkady Popov. Ich frage: „Wie so? Warum hast du es dem Idioten erzählt? " Und er: "Ich habe es nicht bestanden - sie haben es mir weggenommen." Der junge Mann erwies sich als sehr aktiv.



Aber die Geschichte endet nicht dort. Der junge Mann sagt zu mir: „Andrey, du bist der falsche Anführer. Wir machen alles mit Prototypen, wir wollen schnell etwas sehen. In der Wissenschaft ist es notwendig: ein Projekt erstellen und ihm folgen. " Ich: „Du führst - mach es. Wir werden zur gleichen Zeit sehen. "



Eine Gruppe von vier Personen verbrachte zwei Jahre damit, drei dicke Bände zu tippen - einen Entwurf. Wir haben uns um die Jungen gekümmert, uns über sie gefreut, nach Abschluss des Entwurfs hatten wir sogar einen kleinen Alkohol. Ein feierlicher Moment - zwei Jahre Arbeit sind abgeschlossen. Die Implementierung dauerte jedoch drei Monate, und es stellte sich heraus, dass sie im Projekt und in einer Datenstruktur, die alles andere stark beeinflusst, falsch waren. Arkady kam zu mir und bat um Vergebung: "Wir haben uns getäuscht." Trotzdem machte diese Gruppe den ersten Übersetzer in der UdSSR aus der Sprache der Hölle. Es stimmt, später als sie es wollte und auf normale Weise, wie alle anderen auch.





Oleg Perminov, "Einführung in die ADA-Programmiersprache", 1991



Java und Python



Hier enden meine Lieblingssprachen. Der weitere Weg war nicht mehr so ​​revolutionär.



Sagen wir Java. Basierend auf einer virtuellen Maschine, Code-Portabilität. Sogar Wikipedia sagt, dass P-Codes irgendwann im Jahr 1978 erfunden wurden. Aber nein! Ich habe Wirth persönlich gefragt, wer den P-Code hat. Er antwortete: "Ich habe es erfunden." Als Pascal es tat, ging er zum Rektor der Stanford University: „Es gibt eine Sprache, in der Studenten gut unterrichtet werden können. Lasst uns?" Rektor: „Komm schon! Ich habe nur sechs Arten von Computern. Habe Pascal bei allen. " Wirth sagte, dass er fast gestorben wäre - es ist unmöglich, sechs Übersetzer allein zu machen. Und dann erstellte er einen P-Code, eine virtuelle Maschine. Es stellte sich heraus, dass er einen Übersetzer von Pascal zu p-Code in p-Code geschrieben hatte, und dann wurde auf jeder Maschine ein p-Code-Interpreter erstellt - dies ist ein sehr einfaches Montageprogramm mit mehreren hundert Zeilen. Und alles hat funktioniert. Wir verwenden diese Idee immer noch. Niklas sagtdass er den p-Code erfunden hat, und zwar nicht 78, sondern 71. Ich habe auch von dem P-Code in den frühen 70ern gehört - einige Informationen haben uns erreicht.



Jetzt macht Wirth etwas Ähnliches wie wir und wir machen eine Version der C-Sprache - sicherer, mit vollständigerer Kontrolle. Es stellt sich heraus, dass wir auch hier nicht die Ersten sind. Es gibt bereits eine solche Sprache - Di, sie wurde von Andrei Alexandrescu erfunden. Ich kenne ihn persönlich - ich habe ihn auf einer Konferenz gesehen.



Ich werde nur ein paar Worte über Python sagen. Es ist eine Sprache, die nicht zum Schreiben großer Programme verwendet werden kann. Aber es ist sehr gut für das Prototyping: schnell auf dem Knie nachholen und sehen, was passiert. Also benutzen sie es im Grunde. Eine leichte Sprache mit einer Vielzahl von Bibliotheken. Aber ich kann mir nicht vorstellen, dass sie die Steuerung einer Rakete oder einer Telefonzentrale in Python schreiben würden - es ist nicht für ein großes Hardwaresystem gedacht. Eigentlich hat mir Guido van Rossum selbst davon erzählt, als er mir erzählte, wie und warum Python darauf gekommen ist.



Si



Ich werde näher auf die Geschichte der C-Sprache eingehen - eine der beliebtesten. Ken Thompson entwickelte 1970 ein Betriebssystem, das jetzt Unix heißt. Es war eine coole Veranstaltung. Dafür verwendete er die typenlose Sprache B. Wenig später kam Martin Richard auf die BCPL-Sprache - die Entwicklung der Bi-Sprache, ebenfalls typenlos. Dann beschloss Dennis Ritchie, alles in eine effizientere und zuverlässigere C-Sprache umzuschreiben, die er selbst erfunden hatte. Er verließ sich auf B und BCPL, fügte aber die Typkontrolle hinzu.





Die UNIX-Entwickler Ken Thompson und Dennis Ritchie arbeiten an der PDP-11. Foto von Peter Hammer, circa 1970



Es stellte sich als lustig heraus. Richies erste Veröffentlichung erschien 1978, als Xi bereits populär geworden war und sogar die UdSSR erreichte. Ich kannte C, weil der Unix-Quellcode frei verbreitet wurde - dies war die erste Erfahrung eines Open-Source-Projekts. Die Leute haben C folgendermaßen studiert: Lesen Sie es - ein Array ist so geschrieben, ein Schnitt wie dieser, eine Schleife wie diese. Das war's, nichts anderes wird benötigt. Der erste Artikel des Autors der Sprache erschien jedoch nur wenige Jahre, nachdem alle Menschen auf der Welt ihn bereits genau kennengelernt hatten.



C ist eine sehr gute Sprache, ich mag es, aber es hat Löcher. Ich möchte das beheben, arbeite jetzt daran und werde sicherstellen, dass zuverlässigere Versionen verwendet werden.



Cobol





Das Cover des Berichts über die Cobol-Sprache, das vom US-Verteidigungsministerium für die Konferenz im April 1960 erstellt wurde.



Cobol, dieser Unhold, wurde ebenfalls von den Amerikanern erfunden. Tatsache ist, dass Fortran ursprünglich für wissenschaftliche Berechnungen erfunden wurde, während die Amerikaner bereits in jenen Jahren viele Computer in der Wirtschaft verwendeten - um die Produktion zu kontrollieren. Cobol wurde speziell für die Arbeit mit Wirtschaftsdaten erfunden.



Die Sprache ist sehr seltsam, aber sie erwies sich als gut für wirtschaftliche Berechnungen. Sie können sagen, solange Sie möchten, dass es voller Löcher und schlampig ist, aber die Hälfte der weltweiten Finanzprogramme darauf geschrieben sind, arbeiten die russische Zentralbank und die Sberbank auch an Kobol. Ich weiß das gut, weil meine Schüler überall sind. Sie schreiben keine neuen Programme darauf, aber es gibt Unmengen alter.



Kobol gab mir die Möglichkeit, während der Perestroika zu überleben. Ende der achtziger Jahre hatten wir eine mächtige Gruppe von Übersetzern - die ersten Übersetzer von Algol 68, von Ada, von Sprachen der künstlichen Intelligenz, Robotersteuerung. Alles war in Ordnung, aber die Perestroika brach aus, und ein Strom von Programmen aus den USA strömte hierher. Amerikanische Sender überschwemmten den Markt und da niemand für irgendetwas bezahlte - dies war die Ära der Piraterie -, vergaßen sie mein Team. Ich war fast verzweifelt, obwohl ich zu diesem Zeitpunkt das Unternehmen "Terkom" gegründet hatte - Terekhov und das Team.



Ich wäre wahrscheinlich verschwunden, aber dann hatten die Amerikaner ein geschäftliches Problem.Sie hatten Tonnen von Programmen in Cobol angesammelt, aber ihre Wartung erwies sich als sehr teuer, nur sehr wenige Menschen kennen diese Sprache. Und dann beschlossen sie, ein solches Reengineering durchzuführen - um Kobol-Programme auf moderne Plattformen zu übertragen. Versucht an der Duke University, aber gescheitert. Aber in ihrer Gesellschaft gab es einen Eingeborenen der UdSSR. Eigentlich traf ich erst auf meiner sechsten oder siebten Reise in die USA einen in Amerika geborenen Amerikaner. Lenya Erlikh, eine ehemalige Einwohnerin von Odessa, sagte: "Wenn die Amerikaner nicht können, werden die Russen vielleicht Erfolg haben." Und wir haben es geschafft. Im Allgemeinen ist die Sprache monströs, aber sie hat mir geholfen, in schwierigen Zeiten zu überleben.



All Articles