Ziemlich einfache Frage, aber etwas, das ich nicht herausfinden konnte. Wer hat als erster die Idee eines Zeigers beschrieben? Das abstrakte Konzept selbst?
Ziemlich einfache Frage, aber etwas, das ich nicht herausfinden konnte. Wer hat als erster die Idee eines Zeigers beschrieben? Das abstrakte Konzept selbst?
Antworten:
Bud Lawson erhielt voreinigen Jahrenden Computer Pioneer Award des IEEEfür die Erfindung der Zeigervariable im Jahr 1964.
Zeiger sind wirklich Speicher, die durch den Inhalt eines Registers adressiert werden. Als solches implementieren alle Assembler-Sprachen dies auf irgendeine Weise, und davor implementierte jeder fest codierte Maschinencode dies.
Es wird einige Argumente für den ersten Computer geben, der dies implementiert hat. Soweit ich weiß, enthielt das Small Scale System der Universität Manchestern als erstes einen Speicher, der von programmgesteuerten Registern adressiert wurde. Möglicherweise ging das ENIAC-System voraus, es verfügte jedoch über so wenig Speicher, dass adressierbarer Speicher zu einem strittigen Punkt wurde.
Zeiger sind allgemeinere Verweise. Die erste Sprache, die so etwas hatte, war ALGOL 60, das beim Namen nennen konnte. Diese Antwort auf SO geht ins Detail. PL / Ich hatte Zeiger wie BCPL, was bedeutet, dass CPL wahrscheinlich auch Zeiger hatte, obwohl ich keine Beweise dafür gefunden habe. CPL ist sehr schwer zu konkretisieren.
Um Ihre Frage nach dem "Wer" direkter zu beantworten, haben DW Barron, Christopher Strachey oder Martin Richards wahrscheinlich den Begriff "Zeiger" geprägt.
Es ist schwer zu erraten, wer genau auf sie gekommen ist, aber die Indexregister in der IBM 704 waren wahrscheinlich die erste Implementierung. Aus programmiersprachlicher Sicht wäre es daher zweifellos die Assemblersprache des 704 gewesen.
Es hat anscheinend ein paar Jahre gedauert, bis höhere Programmiersprachen entwickelt wurden, um diese Innovation zu nutzen, aber bis dahin war der größte Teil der Erfindungen erledigt, und es kam hauptsächlich darauf an, Namen, Notationen usw. auszuwählen, um die Hardware zu beschreiben unterstützt.
Zeiger als Grundkonzept werden bei der "indirekten Adressierung" einer Funktion auf den meisten CPUs verwendet, die mindestens der 6502 entsprechen.
Commodore verwendete das "kernal" auf seinen VIC 20-, C64- und C128-Computern. Ein fester Satz von Adresssoftware könnte anrufen, der dann zum aktuellen Code umgeleitet würde. Sie könnten dann das Betriebssystem ändern, ohne die vorhandene Software zu beschädigen.
Ich glaube, der 8080 und der Z80 hatten auch eine indirekte Adresse, aber ich bin mir nicht sicher, und ich erinnere mich nicht daran beim 8008.
Nun - Das erste Mal, dass eine konkrete Syntax und Semantik für Zeigervariablen entwickelt wurde, war für die PL / I-Programmiersprache im Jahr 1964.
Das wegweisende Papier dazu erschien 1967 in der ACM Communications im Jahr 1967.