| # | PC | Op | Cond | Dst | Src | Description | DR0 | DR1 | DR2 | DR3 | DR4 | DR5 | DR6 | DR7 | DR8 | DR9 | DR10 | DR11 | DR12 | DR13 | DR14 | DR15 | N | Z | C | V | STO |
|---|
In 1843, Ada Lovelace wrote the first computer program — Note G, an algorithm for computing Bernoulli numbers. It was not just code. It was the first first-class program: it passed functions as arguments to other functions, not just values.
This is the vital distinction. Basic machine code (Turing) moves numbers between registers — ADD R0, R1, R2 adds two values, nothing more. CLOOMC is different. In CLOOMC, a variable can hold a function, pass it to another function, and return a function as a result. let double = \x -> x * 2 creates a function. let apply = \f x -> f(x) passes that function as an argument. Ada did this in 1843 — Alonzo Church formalised it in 1936 as the lambda calculus.
Type let x = 2 + 3 and you are writing what Ada wrote. To see her original algorithm as Church Machine code, click Create and select the Bernoulli example.
All 53 HTML pages in the Church Machine project.