Pregunta bastante simple, pero algo que no he podido descubrir. ¿Quién fue la primera persona en describir la idea de un puntero? ¿El concepto abstracto en sí?
Pregunta bastante simple, pero algo que no he podido descubrir. ¿Quién fue la primera persona en describir la idea de un puntero? ¿El concepto abstracto en sí?
Los punteros son realmente el almacenamiento dirigido por el contenido de un registro. Como tales, todos los lenguajes de ensamblador implementan esto de alguna manera y, antes de eso, todo el código de máquina codificado por hardware implementó esto.
Habrá algún argumento en cuanto a la primera computadora que implementó esto. Por lo que sé, el Manchestern University Small Scale System fue el primero en incluir el almacenamiento dirigido por los registros controlados por el programa. Puede haber estado precedido por el sistema ENIAC, pero tenía tan poco almacenamiento como para hacer que el almacenamiento direccionable fuera un punto discutible.
Los punteros son referencias más amplias. El primer idioma para tener algo así fue ALGOL 60, que podía llamar por su nombre. Esta answer sobre SO entra en algunos detalles. PL / Tuve punteros al igual que BCPL , lo que significa que CPL probablemente también lo hizo, aunque no tengo Encontré evidencia de ello. Es muy difícil concretar información sobre CPL.
Para responder de manera más directa a tu pregunta sobre "quién", D. W. Barron, Christopher Strachey o Martin Richards probablemente acuñaron el término "puntero".
Es difícil adivinar exactamente quién los creó, pero los registros de índice en el IBM 704 fueron probablemente la primera implementación. Desde un punto de vista del lenguaje de programación, por lo tanto, sin duda, habría sido el lenguaje ensamblador del 704.
Aparentemente, pasaron algunos años antes de que se diseñaran lenguajes de programación de nivel superior para aprovechar esta innovación, pero para entonces ya se había hecho la mayoría de los inventos, y principalmente se trataba de elegir nombres, anotaciones, etc. lo que el hardware soporta.
Bud Lawson recibió Computer Pioneer Award hace unos años, por inventar la variable de puntero en 1964.
Los punteros como concepto básico se utilizan en el "direccionamiento indirecto" de una función en la mayoría de las CPU que se remonta al menos como la 6502.
Commodore usó el "kernal" en sus computadoras VIC 20, C64 y C128. un conjunto fijo de software de direcciones podría llamar y luego ser redirigido al código actual. Luego podrían modificar el sistema operativo sin romper el software existente.
Creo que el 8080 y el Z80 tenían una dirección indirecta también, pero no estoy seguro y no lo recuerdo en el 8008.
Bueno: la primera vez que se desarrolló una sintaxis y una semántica concretas para las variables de puntero fue para el lenguaje de programación PL / I en 1964.
El artículo seminal sobre esto apareció en 1967 en ACM Communications en 1967.