Was hat das Ada Lovelace-Programm eigentlich gemacht?

Bild

Die Microsoft Founding-Episode ist eine der bekanntesten in der Computergeschichte. 1975 flog Paul Allen nach Albuquerque, um den BASIC-Interpreter zu demonstrieren, den er und Bill Gates für den Altair-Mikrocomputer geschrieben hatten. Da sie keinen funktionierenden Altair-Computer hatten, testeten sie ihren Interpreter mit einem von ihnen geschriebenen Emulator, der auf Harvards Computersystem lief. Der Emulator basierte nur auf den veröffentlichten Spezifikationen des Intel 8080-Prozessors. Als Allen den Interpreter schließlich auf einem echten Altair-Computer startete - vor der Person, von der sie hofften, dass sie ihre Software kaufen würde - wusste er nicht einmal, ob das Programm funktionieren würde. Sie hat es verdient. Im folgenden Monat gründeten Allen und Gates das neue Unternehmen offiziell.

Über hundert Jahre vor dem BASIC-Dolmetscher Allen and Gates schrieb und veröffentlichte Ada Lovelace ein Computerprogramm. Sie schrieb auch ein Programm für einen Computer, das sie nur aus der Beschreibung kannte. Im Gegensatz zum BASIC-Interpreter wurde ihr Programm jedoch nie ausgeführt, da der Computer, für den es geschrieben wurde, nie erstellt wurde.

Lovelace wird oft als das erste Computerprogramm der Welt bezeichnet. Aber nicht alle sind sich einig, dass es so heißen sollte. Lovelaces Vermächtnis erweist sich als eines der heißesten Themen in der Computergeschichte. Walter Isaacson schrieb, dass die Debatte über Umfang und Verdienste ihrer Beiträge von "geringer akademischer Bedeutung" sei. Der Streit wird unweigerlich durch die Tatsache angeheizt, dass Lovelace eine Frau war. Historiker haben alle Arten von Beweisen angeführt, um zu beweisen, dass die ihr verliehenen Ehrungen mit dem Fall übereinstimmen oder umgekehrt unverdient sind. Aber sie verbringen viel weniger Zeit damit, die technischen Details ihrer veröffentlichten Arbeit zu erklären, was schade ist, da es die technischen Details sind, die den interessantesten Teil dieser Geschichte darstellen. Wer würde sich nicht dafür interessieren, wie das 1843 geschriebene Programm funktionieren soll?

Ehrlich gesagt ist das Lovelace-Programm den Bürgern schwer zu erklären. Aber es sind die Feinheiten ihres Programms, die sie so bemerkenswert machen. Sie hat es verdient, als erste Programmiererin bezeichnet zu werden, oder auch nicht. Ihr Programm wurde mit einer Genauigkeit aufgezeichnet, die alles übertrifft, was vorher war. Sie überlegte sorgfältig, welche Operationen zu Gruppen zusammengefasst werden können, die wiederholt werden können - und erfand so einen Zyklus. Sie erkannte, wie wichtig es war, den Zustand sich ändernder Variablen zu verfolgen, und legte eine Aufzeichnung vor, die diese Änderungen widerspiegelte. Als Programmierer war ich erstaunt darüber, wie sehr Lovelaces Arbeit der Erfahrung ähnelt, Software heute zu schreiben.

Schauen wir uns also das Lovelace-Programm genauer an. Sie entwarf es, um Bernoulli-Zahlen zu berechnen. Um zu verstehen, was es ist, müssen Sie ein paar Jahrtausende in die Vergangenheit zurückgehen, bis zu einem der ältesten Probleme der Mathematik.

Gradsumme


Die Pythagoräer lebten an den Ufern des Mittelmeers und verehrten Zahlen. Eines ihrer Hobbys war das Herstellen von Kieseldreiecken.



Ein Stein, gefolgt von einer Reihe von zwei Steinen, bilden zusammen ein Dreieck aus drei Steinen. Fügen Sie eine weitere Reihe von drei Steinen hinzu, um ein Dreieck aus sechs Steinen zu bilden. Dieser Vorgang kann fortgesetzt werden, indem jedes Mal eine Reihe hinzugefügt wird, wobei die Anzahl der Steine ​​um eins zunimmt. Ein Dreieck aus sechs Reihen enthält 21 Steine. Und wie viele Steine ​​werden im Dreieck von 423 Reihen sein?

Die Pythagoräer suchten nach einer Möglichkeit, die Summe der nächsten Zeile ohne Summierung zu berechnen:

1 + 2 + 3 + ⋯ + n

Als Ergebnis stellten sie fest, dass Sie, wenn Sie zwei gleich große Dreiecke nebeneinander platzieren, so dass sie ein Rechteck bilden, den Bereich des Rechtecks ​​finden und in zwei Teile teilen können, um die Anzahl der Steine ​​in jedem der Dreiecke zu ermitteln:

1 + 2 + 3 + ⋯ + n = n (n + 1) / 2

Archimedes untersuchte ein ähnliches Problem. Er interessierte sich für folgende Sequenz:

1 2 +2 2 +3 2 + ⋯ + n 2

Man kann es sich als eine Säule aus immer größeren Quadraten (bestehend aus winzigen Würfeln) vorstellen, die in Form einer Pyramide übereinander stehen. Archimedes wollte wissen, ob es eine einfache Möglichkeit gibt zu sagen, wie viele Würfel benötigt werden, um eine Pyramide mit beispielsweise 423 Ebenen zu erstellen. Er schrieb eine Lösung für das Problem auf, die auch eine geometrische Interpretation ermöglicht.



Drei Pyramiden können so zusammengefügt werden, dass sie ein rechteckiges Prisma bilden, an dessen einem Ende sich eine kleine Kante mit einem Würfel befindet. Dieser Vorsprung ist ein Dreieck, das den gleichen Regeln folgt wie die Steindreiecke der Pythagoreer. Daher ist das Volumen der gesamten Figur durch die folgende Gleichung gegeben:

3 (1 2 + 2 2 + 3 2 + ⋯ + n 2 ) = (n + 1) n 2 + (1 + 2 + 3 + ⋯ + n)

Wenn wir die Summe der ersten n ganzen Zahlen durch die pythagoreische Gleichung ersetzen und einige algebraische Operationen durchgeführt haben, erhalten wir:

1 2 + 2 2 + 3 2 + ⋯ + n 2 = n (n + 1) (2n + 1) / 6

499 veröffentlichte der indische Mathematiker und Astronom Ariabhata seine als Ariabhatia bekannte Arbeit, die eine Formel zur Berechnung der Würfelsumme enthielt:

1 3 +2 3 +3 3 + ⋯ + n 3 = (1 + 2 + 3 + ⋯ + n) 2

Die Formel für die Summe der ersten n positiven ganzen Zahlen bis zum vierten Grad wurde nur 500 Jahre später veröffentlicht.

Zu diesem Zeitpunkt könnten Sie eine Frage haben: Gibt es eine universelle Methode zur Berechnung der Summe der ersten n ganzen Zahlen, die auf die Potenz von k angehoben werden? Auch Mathematiker waren daran interessiert. Johan Faulhaber, ein deutscher Mathematiker mit leicht fortgeschrittener Numerologie, konnte Formeln für die Summe der ganzen Zahlen bis zum 17. Grad ableiten und 1631 veröffentlichen. Aber es dauerte viele Jahre, und er gab keine allgemeine Lösung. Blaise Pascal entwickelte schließlich 1665 eine verallgemeinerte Methode, die jedoch davon abhing, die Summe der auf frühere Grade angehobenen ganzen Zahlen zu zählen. Um beispielsweise die Summe der ersten n positiven Ganzzahlen zu berechnen, die auf den 6. Grad angehoben wurden, mussten Sie zunächst lernen, wie Sie die Summe der ersten n positiven Ganzzahlen berechnen, die auf den 5. Grad angehoben wurden

Eine praktischere allgemeine Lösung wurde in einem posthum veröffentlichten Artikel des Schweizer Mathematikers Jacob Bernoulli gegeben , der 1705 starb. Bernoulli leitete zunächst Formeln zur Berechnung der Summen der ersten n positiven ganzen Zahlen ab, die im ersten, zweiten, dritten und vierten Grad erhoben wurden. Er schrieb sie in Form von Polynomen:

1 + 2 + 3 + ⋯ + n = 1 / 2n 2 + 1 / 2n

1 2 +2 2 +3 2 + ⋯ + n 2 = 1 / 3n 3 + 1 / 2n 2 + 1 / 6n

1 3 +2 3 +3 3 + ⋯ + n 3 = 1 / 4n 4 + 1 / 2n 3 + 1 / 4n 2

Anhand des Pascalschen Dreiecks erkannte Bernoulli, dass diese Polynome einem vorhersagbaren Muster folgen. Tatsächlich teilte Bernoulli die Koeffizienten jedes Terms in zwei Faktoren ein, von denen einer anhand des Pascal-Dreiecks bestimmt werden konnte und der andere aus einer interessanten Eigenschaft abgeleitet werden konnte, durch die sich alle Koeffizienten im Polynom zu einem summierten. Es war nicht schwer zu verstehen, welchen Exponenten für jedes Mitglied zu setzen war, da sie auch einem vorhersehbaren Muster folgten. Die Faktoren jedes Koeffizienten, die nach der Regel „die Summe ist gleich eins“ berechnet werden mussten, bildeten eine Folge, die als Bernoulli-Zahlen bekannt wurde.

Bernoullis Entdeckung bedeutete nicht, dass die Summe der ersten n positiven ganzen Zahlen, die zu einer Potenz erhoben wurden, nun trivial berechnet werden konnte. Um die Summe der ersten n positiven ganzen Zahlen zu berechnen, die auf die Potenz von k angehoben wurden, mussten alle Bernoulli-Zahlen bis zum k-ten ermittelt werden. Und jede Bernoulli-Zahl konnte berechnet werden, wenn nur alle vorherigen bekannt waren. Die Berechnung einer langen Folge von Bernoulli-Zahlen war jedoch unvergleichlich einfacher als das Zählen jeder Summe von Zahlen, die zu einer Potenz erhoben wurden. Daher war Bernoullis Entdeckung ein großer Durchbruch für die Mathematik.

Kohl


Charles Babbage wurde 1791 geboren, fast hundert Jahre nach dem Tod von Bernoulli. Ich hatte immer eine solche Idee von ihm, dass er einen mechanischen Computer entwickelte, aber nicht baute. Aber ich habe nie wirklich verstanden, wie dieser Computer funktionieren sollte. Wie sich herausstellte, sind die Grundideen ziemlich einfach zu verstehen. Das Lovelace-Programm sollte auf einer der Babbage-Maschinen funktionieren, daher müssen wir einen weiteren kleinen Exkurs machen und darüber sprechen, wie diese Maschinen funktionieren.

Babbage entwickelte zwei separate mechanische Computer. Die erste wurde als Differenzmaschine bezeichnet . Vor der Erfindung der Taschenrechner stützten sich die Menschen auf Logarithmen , um das Produkt großer Zahlen zu berechnen. Große logarithmische Tabellen sind grundsätzlich nicht so schwer zu kompilieren, aber die Anzahl der Berechnungen, die erforderlich waren, um sie zu kompilieren, führte dazu, dass sie zum Zeitpunkt von Babbage häufig Fehler enthielten. Verärgert darüber beschloss Babbage, eine Maschine zu entwickeln, mit der Logarithmentabellen ohne Fehler mechanisch erstellt werden können.

Die Differenzmaschine war kein Computer, weil sie nur addieren und subtrahieren konnte. Sie verwendete die vom französischen Mathematiker Gaspard de Prony erfundene Methode, die den Prozess der Konstruktion eines Tisches in kleine Schritte aufteilte. Diese Schritte erforderten nur Addition und Subtraktion, was bedeutete, dass eine kleine Armee von Menschen ohne mathematische Fähigkeiten zum Aufbau der Tabelle verwendet werden konnte. Die de Proni-Methode, bekannt als Methode der geteilten Differenzen , könnte verwendet werden, um eine Tabelle für jedes Polynom zu erstellen. Und Polynome könnten bereits zur ungefähren Berechnung logarithmischer und trigonometrischer Funktionen verwendet werden.

Um sich vorzustellen, wie dieser Prozess funktioniert, betrachten Sie die folgende einfache Polynomfunktion:

y = x 2 +1

Die Split-Differenz-Methode ermittelt den Unterschied zwischen aufeinanderfolgenden y-Werten für verschiedene x-Werte. Dann gibt es die Unterschiede zwischen diesen Unterschieden und dann möglicherweise die Unterschiede zwischen den letzten Unterschieden, bis ein konstanter Unterschied auftritt. Diese Differenz kann dann verwendet werden, um den nächsten Polynomwert durch Addition zu erhalten.

Da das angegebene Polynom nur den zweiten Grad hat, können wir den konstanten Unterschied nach nur zwei Spalten von Unterschieden finden:

xyDiff 1Diff 2
12
253
31052
41772
5??2
............


Wenn wir nun wissen, dass die konstante Differenz 2 ist, können wir den Wert von y finden, wenn x 5 ist, indem wir eine Addition verwenden. Wenn wir 2 und 7, den letzten Wert in Spalte Diff 1, addieren, erhalten wir 9. Wenn wir 9 und 17, den letzten Wert in Spalte y, addieren, erhalten wir 26 - unsere Antwort.

Die Babbage-Differenzmaschine für jede Differenzspalte der Tabelle hatte eine eigene physische Spalte mit Zahnrädern. Jedes Zahnrad stellte eine Dezimalstelle dar, und die gesamte Spalte stellte eine Dezimalzahl dar. Die Differenzmaschine hatte acht Spalten mit Zahnrädern, so dass Polynomtabellen bis zum siebten Grad erstellt werden konnten. Die Spalten wurden anfänglich auf Werte gesetzt, die mit der vorab berechneten frühen Zeile der Differenztabelle übereinstimmen. Der Bediener musste dann die Kurbelwelle drehen, was dazu führte, dass sich ein konstanter Unterschied um die Maschine bewegte, wenn die in jeder der Spalten gespeicherten Werte zu den folgenden addiert wurden.

Babbage gelang es, einen kleinen Teil der Differenzmaschine zu bauen und damit seine Ideen auf Partys zu demonstrieren. Aber selbst nachdem er so viel Geld ausgegeben hatte, dass sie ausreichten, um zwei große Kriegsschiffe zu bauen, konnte er sein Auto nicht fertigstellen. Zu Beginn des 18. Jahrhunderts fand Babbage niemanden, der die richtige Menge an Ausrüstung mit der richtigen Genauigkeit für ihn herstellen konnte. Die funktionierende Version der Differenzmaschine wurde erst in den 1990er Jahren nach dem Aufkommen hochpräziser Maschinen gebaut.


Infolgedessen verlor Babbage das Interesse an der Differenzmaschine und erkannte, dass Sie eine viel leistungsstärkere und flexiblere Maschine erstellen können. Seine " analytische Maschine " ist heute als mechanischer Computer von Babbage bekannt. Die Analysemaschine basierte auf denselben Zahnradsäulen wie die Differenzsäule, aber wenn diese nur acht Säulen hatte, sollte die Analysemaschine mehrere hundert haben. Eine Analysemaschine könnte mit Lochkarten wie ein Jacquardwebstuhl programmiert werden, und sie könnte dividieren und multiplizieren, nicht nur addieren und subtrahieren. Um eine dieser Operationen auszuführen, würde sich ein Teil der Maschine, der als "Mühle" bezeichnet wird, in der gewünschten Konfiguration neu erstellen, Operanden aus anderen Spalten lesen, die zum Speichern von Daten verwendet werden, und dann das Ergebnis in andere Spalten schreiben.

Babbage nannte es eine Analysemaschine, weil sie leistungsfähig genug war, um etwas zu tun, das der Matanalyse ähnelt. Die Differenzmaschine könnte Polynomtabellen erzeugen, aber die Analysemaschine könnte beispielsweise die Polynommultiplikationskoeffizienten eines anderen Ausdrucks berechnen. Es war eine erstaunliche Maschine, aber die britische Regierung traf eine kluge Entscheidung, den Antrag auf Finanzierung abzulehnen. Also ging Babbage ins Ausland, nach Italien, um dort Unterstützung zu finden.

Anmerkungen des Übersetzers


In Turin traf Babbage einen italienischen Ingenieur und zukünftigen Premierminister Luigi Federico Menabrea. Er überzeugte Menabrea, einen Überblick über die Fähigkeiten der Analysemaschine zu schreiben. Im Jahr 1842 veröffentlichte Menabrea eine Arbeit zu diesem Thema auf Französisch. Im folgenden Jahr veröffentlichte Lovelace eine Übersetzung von Menabreas Werk ins Englische.

Lovelace, damals bekannt als Ada Byron, traf Babbage 1833 auf einer Party, als sie 17 Jahre alt war und er 41 Jahre alt war. Lovelace wurde von der Babbage-Differenzmaschine getroffen. Aber sie konnte herausfinden, wie es funktioniert, da ihr in ihrer Kindheit aktiv Mathematik beigebracht wurde. Ihre Mutter, Anabella Milbank, entschied, dass die solide mathematische Grundlage der Ausbildung ihrer Tochter sie von der wilden und romantischen Natur abhalten würde, die ihr Vater, Lord Byron , ein berühmter Dichter, besaß. Nach dem Treffen im Jahr 1833 blieben Lovelace und Babbage im allgemeinen sozialen Umfeld und korrespondierten oft.

Ada Byron heiratete 1835 William King. King wurde später Earl of Lovelace, woraufhin Ada Countess of Lovelace wurde. Und selbst nachdem sie drei Kinder zur Welt gebracht hatte, studierte sie weiter Mathematik und nahm als Lehrerin Augustus de Morgan, der die Gesetze von Morgan entdeckte . Lovelace erkannte sofort das Potenzial der Analysemaschine und erklärte sich bereit, mit ihm zusammenzuarbeiten, um diese Idee voranzutreiben. Ihre Freundin lud sie ein, Menabreas Werk für ein englisches Publikum zu übersetzen.

Das Papier enthielt eine kurze Beschreibung des Betriebs einer Differenzmaschine, und dann wurde gezeigt, wie weit die Analysemaschine diese übertreffen würde. Die Analysemaschine sollte so leistungsfähig sein, dass sie "das Ergebnis der Multiplikation von zwei Zahlen, von denen jede aus zwanzig Zeichen besteht, in nur drei Minuten bilden kann". Menabrea gab andere Beispiele für die Möglichkeit einer Maschine und demonstrierte, wie sie ein einfaches lineares Gleichungssystem lösen und das Ergebnis der Multiplikation zweier Binome zerlegen würde. In beiden Fällen präsentierte Menabrea das, was Lovelace als „Entwicklungsdiagramme“ bezeichnete, und beschrieb die Abfolge der Operationen, die zur Berechnung der richtigen Antwort erforderlich sind. Dies waren Programme im gleichen Sinne wie das Lovelace-Programm, und sie wurden ein Jahr vor seiner Arbeit veröffentlicht. Aber wie wir sehen werden, waren Menabreas Programme nur Beispiele für das Mögliche. Alle von ihnen waren in dem Sinne trivial, dass sie keine Verzweigung oder Zyklen benötigten.

Lovelace fügte ihrer Übersetzung des Werkes von Menabrea einige Notizen hinzu, die sich insgesamt als länger als das Original herausstellten. Dort leistete sie ihren Hauptbeitrag zum Computer. In Anmerkung A, die Lovelace zur Erstbeschreibung der Analysemaschine machte, erklärte sie ausführlich und manchmal lyrisch, dass diese Maschine beliebige mathematische Operationen ausführen könne. Sie sah voraus, dass eine Maschine wie diese nicht auf das Arbeiten mit Zahlen beschränkt sein und Objekte verarbeiten könnte, "deren gegenseitige grundlegende Interaktion durch die abstrakte Wissenschaft der Operationen ausgedrückt werden kann und die an die Betriebsaufzeichnungen und den Mechanismus der Maschine angepasst werden können". Sie fügte hinzu, dass eine solche Maschine eines Tages beispielsweise Musik komponieren kann. Eine solche Vorhersage war umso bemerkenswerter, als Menabrea selbst diese Maschine nur als Werkzeug zur Automatisierung „langer und langweiliger Berechnungen“ betrachtete, die die intellektuellen Fähigkeiten brillanter Wissenschaftler für fortgeschrittenere Forschung freisetzen würden. Lovelaces wundersame Weitsicht, wie in Anmerkung A gezeigt, ist einer der Hauptgründe, warum wir sie heute ehren.

Eine weitere berühmte Notiz ist die von G. Lovelace, in der zunächst festgestellt wird, dass die Analysemaschine trotz ihrer beeindruckenden Fähigkeiten nicht „gedacht“ werden kann. Es ist diese Fußnote, die Alan Turing später als "Einspruch von Ada Lovelace" bezeichnen wird. Lovelace fährt jedoch fort, das Auto sei zu erstaunlichen Dingen fähig. Um die Fähigkeit zu demonstrieren, komplexere Probleme zu lösen, bot Lovelace ihr Programm zur Berechnung von Bernoulli-Zahlen an.

Der vollständige Text in Form eines erweiterten „Entwicklungsdiagramms“, dessen Format Lovelace in Anmerkung D beschreibt, kann hier eingesehen werden . Dies ist im Wesentlichen eine Liste von Operationen, die durch mathematische Symbole angezeigt werden. Es scheint nicht so, als ob Babbage oder Lovelace so weit gegangen wären, eine Reihe von Betriebscodes für die Analysemaschine zu entwickeln.

Obwohl Lovelace eine Methode zur Berechnung einer vollständigen Folge von Bernoulli-Zahlen bis zu einem bestimmten Grenzwert beschrieb, zeigte ihr Programm nur einen Schritt in diesem Prozess. Sie zählte die Nummer, die sie B7 nannte und die modernen Mathematikern als achte Bernoulli-Nummer bekannt ist. Daher löste ihr Programm die folgende Gleichung:

B7 = -1 (A 0 + B 1 A 1 + B 3 A 3 + B 5 A 5 )

Hier repräsentiert jeder Term einen Koeffizienten in einer Polynomformel für die Summe der bis zu einem bestimmten Grad erhöhten ganzen Zahlen. Hier geht es um die achte Potenz, da die achte Bernoulli-Zahl zuerst in der Formel für die Summe der positiven ganzen Zahlen erscheint, die auf die achte Potenz angehoben werden. Die Zahlen B und A repräsentieren zwei Arten von Faktoren, die von Bernoulli entdeckt wurden. Die Nummern B1 bis B7 sind die verschiedenen Bernoulli-Nummern, die nach Lovelace nummeriert sind. Die Zahlen A0 bis A5 sind Multiplikatoren der Koeffizienten, die Bernoulli mit dem Pascal-Dreieck berechnen könnte. Die Werte von A0, A1 und A3 sind unten gezeigt. Hier bezeichnet n den Index einer Bernoulli-Zahl in einer Folge von ungeraden Bernoulli-Zahlen, beginnend mit der ersten. Im Lovelace-Programm ist n = 4.

A 0 = –1 / 2⋅ (2n - 1) / (2n + 1)

A 1= 2n / 2

A 3 = 2n (2n - 1) (2n - 2) / (2⋅3⋅4)

A 5 = 2n (2n - 1) (2n - 2) (2n - 3) (2n - 4) / (2⋅3⋅4⋅5⋅6)

Ich habe das Lovelace-Programm in C übersetzt und es wird wahrscheinlich einfacher zu lesen sein. Zunächst berechnet ihr Programm A 0 und das Ergebnis der Multiplikation B 1 A 1 . Dann beginnt der Zyklus, der zweimal wiederholt wird, um B 3 A 3 und B 5 A 5 zu berechnen , da sie auf die gleiche Weise gelesen werden. Nach dem Zählen jeder Multiplikation wird das Ergebnis zu den vorherigen addiert, sodass am Ende des Programms der volle Betrag erhalten wird.

Offensichtlich kann die Übersetzung in C keine exakte Reproduktion des Lovelace-Programms sein. Es deklariert Variablen auf dem Stapel, und Lovelace-Variablen ähnelten eher Registern. Aber er macht den prophetischsten Teil des Lovelace-Programms deutlicher. Ein C-Programm hat zwei while-Schleifen, eine in der anderen. Das Lovelace-Programm hatte keine while-Schleifen, aber es gruppierte die Operationen und beschrieb in einem Hinweis, warum sie wiederholt werden sollten. Die Variable v10 aus dem ursprünglichen Programm, die in C übersetzt wurde, fungiert als Zähler und nimmt mit jedem Durchgang des Zyklus ab - ein ähnliches Design ist jedem Programmierer bekannt. Zusätzlich zur Fülle von Variablen mit obskuren Namen sieht ein C-Programm im Allgemeinen nicht ungewohnt aus.

Es ist auch erwähnenswert, dass die Übersetzung des Lovelace-Programms in C dank eines Details in seinem Diagramm nicht sehr schwierig war. Im Gegensatz zu Menabrea-Tabellen enthält ihre Tabelle eine Spalte „Vorzeichen einer Änderung des Werts einer Variablen“, wodurch es viel einfacher ist, eine Änderung des Status zu verfolgen. Sie fügt jeder Variablen einen hochgestellten Index hinzu, um aufeinanderfolgende in ihnen gespeicherte Werte anzuzeigen. Index 2 bedeutet beispielsweise, dass der verwendete Wert der zweite Wert ist, der der Variablen vom Beginn des Programms an zugewiesen wurde.

Erster Programmierer?


Nachdem ich das Lovelace-Programm in C übersetzt hatte, konnte ich es auf dem Computer ausführen. Zu meiner Enttäuschung war das Ergebnis falsch. Nachdem ich nach Fehlern gesucht hatte, stellte ich schließlich fest, dass das Problem nicht bei meinem Code lag - der Fehler war im ursprünglichen Programm enthalten!

In der "Entwicklungskarte" schreibt Lovelace in der vierten Operation v5 / v4. Aber v4 / v5 wird korrekt sein. Dieser Fehler kann beim Drucken auftreten, nicht jedoch bei Lovelace. Auf die eine oder andere Weise ist dies der älteste Computerfehler. Ich war überrascht, dass ich ungefähr zehn Minuten damit verbracht habe, nach dem allerersten Fehler in der Geschichte zu suchen.

Jim Randall, ein weiterer Blogger, der das Lovelace-Programm in Python übersetzt hatBeachten Sie auch diesen Teilungsfehler und zwei andere Probleme. Was sagen uns die kleinen Fehler im veröffentlichten Ada Lovelace-Programm? Möglicherweise hat sie versucht, nicht nur eine Demonstration, sondern ein echtes Programm zu schreiben. Schließlich können Sie nichts anderes als Spielzeugprogramme schreiben, um Fehler zu vermeiden?

Ein Wikipedia-Artikel besagt, dass Lovelace als erster ein „kompliziertes Programm“ veröffentlicht hat. Vielleicht lohnt es sich genau so, seine Leistung wahrzunehmen. Menabrea veröffentlichte in seiner Arbeit ein Jahr vor der Veröffentlichung der Lovelace-Übersetzung „Development Charts“. Babbage schrieb auch mehr als zwanzig Programme, die nie veröffentlicht wurden. Daher ist es nicht ganz richtig zu schreiben, dass Lovelace das erste Programm geschrieben oder veröffentlicht hat, obwohl man immer darüber streiten kann, was ein Programm ausmacht. Und dennoch ist das Lovelace-Programm weit vor allem, was zuvor veröffentlicht wurde. Im längsten Programm hatte Menabrea 11 Operationen und es gab keine Schleifen und Zweige. Das Lovelace-Programm hatte 25 Operationen und eine verschachtelte Schleife (und daher eine Verzweigung). Menabrea schrieb am Ende seiner Arbeit Folgendes:

Nach dem Bau der Maschine wird es schwierig sein, Karten herzustellen. Da dies jedoch nur eine Übersetzung algebraischer Formeln ist, ist es durch eine einfache Notation recht einfach, ihre Ausführung an einen Arbeiter zu delegieren.

Weder Babbage noch Menabrea waren besonders daran interessiert, die Analysemaschine auf Probleme anzuwenden, die über die mathematischen Probleme hinausgingen, die Babbage zur Erstellung von Computern inspirierten. Lovelace erkannte, dass die Analysemaschine viel mehr konnte, als sich Babbage und Menabrea hätten vorstellen können. Lovelace erkannte auch, dass „Karten machen“ keine mechanische Arbeit sein würde und dass dies schlecht oder gut gemacht werden könnte. Es ist schwierig, dies zu bewerten, ohne das Programm aus Anmerkung G zu verstehen und nicht zu sehen, wie sorgfältig sie es entwickelt hat. Aber nachdem Sie dies getan haben, können Sie zustimmen, dass Lovelace, auch ohne der allererste Programmierer zu sein, der erste Programmierer war, der diesen Namen verdient hat.

Source: https://habr.com/ru/post/de422169/


All Articles