Could the first computers understand today's code? A short history of programming

· History

Could the first computers understand today's code? A short history of programming

The short answer is no. The first computers could not understand the code we write today, and many of them were not even built to keep a program inside themselves. This post walks through how code was written, how we got to today, and why those old machines could not read modern code, explaining the technical terms along the way.

One thing first: a program is a list of step-by-step instructions that tells a computer what to do. It is a bit like a recipe: do this first, then add that, and if this happens, check that. Writing code means writing that recipe in a form the computer can follow. What counts as a form the computer can follow has changed a great deal.

The program came before the machine

The first computer program is usually credited to Ada Lovelace. In 1843, while translating Luigi Menabrea's article about the machine Charles Babbage had designed, she added seven notes (A through G). The last, Note G, describes a step-by-step method for the Analytical Engine to compute Bernoulli numbers (a particular sequence of numbers in mathematics). [1]

The catch is that the machine was never built, so the program was never run. Modern examination also reportedly found a flaw in step four, where two variables are swapped. [1] To me this is the neatest example of software being born before hardware: the recipe was written, but the kitchen did not exist.

ENIAC: programming meant pulling cables

ENIAC was a huge electronic computer completed in 1945. You did not program it by typing on a screen. It had plugboards, cables and dozens of switches, and to set up a program you plugged and turned them one by one. Each of its three portable tables held 1,200 switches. [2]

Mapping a problem onto the machine usually took weeks, setting it up on cables and switches could take days, and then came debugging. [2] The work was done by six women chosen from about 200 people working as "computers" at the Moore School: Kay McNulty, Jean Jennings (Bartik), Betty Snyder (Holberton), Marlyn Wescoff, Fran Bilas and Ruth Lichterman. [2] In other words, writing code back then was partly electrician's work.

In 1948 ENIAC got a primitive "stored program" mechanism. It cut the machine's speed by a factor of six but reduced reprogramming from days to hours. [2]

Putting the program in memory: Baby and EDSAC

This was the real turning point: instead of rewiring the machine for each new job, keep the program in the computer's memory. By analogy, instead of rebuilding the kitchen for every dish, you write the recipe in a notebook that sits in the kitchen and read from it. The idea is called the "stored program."

The electronic racks of the Manchester Baby replica in a museum, with visitors looking on

A replica of the Manchester Baby in a museum. The original ran in 1948. Parrot of Doom · CC BY-SA 3.0

On 21 June 1948 a machine in Manchester called the Baby ran its first program this way. Written by Tom Kilburn, it found the largest number that divides 262,144 (2¹⁸) evenly, other than the number itself: 131,072. It took about 52 minutes and 3.5 million operations. [3] A phone today does that in the blink of an eye.

The Baby's memory was tiny: 32 words, 1,024 bits in total. [3] A bit is the smallest unit of information, a single on/off switch, and 8 bits make a byte. So that is 128 bytes, roughly the size of 128 letters of text. The program was 17 instructions, entered bit by bit in binary (only 0s and 1s) through 32 buttons and switches. The machine could do only seven kinds of operation. [3]

A year later, on 6 May 1949, EDSAC ran in Cambridge. Programs went in on punched paper tape and results were printed by a typewriter-like machine (a teleprinter). Its first program printed the squares of the numbers from 0 to 99. [4] The machine's initial orders worked as a basic assembler, a helper that lets you use short command names instead of entering raw numbers. By 1951, 87 subroutines were ready for general use. A subroutine is a job that is often needed (say, taking a square root) written once and reused every time. [4]

Toward human language

The only language a computer truly understands is machine code, instructions made of 0s and 1s. Writing it by hand is tedious and error-prone. [8] That is why Grace Hopper proposed that programmers write in English and let the computer translate it into machine code. She was told computers could not understand English, and the idea was not accepted for three years. [5]

A translator program like that is called a compiler. Hopper's A-0 System, finished in 1952, is often called the first compiler. According to a note on Wikipedia, by today's standards it was closer to a linker, which is one component of a compiler. [5] FLOW-MATIC followed, and then COBOL in 1959. [5]

FORTRAN came from John Backus's IBM team: a proposal in 1953, a draft specification in 1954, the first manual in 1956 and the first compiler in April 1957. [6] The aim was a more practical alternative to assembly language (a language very close to machine code, written with short words) on the IBM 704. The compiled code had to run fast, because assembly programmers would not accept the new method unless its output was good enough. [6]

Today: from C to Python

Between 1972 and 1973 Dennis Ritchie developed the C language at Bell Labs. It was first used for tools for the Unix operating system, and the core of Unix Version 4, released in November 1973, was extensively reimplemented in C. [7]

Python, widely used today, sits one step higher. The code you write is first turned into bytecode, an intermediate form, and then a virtual machine (a program running inside the computer) carries it out step by step. [9] Python's own glossary adds that bytecode is not expected to work across different virtual machines or to stay the same between versions. [9]

PeriodHow programs were written
1843Step-by-step description on paper (Note G)
1945-1948ENIAC: cables, plugs and switches
1948-1949Baby and EDSAC: program in memory, switches and paper tape
1952-1957Compilers: A-0, FORTRAN
1972 to nowC, Python and other high-level languages

So could the first computer understand today's code?

It could not, for three reasons.

First, machine code is specific to a processor family: code written for one family generally does not run on another, with some exceptions. [8] A Python program is not something any computer reads directly until it is translated into the machine's own instructions. Second, ENIAC did not keep its program in memory until 1948. [2] Third, the Baby's memory was 128 bytes and it could do seven operations. [3] It had no room for a compiler that could translate a modern language.

Do today's processors still work with 0s and 1s?

Yes. What we write in a high-level language eventually comes down to the processor's machine code, and a compiler or interpreter closes the gap. According to Wikipedia, writing machine code directly is tedious and error-prone, so programs are usually written in assembly or in a high-level language. [8]

Short glossary
  • Bit and byte: A bit is the smallest unit of information, 0 or 1. 8 bits make a byte.
  • Machine code: The instructions, made of 0s and 1s, that a processor understands directly.
  • Assembly language: A language very close to machine code that gives instructions short names. An assembler translates it into machine code.
  • Compiler: A program that translates your code into machine code from start to finish.
  • Interpreter: A program that translates code piece by piece while running it, a bit like a simultaneous interpreter.
  • Subroutine: A small piece of code written once and used again and again.
  • Stored program: The program living in the machine's memory instead of in its cables.

My own takeaway is that over this century what changed is less the speed of the machine than how close the programmer has to stand to it. Every new layer left people with a little less cable and a little more idea.

Sources

  1. Wikipedia. Note G (accessed 2026-10-21)
  2. Wikipedia. ENIAC (accessed 2026-10-21)
  3. Wikipedia. Manchester Baby (accessed 2026-10-21)
  4. Wikipedia. EDSAC (accessed 2026-10-21)
  5. Wikipedia. Grace Hopper (accessed 2026-10-21)
  6. Wikipedia. Fortran (accessed 2026-10-21)
  7. Wikipedia. C (programming language) (accessed 2026-10-21)
  8. Wikipedia. Machine code (accessed 2026-10-21)
  9. Python Software Foundation. Python glossary (bytecode, interpreted) (accessed 2026-10-21)

Cover image: two women programmers working at ENIAC's control panel (US Army, 1946). U.S. Army · Public domain