Principia Mathematica: A Modern Classic on Programming Languages
Principia Mathematica is modern and insightful
Published in 1910, Whitehead and Russell's Principia Mathematica reads like a modern text on programming languages. It discusses extensionality, referential transparency, and types, and anticipates lambda-calculus with its propositional functions. The book's insistence on distinguishing 'any' from 'all' hints at intuitionism, and its 'incomplete symbols' foreshadow continuations. This review highlights these insights, noting that the book's real value lies in its foundational concepts, not its famous 1+1=2 proof.
The definition contains an analysis of a common idea, and may therefore express a notable advance.
- tristramb
"Principia Mathematica is an odd book, worth looking into from a historical point of view as well as a mathematical one. It was written around 1910, and mathematical logic was still then in its infancy, fresh from the transformation worked on it by Peano and Frege. The notation is somewhat obscure, because mathematical notation has evolved substantially since then. And many of the simple techniques that we now take for granted are absent. Like a poorly-written computer program, a lot of Principia Mathematica's bulk is repeated code, separate sections that say essentially the same things, because the authors haven't yet learned the techniques that would allow the sections to be combined into one."
- Mark Dominus (https://blog.plover.com/math/PM.html)
- WillAdams
For an accessible introduction before beginning this, consider his _Introduction to Mathematical Philosophy_:
https://en.wikipedia.org/wiki/Introduction_to_Mathematical_P...
and for ease of reading see the various PDF versions at:
- radford-neal
The notation for avoiding parentheses is interesting, and I've thought that it might be useful in programming languages.
To illustrate, suppose you have a non-associative operator $. Rather than write a$(b$c), you can write a$.b$c - the . makes the $ before it be lower precedence on the right side. More dots make things be even lower precedence.
So, for example,
a$b .$: x$y .$. p$q
means
(a$b) $ ((x$y) $ (p$q))
At least, that's my recollection. It's been over fifty years since I read (significant parts of) it...
- pngwen
You might be interested in Kurt Goedel’s extended book review wherein he proves that Principia cannot do what it sets out to do, nor can any such system.
I do teach PM when I teach theory of computation, but largely to tell the story of how we discovered the limits to computation.
- glimshe
If you can read this book cover-to-cover, you're an absolute hero. Sometimes I wonder if they inserted a big logical error in the middle just to troll people under the assumption nobody would bother to read it.
- nitsuaeekcm
For those who aren't familiar with the great but tragic story of Principia and Russell's quest for the foundation of math (spoiler: there is none), there's a really great graphic novel called Logicomix https://en.wikipedia.org/wiki/Logicomix
I haven't read it in probably ten years, but it's one of those books and stories I spend an inordinate amount of time thinking about, for whatever reason.
- lordleft
It blows my mind that Russell invented (formalized) types. Such an elemental concept, but so useful.
- d4rkp4ttern
An interesting fact I learned while reading The Dream Machine[1], is that Principia was the basis of Newell, Simon and Shaw’s Logic Theorist (1956), considered to be the “first AI program”. Amusing and amazing to see this in the context of today’s Erdos-slaying LLMs.
Quoting from Wikipedia:
https://en.wikipedia.org/wiki/Logic_Theorist
Logic Theorist is a computer program completed in 1956 by Allen Newell, Herbert A. Simon, and Cliff Shaw.[1] It was the first program deliberately engineered to perform automated reasoning, and has been described as "the first artificial intelligence program".[1][a] Logic Theorist proved 38 of the first 52 theorems in chapter two of Whitehead and Bertrand Russell's Principia Mathematica, and found a new and shorter proof for Theorem 2.85.[3]