while (1) {
if (1+1==2) {
print "Yes, you paid attention in Preschool!";
} else {
print "Wait... I thought 1+1=2";
}
}
Als Entwickler müssen wir alle sehr häufig Schleifen verwenden. Wir wissen das. Was ich mich fragte, war, wer an die Idee dachte, Schleifen zu haben? Welche Sprache hat Schleifen eingeführt? Was war das erste Schleifenkonstrukt? War es eine while
Schleife? Eine for
Schleife? usw?
repeat
würde jede eine andere aufrufenrepeat
- Sie würden niemals fertig werden. Ich denke, vielleicht lesen Frauen Shampoo-Anweisungen auf diese Weise, aber Männer lesen sie als Iteration und brauchen nur ein paar Minuten, um sich die Haare zu waschen.Antworten:
Wie Mouviciel und Emilio Garavaglia feststellten, geht das Konzept dem Rechnen voraus . Die erste Instanz einer Softwareschleife war jedoch die Schleife Ada Lovelace , mit der Bernoulli-Zahlen berechnet wurden , wie in Anmerkung G ihrer Übersetzung der von Charles Babbage erfundenen Skizze der analytischen Maschine von LF Menabrea beschrieben . Die Schleifenfähigkeit der Analytical Engine wird von Menabrea früh erkannt:
Der Schleifenmechanismus der Analytical Engine ist direkt von Joseph Marie Jacquards mechanischem Webstuhl (1801) geerbt , wie in den Memoiren von Menabrea vermerkt:
Jacquard's Webstuhl ist eine sehr frühe Anwendung einer Schleife im Zusammenhang mit der Bestellung einer Maschine, um eine wiederholte Ausgabe zu erzeugen :
Jacquards Webstuhl wird auch als eine sehr frühe Form eines gespeicherten Programms erkannt :
Charles Babbage hat auch Jacquards Speicherverfahren in der Analytical Engine angepasst. Das Vorhandensein oder Fehlen eines Lochs hat der Maschine einen einfachen Ein- / Ausschaltbefehl übermittelt:
Die bedingten Verzweigungen der Analytical Engine in Kombination mit den von Jacquard inspirierten mechanischen Schleifen und der Aufbewahrungsprozedur ähneln (konzeptionell) beängstigend Ihrem Beispiel, insbesondere wenn wir den Babbage-Drucker für die
print "...";
Teile in den Mix aufnehmen .Offensichtlich sind mechanische Schleifen älter als Jacquard's Webstuhl. Das erste bekannte Gerät, das in Schleifenform arbeitet, ist der Antikythera-Mechanismus (100 v. Chr.). Wenn wir uns die Geschichte noch genauer ansehen (und uns fürchterlich vom Thema abwenden), sind Sonnenuhren wahrscheinlich die ältesten von Menschen hergestellten Mechanismen wo ein Verständnis von Schleifen offensichtlich ist, folgt dies natürlich dem sich wiederholenden Muster der Umlaufbahnen der Sonne und anderer Sternkörper.
Ich denke jedoch, dass im Zusammenhang mit dem Rechnen (und nicht dem Berechnen oder etwas anderem) der Berechnungsalgorithmus für die Bernoulli-Zahlen von Analytical Engine und Ada für die Einführung von Schleifen gutgeschrieben werden kann, wobei zumindest ein Teil des Kredits mit Jacquards Webstuhl geteilt wird, nachdem das Konzept direkt von übernommen wurde es.
quelle
Schleifen vor dem Computing. Sie finden sie in Notenschrift schon beim Gregorianischen Gesang:
quelle
Der Begriff "Mach es noch einmal" ist irgendwie "primitiv" für die menschliche Wahrnehmung. Sie können dies einem Kind erzählen, das gerade ein minimales Verständnis der natürlichen Sprache erarbeitet hat.
In diskreten Systemen finden sich in allen Zustandsautomaten Schleifen, wenn Sie zugeben, dass Sie einen Zustand erreichen können, den Sie schon einmal hatten .
Die einfachste Schleife ist der Zyklus zwischen zwei Zuständen (eine Uhr). Angesichts der Tatsache, dass eine höhere Anzahl von Zuständen aus einer Zählung resultieren kann, wird jede komplexere Maschine auf einen "Zähler" aufgebaut, der durch einen Takt inkrementiert wird, der auf bestimmte Flags, die bestimmte kombinatorische Operationen darstellen, "springen" kann. Dies ist der Kern einer Von Neumann-Maschine, auf der jeder mikroprozessorbasierte Computer basiert.
Im Maschinencode ist ein Sprung codiert
JP-Z-nnnn
(wobei Z die Basis Ihrer Bedingung ist). In einer höheren Sprache wird dies fast sofort übersetztEine Schleife ist nichts anderes als ein
goto
Punkt, an dem das x-Label vor der goto-Anweisung steht.Jede andere Formulierung (für, do, while usw.) ist nur "syntaktischer Zucker", um das wilde Goto in den sehr häufigen Fällen des Wiederholens besser zu domestizieren , bis etwas passiert
quelle
Das Konzept des Loopings ist eines der Merkmale, die einen vollwertigen Computer von einer einfachen Rechenmaschine unterscheiden. Wenn ein System keine Schleifen unterstützt, ist es nicht vollständig und daher kein Computer.
Das erste vollständige Design von Turing war die Analytical Engine von Babbage. Es musste also ein Looping-Konzept gegeben haben. Es gibt jedoch Systeme mit Schleifen, die jedoch nicht vollständig sind (weil sie etwas anderes auslassen). Babbages Arbeit ist jedoch wahrscheinlich ein guter Ausgangspunkt.
quelle
Angenommen, Sie meinen moderne Text-Computerprogrammiersprachen.
Algol60 hat "FOR", "DO", "UNTIL" und "WHILE", also war es vor 1960.
Das Retro Computing Museum hat vor 1960 einige Sprachen.
Kvikkalkul , die Programmiersprache für schwedische Atom- U-Boote aus den 50er Jahren, hat nur GOTO. (Kvikkalkul ist jedoch mit ziemlicher Sicherheit ein Schwindel aus den 90er Jahren, keine echte historische Sprache.)
Der Plankalkül von Konrad Zuse ist der früheste, den ich finden konnte. Es hat ein "für" -Konstrukt.
quelle
DO
Loops auf dem Feld hatte .Die Arbeit von Liebniz und Newton enthält Algorithmen mit Schleifenkonstrukten. Liebniz baute einen mechanischen Taschenrechner und spekulierte (wie Lovelace es Jahre später tat) über eine Maschine, um komplexere Analysen durchzuführen. Seine Notizen zu diesen Ideen sind flüchtig, aber sie beschreiben strukturierte Logik mit Schleifen.
Die Idee von Wiederholungssequenzen und zählungsgesteuerten Schleifen sowie das, was wir als while-Schleifen bezeichnen würden, werden jedoch in der Arbeit des Mannes diskutiert, für den die Algorithmen benannt wurden: Muhammad ibn Musa al-Khwarizmi aus dem 9. Jahrhundert. Sein zweites Buch, al-Kitab al-Mukhtasar fi hisab al-Jabr wa'l-Mukhtasar fi hisab al-Jabr wa'l-Mukhtasar fi hisab al-Jabr wa'l-Mukhtasar fi hisab .
Natürlich stützte sich al-Khwarizmi teilweise auf die alten Griechen. Irgendwann kehren wir wahrscheinlich zu Adams und Evas Version von Spülen, Schäumen, Wiederholen zurück.
Weitere Informationen über Al-Khwārizmī und seine Arbeit finden Sie unter:
http://www-groups.dcs.st-andrews.ac.uk/history/Mathematicians/Al-Khwarizmi.html
quelle