What did Ada Lovelace's program actually do? (2018)

Ada Lovelace’s 19th‑century work on Charles Babbage’s Analytical Engine is revisited as an early example of genuine programming: she designed an algorithm to calculate Bernoulli numbers, introduced looping and explicit tracking of variable state, and anticipated that such a machine could operate on music and other non‑numeric data. Commenters weigh how “computer” should be defined for mechanical devices like Babbage’s engines, examine evidence over whether Lovelace or Babbage wrote the first programs, and debate how much modern acclaim for her contributions reflects historical reality versus contemporary efforts to highlight women in computing.

Focus of the article / Lovelace’s notes

  • Commenters highlight that the real substance is in Lovelace’s appended notes (especially Note G and the diagram for computing Bernoulli numbers), not the translated paper itself.
  • Some wish the article had shown more of the primary material directly, though links to scans and transcriptions are shared.

What Lovelace’s program did & technical innovations

  • Her program computes Bernoulli numbers for the Analytical Engine.
  • Commenters note her explicit structuring of operations into repeatable groups (loops) and careful tracking of variable state, likened to modern compiler ideas such as static single assignment.
  • A probable typesetting error in the original table is discussed as possibly the “oldest bug in computing.”

Was Lovelace the first programmer? (Controversy)

  • One side: claims that most example programs were prepared earlier by Babbage; some argue there’s no clear evidence she wrote original programs or advanced the engine’s design, and that crediting her as first programmer is overstated or ideologically driven.
  • Other side: counters that she was long respected historically; that attempts to diminish her are themselves ideological; and that, regardless of “first,” she clearly grasped the conceptual implications of general-purpose computation.
  • Specific claims: she may have been first (or among the first) to use loops in such programs; but papers and archival work suggest Babbage also had looping constructs in his own (mostly unpublished) “Series L” tables.

Vision of general-purpose computation

  • Multiple comments stress how unusual her insight was: recognizing that a numerical machine could, by encoding non-numeric symbols as numbers, operate on music or other domains.
  • This is contrasted with contemporaries who mainly saw the engine as an arithmetic labor-saver.

Difference vs Analytical Engine; what is a “computer”?

  • Broad agreement: the Difference Engine was a fixed-function mechanical calculator; the Analytical Engine was a fully programmable, Turing-complete design.
  • Debate over “stored-program” definitions: Analytical Engine followed a separate-program (Harvard-like) card architecture, not von Neumann, but still read instructions from memory-like media.
  • Wider argument about when a machine deserves to be called a “computer” (fixed algorithm vs general, looping computation).

Emulation and reconstructions

  • Links are shared to a web-based emulator for Babbage’s instruction set, a C transliteration of Lovelace’s program, and other projects reconstructing or running her Bernoulli program on modern systems.

Other tangents

  • Discussion of historically programmable devices (Jacquard looms, automata), and whether early Chinese indexing schemes anticipate hashing.
  • Side threads on Babbage’s personality, manufacturing limits, and modern parallels in over-engineering and tooling.