At the dawn of the Scientific Revolution, inspired by Thomas Hobbes’s claim that the mind is an automaton and thought is but computation, Gottfried Leibniz set out to devise a universal language of thought, the characteristica universalis. By employing the science of algebra — the art of combining symbols — and applying it to Aristotle’s symbolic logic, he wanted to create the Art of Combination, a “general algebra” where the variables stand not for numbers but for concepts, which would serve as a “calculus ratiocinator”, a mechanism for calculating the answer to any question. It would end disputes among men and convince all in the glory of God. Two hundred years later, a self-taught mathematician by the name of George Boole also noticed the similarity between the use of symbols in Aristotelian logic and algebra and created an algebra of logic — based on then-recent advances first proposed by a mathematician and inventor called Charles Babbage — that allowed variables to represent things other than numbers. Boole, who had given up on the dream to become a priest, rejected the Christian doctrine of Trinitarianism in favor of monism, and believed that the unity of all things is represented by the number 1, which he then chose to represent the “universe of discourse” in his algebra. The talk will cover the long history of computation, logic and algebra, and the relationship between the three, from Classical times to the 20th century, starting out as a single discipline and then growing apart in the early 20th century. Rather than being surprising, this relationship stems from a single — yet fascinating — line of inquiry into the essence of thought, guided by a particular ancient aesthetic. We will focus on the importance of language and meaning in that evolution, and discuss the philosophical revolution that broke away from the linguistic tradition and completely changed how we view thought, computation and meaning.
Ron Pressler is a veteran programmer, working at Oracle, where he leads the project to add delimited continuations, lightweight concurrency and tail-calls to the Java Virtual Machine.