Analytical Engine Programmierung Karten
Einführung
Programme für die Analytical Engine wurden auf Pappe Jacquard-Karten zu stanz. Babbage in Betracht gezogen drei verschiedene Arten von Karten, die jeweils mit einem eigenen unabhängigen Lesern:
Diese Karten Operation Karten entsprechen den „Operationscodes“ im Befehlssatz von modernen Computern. Sie bestehen aus Operationen, die die Mühle Befehl die verschiedenen Rechenoperationen ausführen: Addition, Subtraktion, Multiplikation und Division und kombinatorischen Karten, die in Verbindung mit Indexkarten Voraus oder die Kette von Karten in den Leser zurück; diese entsprechen den Sprung / Zweig und Schleifensteuerbefehle der heutigen Computer. Zahl-Karten liefern Diese Karten numerische Konstanten, auf sich zu den Store gestanzt nach Bedarf. Die Fähigkeit, Zahlkarten laden ermöglicht mehrere Konstanten in einer Berechnung verwendet werden, als im Shop enthalten sein. Zahlenkarten sind in der Regel das Ergebnis der früheren Berechnungen und von der Karte Stanzvorrichtung ausgestanzt. Sofortige Ladeanweisungen bieten diese Funktion in heutigen Computern. Variable Karten Variable Karten direkt die Übertragung von Werten aus dem Shop in die Mühle als Argumente für eine Operation zu dienen, und die Übertragung des Ergebnisses einer Berechnung durch die Mühle wieder zu einer oder mehreren Stellen im Store. Eine Variable-Karte kann, wenn ein Wert in die Mühle zu übertragen, Null entweder die Spalte im Store oder es nach wie vor verlassen.
Zu einem modernen Leser vertraut mit modernen Computerarchitekturen, diese starre Trennung zwischen den Befehlen, sofort Konstanten und Speicherreferenzen scheint neugierig. Babbage in Betracht gezogen, diese Art von Karten als separate aus guten Gründen aus der Mechanik der Maschine ergeben. Jede Art von Karte hat ein ganz anderes Format: für eine Operation Karte, vier Löcher wahrscheinlich die arithmetischen Operationen zu codieren ausreichen. Eine Anzahl Karte, im Vergleich erfordert eine Spalte von Löchern 10 für jeden der 50 Ziffern der Nummer enthält, sowie eine Spalte, um die Zeichen anzuzeigen. Eine Variable Karte fällt in zwischen diesen Extremen; es muss die Lage im Store (Spalte 0 bis 999 in Babbages Design) angeben, und die Quell- oder Zielachse in der Mühle, und ob auf einer Übertragung auf die Mühle, ist die Säule im Store auf Null gesetzt werden.
Mit separaten Maschinen für jede Spalte jeder Karte erforderlich, enorme Vereinfachung durch die Bereitstellung eines separaten, speziell konzipierter, Leser für jede Art von Karte wurde erreicht, obwohl einige zusätzliche Komponenten erforderlich wären, zu koordinieren die Bewegung der getrennten Ströme von Karten. In unserer Emulation der Analytical Engine. wir haben zu abstrahieren die einzelnen Ströme von Karten in einen einzigen Strom gewählt, die die Reihenfolge der Karten von den verschiedenen Ströme in Babbages Design in welcher wäre der Engine vorgestellt wurden. Wir glauben, dass diese Abweichung von den folgenden Gründen gerechtfertigt ist:
- Der Mechanismus, durch den Karten eines bestimmten Typs das Lesen von denen anderer Arten Befehl wurde nie genau in einem der Publikationen in Bezug auf den Motor buchstabiert, ist noch wesentlich für seinen Betrieb. Es wäre daher notwendig, diese Spezifikationen ohne historischen Kontext zu machen.
- Die Vereinigung der Ströme von Karten fügt keine Fähigkeit nicht in Babbages Drei-Strom-Design. In der Tat schließt es einige obskure Tricks eines mit separatem Leser Steuern jeder-andere Bewegung spielen könnte, aber in keiner Weise reduziert die Rechenfähigkeit des emulierten Motor.
- Programme in Form von drei verschiedenen Ketten von Karten geschrieben wären äußerst schwierig herzustellen und von der Inspektion zu verstehen. In der Tat sind die Beispielprogramme, die durch Menabrea und Lovelace in einer Form ausgedrückt, in dem die verschiedenen Kartenströme werden in eine tabellarische Darstellung verschmolzen. Die Details, wie Programme in dieser Notation waren auf Karten zu stanz werden nie im Detail vorgestellt und wurden vermutlich irrelevant für den Analytiker als ein Problem für die Maschine vor.
Wir erlauben auch einige zusätzliche Flexibilität im Format der verschiedenen Karten, keine Zahlen erfordern, zu 50 Spalten rechtsbündig zu sein oder führende Nullen enthalten, wie sicher der Fall mit einem mechanischen Motor gewesen wäre. Auch hier ist es unser Ziel, ohne die Genauigkeit der Emulation seiner Fähigkeiten unnötigen Hindernisse für das Verständnis der Maschine zu entfernen.
Programm Karten
Ein Programm für den Analytical Engine besteht aus einer Kette von Karten verschiedener Sorten und Inhalt zusammen. In unserer Emulation des Motors wird die Kette durch eine Reihe von Linien in einer Textdatei dargestellt wird, eine Karte pro Zeile. Um eine Berechnung auf der Maschine zu laufen, die Karte Kette vom Analytiker hergestellt wird, um den Motors des menschlichen Begleiter vorgelegt, die es für mögliche Fehler und Anfragen für Aktionen, die von der Attendant (zum Beispiel untersucht, enthält die Karten für einen zuvor vorbereiteten Standard Berechnung, wie beispielsweise die Extraktion der Quadratwurzel aus einer Zahl an einer bestimmten Stelle in der eingereichten Kette).
Zahl-Karten
Zahlkarten sind die Mittel, durch die Konstanten in die Berechnung eingebracht werden. Jede Zahl Karte enthält den Buchstaben „N“ als das erste Zeichen, gefolgt von der Nummer der Spalte in dem Speicher (0 bis 999), in denen die Konstante gesetzt werden, gefolgt von dem 50-stelligen Wert der Konstante. Beispielsweise stellt die folgenden Nullen Spalte 1 in dem Speicher, die Zahl 10.000 in Spalte 275 und setzt Spalte 302--1.321.
Eine mechanische Realisierung des Analytical Engine wäre sicherlich Stanzen Zahlen in festen Spalten mit führenden Nullen und expliziten Zeichen, wie oben gefordert. Zur Vereinfachung der Herstellung und Leseprogramme, unsere Emulation ermöglicht es Ihnen, mit führenden Nullen zu verzichten und die Speicherspalte Anzahl und den Wert in irgendwelchen Spalten platzieren und auf Anzeichen für positive Werte weglassen. Das obige Beispiel kann somit vereinfacht werden:
Die weggelassenen führenden Nullen und Ausrichtung in Spalten können in dem Prozess der Herstellung die Karten für eine gegebene Berechnung erfolgt gedacht werden als zu werden.
Operation Karten
Die verschiedenen Betriebs Karten wählen Sie die arithmetische Operation der Mühle ist auf Argumente auszuführen anschließend auf sie übertragen. Die Betrieb Karten repräsentieren daher die vier arithmetischen Operationen, die jeweils aus dem Zeichen für diesen Vorgang als das erste Zeichen der Karte; der Rest der Karte wird ignoriert. Die vier Arten von Betriebskarten sind somit:
Sobald die Mühle eingestellt wurde eine vorgegebene arithmetische Operation auszuführen, wird es weiterhin auf jedes Paar von Argumenten, die Operation zu tun, sie übertragen; eine weitere Operation Karte benötigt nur eine andere Operation zu wählen.
Bei der Diskussion der verschiedenen Operationen der Mühle, ist es notwendig, daran zu erinnern, daß die Mühle zwei 50-stelligen Ingress Achsen hat, auf die Argumente übergeben werden, wobei die erste Ingress Achse einen Hilfs 50 digit Primed Achse, die die höchstwertigen 50 Ziffern erhält wenn eine 100-stellige Nummer wird durch eine Anzahl von bis zu 50 Ziffern unterteilt. Die Ergebnisse einer arithmetischen Operation auf der 50-stelligen Egress Achse Mühle. die auch durch eine 50-stelligen grundiert Achse, die im Fall der Division begleitet, erhält man die Quotienten, während der Rest auf der Hauptachse Egress erscheint. Darüber hinaus hat die Mühle einen Anlaufhebel, der aktiviert wird, wenn außergewöhnliche Bedingungen während einer arithmetischen Operation auftreten.
+ Hinzufügen. Die Werte in den beiden Achsen Ingress zugegeben (die Inhalte der grundierten Ingress Achse ignoriert wird), und die Summe auf der Egress-Achse platziert ist. Wenn das Ergebnis der Addition im Vorzeichen von dem dem ersten Argumente unterscheidet, oder eine carry-out auftritt während der Zugabe (resultierend aus einem Überlauf der 50-stelligen Kapazität der Mühle), der Anlaufhebel eingestellt. - subtrahieren. Der Wert in der zweiten Ingress-Achse wird von dem in dem ersten subtrahiert (die Inhalte der grundierten Ingress Achse ignoriert wird), und die Differenz auf der Egress-Achse platziert ist. Wenn das Ergebnis der Subtraktion von den dem ersten Argumente im Vorzeichen unterschiedlich ist, oder ein negativer Übertrag-in stattfindet (die sie aus einem Überlauf der 50-stelligen Kapazität der Mühle), der Anlaufhebel eingestellt. × oder * Multiplikation. Die Werte in den beiden Achsen Ingress werden multipliziert (um den Inhalt der Primed Ingress Achse ignoriert wird), und die am wenigsten signifikanten 50 Ziffern des Produkts sind in der Egress Achse angeordnet, wobei die höchstwertigen 50 Ziffern auf der grundierte Egress Achse erscheinen. Der Anlaufhebel wird nie aufgrund einer Multiplikation eingestellt. ÷ oder / Division. Der Wert in der ersten Ingress Achse (50 niedrigstwertigen Ziffern) und die grundierte Ingress Achse (50 höchstwertigen Ziffern) wird durch den Wert in der zweiten Ingress-Achse geteilt. Der Quotient wird auf die grundierte Egress Achse angeordnet und der Rest auf der Egress-Achse. Ist der Quotient größer als 50 Ziffern oder der Divisor gleich Null ist, die Anlaufhebel eingestellt.
variable Karten
Die variablen Karten direkt die Übertragung von Spalten im Shop an die Mühle in einer arithmetischen Operation teilzunehmen, und die Übertragung der Ergebnisse aus der Mühle wieder in den Laden. Jede Variable-Karte hat einen Brief als erstes Zeichen, das seine Funktion identifiziert:
L Transfer vom Shop Mill Ingress Axis, verlassen Shop Säule intakt. Z Transfer vom Shop Mill Ingress Achse, Nullstellen Shop Spalte. S Übertragung von Mühle Egress Achse zu lagern Spalte.
Die folgende Sequenz von Anzahl, Betrieb und Variable Karten die Nummer 10.000 in Spalte 1 des Speichers platziert und 28 in Spalte 2, setzt die Mühle Division durchzuführen, überträgt die Dividende, 10.000 und die Divisor, 28, und überträgt dann den der Quotient aus der Primed Egress Achse bis Spalte 3 in dem Laden und Rest aus der Egress-Achse bis Spalte 4.
Dieses Beispiel, und viele von denen, die folgen, können durch Anklicken des Getriebe-Symbol am rechten Rand der Seite im Web-Emulator ausgeführt werden. Jedes Beispiel, das dieses Symbol trägt können durch Anklicken ausgeführt werden.
Wenn der Motor der Verarbeitung dieser Karten vervollständigt, Spalte 3 im Laden wird den Quotienten enthält, 357, und Spalte 4 den Rest, 4.
Wie bei den Zahl-Karten, unsere Emulation der Analytical Engine ermöglicht es Ihnen, mit den führenden Nullen zu verzichten, die von der Maschine erforderlich gewesen wäre. Das obige Beispiel kann somit als besser lesbar neu geschrieben werden, wenn weniger authentisch:
Alle Dokumente Babbages Designs beschreiben vorgesehen aus Dividenden und Rücktritt der Produkte im Rahmen der Division und Multiplikation Operationen treten, aber nie beschrieben genau, wie dies von den Karten angegeben werden war den Motor zu steuern. Unsere Emulation Schritt nach oben und unten mit speziellen Karten liefert, enthalten in der Karte Strom als eine Multiplikation oder Division durchgeführt wird. Der Schritt nach oben und unten Karten sind:
Das scheint ziemlich einschüchternd auf dem ersten Blick, aber ein konkretes Beispiel soll verdeutlichen, wie Schritt nach oben und unten in der Praxis eingesetzt. Angenommen, wir wollen berechnen
(4000 · 2,5) ÷ 28
Combinatorial Karten: Sichern und Advancing
Der Motor des Kartenleser ist nicht die Karten begrenzt von Anfang bis Ende einer nach dem anderen in einer Kette einfach zu verarbeiten. Es kann aber auch durch die sehr Karten gerichtet liest und geraten durch die ob der Mühle Anlaufhebel aktiviert wird, entweder die Karte Kette vorrücken, die dazwischenliegenden Karten Überspringen oder rückwärts, was vorher gelesen Karten verarbeitet werden Noch einmal. Dies kann mit der folgenden, allgemeinen und kompaktere Folge von Karten durchgeführt werden, die Fakultät von 6 nehmen wie oben, aber mit einem beliebigen Anzahl verwendbar in Spalte geliefert, dessen faktorielle 0 ist, weniger als 50 Stellen lang.
Die letzte Karte in dieser Sequenz ist, wo die Magie auftritt; es ist unsere erste Begegnung mit einer kombinatorischen Karte. Lassen Sie uns im Detail sezieren. Das erste Zeichen „C“ identifiziert es als eine kombinatorische Karte. Das zweite Zeichen ist entweder:
F Voraus (Sprung vorwärts) Karten in den Leser. B zurück (rückwärts springen, und wiederholen) Karten in den Leser.
Das dritte Zeichen zeigt an, ob die Vor- oder Träger wird immer (unbedingt) durchgeführt wird, oder ob es hängt von Mills Anlaufhebel.
+ Immer voran ( „F“) oder zurück ( „B“) -Karten. Voraus ( „F“) oder zurück ( „B“) Karten nur, wenn die Mühle des Anlaufhebel festgelegt ist.
Die Zahl in der Spalte Start-4 gibt an, wie viele Karten sind Vergangenheit vorgeschoben werden oder vorbei an den Leser gesichert. Um diese Zahl zu verstehen, ist es wichtig, im Auge zu behalten, dass die Karte Kette an der Zeit fortgeschritten ist oder gesichert, die kombinatorische Karte selbst bereits gelesen wurde. und der Kartenleser auf das nächste Karte in der Kette. Daher ist der Ausgangspunkt für das Zählen, wie viele Karten oder Voraus zu sichern ist die Karte nach der kombinatorischen Karte, nicht die Karte selbst.
Somit ist die Wirkung der kombinatorischen Karte, um die Multiplikation und Subtraktion Schritte zu veranlassen, die sie vorangehen, solange die in Spalte 1, Wert wiederholt werden, die als die Zahl beginnt, deren Fakultäts wir wollen, ist größer als eins. Dies kann dann zu sehen, die Fakultät von einer beliebigen Anzahl wir mit in Spalte 0 (solange seine Fakultäts nicht die 50-stellige Kapazität der Mühle und Speicher nicht überschreitet) beginnen zu erhalten.
Wir beginnen, indem die Konstante 0 in Spalte 1 der Speicherbeladung, fügen dann Null auf die unbekannte Menge in Spalte 0 Addition setzt den Anlaufhebel, wenn die Summe von zwei Mengen im Vorzeichen von dem ersten Argumente unterscheidet; da wir das Unbekannte zu Null, der Anlaufhebel nur wird hinzufügen gesetzt, wenn die Zahl in der Spalte 0 negativ ist. Wie in der Fakultäts Beispiel zuvor sind wir daran interessiert nur, ob die Zugabe der Anlaufhebel eingestellt, nicht die Summe, so dass wir nicht die Mühe die Summe an den Shop zu übertragen.
Die bedingte kombinatorische Karte „CF? 1“ bewirkt, dass die Karte folgenden es, die bedingungslose kombinatorische Karte „CF + 4“ übersprungen wird, wenn die Anlaufhebel festgelegt ist. diese Karte Skipping bewirkt, dass die Menge in Spalte 0 von Null subtrahiert werden, dessen Vorzeichen invertiert, und der Absolutwert zu Spalte 0 zurückkehrt Wenn der Anlaufhebel nicht gesetzt ist, der „CF + 4“ nicht übersprungen werden, und wenn sie verarbeitet wird, wird die Karte Kette vorbei an der Subtraktion vorrücken, den positiven Wert in der Spalte 0 intakt bleibt. Somit kehrt diese Folge von Karten das Vorzeichen der Zahl in Spalte 0 nur dann, wenn sie negativ ist zu beginnen, um dadurch den Absolutwert zu erhalten.
Aktionskarten
Eine Vielzahl von Aktionskarten führt nicht-arithmetische Operationen für die Berechnung bezogen. Die Aktionskarten sind:
Das folgende Beispiel, das zu Beginn eines Satzes von Karten verwendet werden kann, verwendet, um die Quadratwurzel einer Zahl in der Spalte 0 des Store zu extrahieren, zeigt, wie Aktionskarten verwendet werden. Wenn aufgrund eines Fehler auf dem Teil des Analytikers eine Berechnung für den Motor in der Formulierung, oder die sie aus fehlerhafter Herstellung der Karten, wird versucht, die Quadratwurzel aus einer negativen Menge zu extrahieren, ist es besser, die Berechnung anzuhalten, an dass Punkt und alarmiert die Begleiter des Problems als eine Berechnung, dessen Ergebnis fortsetzen wird unweigerlich als fehlerhaft erweisen. Die Karten unter Verwendung der gleichen Technik beschäftigten wir vorher den absoluten Wert zu berechnen, aber hier, wenn wir den Wert in der Spalte 0 als negativ finden wir die beanstandete Nummer auf dem Drucker zu drucken, klingeln die Telefonzentrale zu alarmieren, und halt die Motor . Auf den Kartenleser Prüfung der Vermerk auf der Karte Hand geschrieben, die den Motor gestoppt informiert den Begleiter von der Art des Problems. Wenn das Argument der Quadratwurzel Extraktion nicht negativ ist, wird die Fehlerfolge berichtet wird übersprungen, und die Berechnung wird fortgesetzt.
Kurve Karten zeichnen
Die Kurve Ziehvorrichtung wird durch die folgenden Karten gesteuert.
DX Transferierte das Ergebnis der letzten Rechenoperation durch die Mühle zu Kurve Ziehvorrichtung X-Koordinate. DY Transferierte das Ergebnis der letzten Rechenoperation durch die Mühle zu Kurve Ziehvorrichtung Y-Koordinate. Heben Sie Stift D. Die nächste „D +“ Karte wird ein neues Segment der Kurve beginnen. D + Lower Stift und ziehen den aktuellen X- und Y-Koordinaten.
Die folgende Sequenz von Karten zeichnet die Funktion:
für die Domäne -1 ≤ x ≤ 1.
Nachgeben dem Grundstück: