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?

  • 8
    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, 2011 at 5:30
  • 3
    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." Oct 14, 2011 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.
    – user8709
    Oct 14, 2011 at 13:33

6 Answers 6


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

  • P. M. Sherman, in 1963, predates him. See his Programming & coding Digital Computers viii. 152: "These index registers point to the locations in memory; hence they are called pointers when so used."
    – Geremia
    Jun 12, 2015 at 21:17

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.

  • +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?
    – user4234
    Oct 14, 2011 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.
    – user8709
    Oct 14, 2011 at 13:37
  • @Steve - Good point.
    – user4234
    Oct 14, 2011 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. Oct 16, 2011 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".

  • 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, 2011 at 5:08
  • So that would be 1966 then.
    – user28988
    Oct 14, 2011 at 5:16
  • ALGOL had pointers Oct 14, 2011 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.


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.

  • 1
    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.
    – user8709
    Oct 14, 2011 at 13:46

Well - The first time a concrete syntax and semantics where developed for pointer variables was for the PL/I Programming Language in 1964.

The seminal paper on this appeared in 1967 in the ACM Communications in 1967.

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