Domanda piuttosto semplice, ma qualcosa che non sono stato in grado di scoprire. Chi è stato il primo a descrivere l'idea di un puntatore? Il concetto astratto stesso?
Domanda piuttosto semplice, ma qualcosa che non sono stato in grado di scoprire. Chi è stato il primo a descrivere l'idea di un puntatore? Il concetto astratto stesso?
Risposte:
Bud Lawson ha ricevuto il Computer Pioneer Award dell'IEEEalcuni anni fa, per aver inventato la variabile pointer nel 1964.
I puntatori sono in realtà degli archivi indirizzati dai contenuti di un registro. Come tale tutti i linguaggi assembler implementano questo in qualche modo e, prima ancora, tutto il codice macchina hard coded lo ha implementato.
Ci saranno alcuni argomenti sul primo computer che lo ha implementato. Per quanto ne so, il sistema su piccola scala della Manchestern University è stato il primo a includere la memoria indirizzata dai registri controllati dal programma. Potrebbe essere stato preceduto dal sistema ENIAC ma aveva così poca memoria da rendere la memorizzazione indirizzabile un punto controverso.
I puntatori sono riferimenti in senso lato. La prima lingua ad avere qualcosa del genere fu ALGOL 60 che poteva chiamare per nome. Questa risposta su SO entra in qualche dettaglio. PL / I aveva puntatori come BCPL, il che significa che probabilmente anche CPL ha fatto, anche se non ho trovato alcuna prova per questo. CPL è molto difficile fornire informazioni concrete.
Per rispondere più direttamente alla tua domanda sul "chi" DW Barron, Christopher Strachey o Martin Richards probabilmente hanno coniato il termine "puntatore".
È difficile indovinare esattamente chi li ha inventati, ma i registri indice nell'IBM 704 sono stati probabilmente la prima implementazione. Da un punto di vista del linguaggio di programmazione, quindi, sarebbe stato senza dubbio il linguaggio assembly del 704.
Sembra che ci siano voluti alcuni anni prima che i linguaggi di programmazione di livello superiore fossero progettati per trarre vantaggio da questa innovazione, ma a quel punto la maggior parte dell'invenzione è stata fatta, e per lo più è dipeso da nomi, notazioni, ecc. Per descrivere quale hardware supportato.
I puntatori come concetto di base vengono utilizzati nell'indirizzamento indiretto di una funzione sulla maggior parte delle CPU che risale almeno al 6502.
Commodore usava il "kernal" sui suoi computer VIC 20, C64 e C128. un set fisso di software di indirizzo potrebbe chiamare che verrebbe quindi reindirizzato al codice corrente. Potrebbero quindi modificare il sistema operativo senza rompere il software esistente.
Penso che anche l'8080 e lo Z80 avessero un indirizzo indiretto, ma non ne sono certo e non me lo ricordo nell'8008.
Bene - La prima volta che una sintassi e una semantica concrete sono state sviluppate per le variabili puntatore è stata per il linguaggio di programmazione PL / I nel 1964.
L'articolo fondamentale su questo apparve nel 1967 in ACM Communications nel 1967.