Pergunta bastante simples, mas algo que não consegui descobrir. Quem foi a primeira pessoa a descrever a idéia de um ponteiro? O próprio conceito abstrato?
Pergunta bastante simples, mas algo que não consegui descobrir. Quem foi a primeira pessoa a descrever a idéia de um ponteiro? O próprio conceito abstrato?
Respostas:
Há alguns anos, Bud Lawson recebeu o Prêmio de Pioneiro em Computador do IEEE, por ter inventado a variável ponteiro em 1964.
Ponteiros são realmente armazenamento endereçado pelo conteúdo de um registro. Como tal, todas as linguagens assembler implementam isso de alguma maneira e, antes disso, todo código de máquina codificado implementava isso.
Haverá algum argumento sobre o primeiro computador que implementou isso. Tanto quanto sei, o Sistema de Pequena Escala da Universidade de Manchestern foi o primeiro a incluir armazenamento endereçado por registros controlados por programas. Pode ter sido precedido pelo sistema ENIAC, mas tinha tão pouco armazenamento que fazia do armazenamento endereçável um ponto discutível.
Ponteiros são mais amplamente referências. O primeiro idioma a ter algo parecido foi o ALGOL 60, que poderia ser chamado pelo nome. Esta resposta no SO entra em alguns detalhes. O PL / eu tinha indicadores, assim como o BCPL, o que significa que o CPL provavelmente também o fez, embora eu não tenha encontrado nenhuma evidência para isso. A CPL é muito difícil de obter informações concretas.
Para responder mais diretamente à sua pergunta sobre "quem", DW Barron, Christopher Strachey ou Martin Richards, provavelmente cunharam o termo "ponteiro".
É difícil adivinhar exatamente quem os criou, mas os registros de índice no IBM 704 foram provavelmente a primeira implementação. Do ponto de vista da linguagem de programação, portanto, seria sem dúvida a linguagem assembly dos anos 70.
Aparentemente, levou alguns anos depois disso antes que as linguagens de programação de nível superior fossem projetadas para tirar proveito dessa inovação, mas nessa época a maior parte da invenção foi concluída e, na maior parte, se resumiu a escolher nomes, notações etc. para descrever o que o hardware suportado.
Os ponteiros como conceito básico são usados no "endereçamento indireto" de uma função na maioria das CPUs que remontam pelo menos ao 6502.
O Commodore usou o "kernal" em seus computadores VIC 20, C64 e C128. poderia chamar um conjunto fixo de software de endereço que seria redirecionado para o código atual. Eles poderiam modificar o sistema operacional sem interromper o software existente.
Acho que o 8080 e o Z80 também tinham endereço indireto, mas não tenho certeza e não me lembro disso no 8008.
Bem - A primeira vez que uma sintaxe e semântica concretas foram desenvolvidas para variáveis de ponteiro foi para a linguagem de programação PL / I em 1964.
O artigo seminal sobre isso apareceu em 1967 na ACM Communications em 1967.