Ada Lovelace is widely considered the world's first computer programmer. In 1843, she published a detailed algorithm for computing Bernoulli numbers on Charles Babbage's proposed Analytical Engine, a machine that was never built in her lifetime. Her "Note G" laid out a step-by-step sequence of operations — the first published program intended for a general-purpose computing machine — and she went further, arguing that such a machine could manipulate symbols, not just numbers.
The mechanism: what Note G actually specified
Lovelace's program was not a fragment or an illustration. It was a complete worked procedure for computing each Bernoulli number from the previous one, expressed as a table of operations the Engine would perform in sequence.
The Analytical Engine design had the ingredients a modern programmer would recognize. It had a "store" for holding numbers and a separate "mill" for arithmetic — the conceptual ancestor of memory and a CPU. It read instructions from punched cards, an idea Babbage adapted from the Jacquard loom, which used cards to control woven patterns. Crucially, the Engine could branch: it could act on the result of a comparison and choose a different path.
That last feature is why the program counts. Note G includes a conditional structure: the sequence checks a computed quantity against zero and, if it equals zero, skips part of the calculation. A fixed sequence of arithmetic is a calculation; a sequence that inspects an intermediate result and changes course is an algorithm in the modern sense. Lovelace's table encodes repetition, working variables, and a conditional jump across roughly two dozen operation steps.
Plain-language version: she wrote down not just what to compute but how a machine would decide, step by step, what to do next.
Quantified context: how small the first program was
The scale is humbling and clarifying. Note G spans about seven columns of operation codes across dozens of rows, and its purpose is to produce a single series of values — the Bernoulli numbers — one after another.
For comparison, consider what "program" means at different points in history:
| Milestone | Approximate date | Scale of the "program" |
|---|---|---|
| Lovelace's Note G | 1843 | Dozens of operation steps, one series of values |
| Babbage's Engine | Designed 1830s–1840s | Never completed; a partial build exists |
| ENIAC setup | 1940s | Physical rewiring per problem; no stored program |
| Stored-program machines | Late 1940s onward | Instructions held in memory alongside data |
| Modern general-purpose code | Present | Millions of instructions, layered abstraction |
The Engine itself was specified to hold on the order of a thousand 40-digit decimal numbers in its store and to run tens of operations per second by mechanical standards. Those figures describe a design, not a working machine. The distinction matters: the program was real as a document, while the hardware remained a blueprint.
Edge cases: the conditional, the loop, and the never-built machine
Three subtleties decide whether the "first programmer" claim survives scrutiny.
First, the conditional. Some historians note that the specific conditional in Note G was included partly to demonstrate the Engine's generality, and the surrounding discussion involved Babbage's feedback. The idea of a conditional instruction was Babbage's; the worked, published program was Lovelace's.
Second, the machine never ran. No Analytical Engine was completed, so the program was never executed on its target hardware. A modern reader might ask whether an unexecuted program is still a program. The answer in software terms is yes: code is code before it runs, and the historical claim rests on the published algorithm, not on a successful run.
Third, authorship. Babbage wrote fragments and demonstrations. Lovelace translated an Italian account of his lectures and appended notes substantially longer than the original text. In those notes she supplied the worked program and its explanatory scaffolding. The attribution to her rests on publication, completeness, and the conceptual framing she added.
Misconceptions: what Lovelace did and did not claim
The most persistent misconception is that Lovelace was a footnote or a translator. She was a translator who added roughly twice the original material in notes, including the algorithm. Dismissing her as a mouthpiece for Babbage misreads the documentary record.
A second misconception credits her with inventing the computer. She did not. Babbage designed the hardware; she specified what could be done with it. The "first programmer" title is about software, and it is accurate precisely because it is narrow.
A third misconception overstates the "poetical science" idea into a prediction of artificial intelligence. What she actually argued was that the Engine could operate on symbols — letters, musical notation, any structured entity — provided the relations between those symbols could be expressed operationally. That is a claim about generality of representation, not a claim about machine minds.
The counterintuitive detail worth holding onto: Lovelace was more cautious than her admirers. She explicitly limited what the Engine could originate, distinguishing manipulation of given rules from independent generation of new ones. That caution is often quoted out of context, but it reflects a working programmer's instinct — know what your machine actually does.
Practical actions: how to verify the claim yourself
You do not need a research library to check this. A few concrete steps will let you evaluate the "first programmer" claim on the evidence.
Read Note G itself in a public-domain edition and locate the conditional jump and the variable assignments. If you can follow the table, you can judge the claim directly. Compare the operation table against the Analytical Engine's documented instruction set, as described in Babbage's own papers and later technical histories. Check the publication date (1843) and the sequence of Babbage's own writings to see who published what, and when. Trace the term "first computer programmer" to its modern popularizers and note that the phrase is a retrospective label, not a title anyone awarded in 1843. Distinguish "first published program" from "first executed program" whenever you see the claim repeated, because the two are different achievements.
If you want a single threshold for deciding whether a historical artifact counts as a program, use three tests: a defined sequence of operations, a defined data representation, and at least one conditional or repeated structure. Note G passes all three. It fails only a fourth, optional test — successful execution — which no Analytical Engine program could pass.
Limitations: what the claim cannot settle
The "first programmer" title is a judgment about significance, not a measurement. It depends on how you define a program, a machine, and publication. Different definitions yield different answers, and honest histories say so.
There is also the problem of vanished work. Other people wrote instruction sequences for calculating machines before 1843, and some of that work is lost or was never published. Any claim of absolute firstness rests on the surviving, published record, not on a complete census of history.
The hardware gap remains the sharpest limitation. A program that never ran carries no performance data, no bug reports, and no confirmation that the Engine's mechanics could execute it as written. What we have is a rigorous specification by an exceptional mind, argued in public, in a form that anticipated the separation of hardware and software by a century.
None of this diminishes the achievement. It sharpens it: the first widely recognized computer programmer is celebrated not because her code ran, but because she understood what code would become — and wrote some.