Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Pretty simple question, but something I haven't been able to find out. Who was the first person to describe the idea of a pointer? The abstract concept itself?

share|improve this question
7  
Considering pointers are just references to memory, I'm assuming pointers (in some shape or form) have existed since the beginning of computing. How else would you read a bit of memory? –  Rob Oct 14 '11 at 5:30
2  
Let's not forget the Instruction Pointer (IP) here (aka Program Counter). "Indeed, the program counter (or any equivalent block of hardware that serves the same purpose) is very much central to the von Neumann architecture." –  Scott Whitlock Oct 14 '11 at 13:23
    
@Rob - there have been memory stores that were accessed (at least at the lowest level) by timing rather than by address - mercury delay lines etc. In principle, it'd be possible to do some kinds of information processing without inventing addresses. Also, the Turing machine model only had a tape (whoops, why did I say stack?). There are possible answers to "how else?", IOW, though in real life I imagine you're right. –  Steve314 Oct 14 '11 at 13:33

5 Answers 5

Pointers are really storage addressed by the contents of a register. As such all assembler languages implement this in some way, and, before that all hard coded machine code implemented this.

There will be some argument as to the first computer that implemented this. As far as I know the Manchestern University Small Scale System was the first to include storage addressed by program controlled registers. It may have been preceded by the ENIAC system but it had so little storage as to make addressable storage a moot point.

share|improve this answer
    
+1 I'm assuming the Difference Engine was too simple to require registers, but does anyone know whether the Analytical Engine would have needed them? –  Mark Bannister Oct 14 '11 at 10:46
    
@Mark - this could be a definition issue. Even to perform a single arithmetic operation like an addition, you have two input values and an output that need some kind of representation in the machinery. That representation could be called a register. Even an abacus could be claimed to have a register. –  Steve314 Oct 14 '11 at 13:37
    
@Steve - Good point. –  Mark Bannister Oct 14 '11 at 13:53
    
The key point here is "storage addressed by the contents of a register". i.e. the ability to load and store a register from some other piece of memory, using the address in another register, and, the ability to manipulate this address. –  James Anderson Oct 16 '11 at 4:27

Pointers are more broadly References. The first language to have anything like that was ALGOL 60 which could call by name. This answer on SO goes into some detail. PL/I had pointers as did BCPL which means that CPL probably did too though I've not found any evidence for it. CPL is very hard to concrete information on.

To more directly answer your question as to the "who" either D. W. Barron, Christopher Strachey or Martin Richards probably coined the term "pointer".

share|improve this answer
    
Don't forget B - it had pointers! Also PL/I, and I'm sure there are others before it, not counting assembly and Turing machines. –  Pubby Oct 14 '11 at 5:08
    
So that would be 1966 then. –  World Engineer Oct 14 '11 at 5:16
    
ALGOL had pointers –  kevin cline Oct 14 '11 at 13:17

It's hard to guess exactly who came up with them, but the index registers in the IBM 704 were probably the first implementation. From a programming language viewpoint, therefore, it would undoubtedly have been the 704's assembly language.

It apparently took a few years after that before higher level programming languages were designed to take advantage of this innovation, but by then most of the inventing was done, and it mostly came down to picking names, notations, etc. to describe what the hardware supported.

share|improve this answer

Bud Lawson received the IEEE's Computer Pioneer Award a few years back, for inventing the pointer variable in 1964.

share|improve this answer

Pointers as a basic concept are used in "indirect addressing" a function on most CPUs going back at least as the 6502.

Commodore used the "kernal" on its VIC 20, C64, and C128 computers. a fixed set of address software could call that would then be redirected to the current code. They could then modify the OS without breaking existing software.

I think the 8080 and Z80 had indirect address too, but I am not certain and I don't remember it in the 8008.

share|improve this answer
    
Actually, pointers are used by direct addressing too. They're just compile-time constant pointers - unless you're using self-modifying code, of course. I'm a fan of the 6502 (or strictly, the 6510) too - my first machine was a C64 - but that chip isn't really relevant here. The early consumer microprocessors didn't invent much in the way of new principles - the ideas had been around for decades already. It's just that those ideas weren't implementable as single affordable chips until the 70s, and didn't become mainstream consumer toys until the 80s. –  Steve314 Oct 14 '11 at 13:46

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.