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í mismo?
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í mismo?
Respuestas:
Bud Lawson recibió el premio Computer Pioneer Award del IEEEhace unos años, por inventar la variable puntero en 1964.
Los punteros son realmente almacenamiento dirigido por el contenido de un registro. Como tal, todos los lenguajes de ensamblador implementan esto de alguna manera y, antes de eso, todo el código de máquina codificado lo implementaba.
Habrá algún argumento sobre la primera computadora que implementó esto. Hasta donde yo sé, el Sistema de pequeña escala de la Universidad de Manchestern fue el primero en incluir almacenamiento dirigido por registros controlados por el programa. Es posible que haya sido precedido por el sistema ENIAC, pero tenía tan poco espacio de almacenamiento como para hacer del almacenamiento direccionable un punto discutible.
Los punteros son más ampliamente Referencias. El primer idioma en tener algo así fue ALGOL 60, que podía llamar por su nombre. Esta respuesta en SO entra en algunos detalles. PL / I tenía indicadores al igual que BCPL, lo que significa que CPL probablemente también lo hizo, aunque no he encontrado ninguna evidencia de ello. La CPL es muy difícil de concretar información.
Para responder más directamente a su pregunta sobre el "quién", ya sea DW Barron, Christopher Strachey o Martin Richards, probablemente acuñaron el término "puntero".
Es difícil adivinar exactamente quién se les ocurrió, pero los registros de índice en el IBM 704 fueron probablemente la primera implementación. Desde el punto de vista del lenguaje de programación, por lo tanto, sin duda habría sido el lenguaje ensamblador del 704.
Al parecer, pasaron algunos años después de que los lenguajes de programación de nivel superior se diseñaron para aprovechar esta innovación, pero para entonces la mayor parte de la invención se realizó, y se redujo principalmente a elegir nombres, anotaciones, etc. para describir el hardware soportado.
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 remontan al menos al 6502.
Commodore usó el "kernal" en sus computadoras VIC 20, C64 y C128. podría llamar un conjunto fijo de software de direcciones que luego sería redirigido al código actual. Luego podrían modificar el sistema operativo sin romper el software existente.
Creo que el 8080 y el Z80 también tenían una dirección indirecta, pero no estoy seguro y no lo recuerdo en el 8008.
Bueno, la primera vez que se desarrolló una sintaxis y semántica concretas para las variables de puntero fue para el lenguaje de programación PL / I en 1964.
El documento seminal sobre esto apareció en 1967 en ACM Communications en 1967.