Code master Wheatstone
Among my second tier interests are murder mysteries, detective stories, and cryptography. The first typically includes the second, but there are many detective stories that don’t involve murder. Two of my favorite detectives, Spenser (by Robert B. Parker) and V.I. Warshawski (by Sara Paretsky), often have cases not involving murder.
The third interest I listed, cryptography, doesn’t usually coincide with the first two, but it did play a role in a recent locked-room murder mystery involving the delightful amateur detective Lord Peter Wimsey (by Dorothy L. Sayers). While I’ve always enjoyed secret codes, I’d never heard of the cipher Sayers used — the Playfair cipher.
It dates back to 1854, and is kind of cool, so I thought I’d share it.
When I was a high school kid, my dad and I sometimes played a game where one of us would make up a secret code, write a message in that code, and the other would try to decipher the message. We generally used simple substitution ciphers, so it was an exercise in letter frequency analysis and word guessing.
There’s a cute secret code I found in a book back then that really stuck with me because of the neat way it looks. It also stuck with me because it’s so simple that once you learn it, you really can’t forget it.
So for some Saturday fun, I thought I’d share it with you.
We started with the idea of code — data consisting of instructions in a special language. Code can express an algorithm, a process consisting of instruction steps. That implies an engine that understands the code language and executes the steps in the code.
Last time we started with Turing Machines, the abstract computers that describe algorithms, and ended with the concrete idea of modern digital computers using stored-programs and built on the Von Neumann architecture.
Today we look into that architecture a bit…
Is that you, HAL?
Last time, in Calculated Math, I described how information — data — can have special characteristics that allow it to be interpreted as code, as instructions in some special language known to some “engine” that executes — runs — the code.
In some cases the code language has characteristics that make it Turing Complete (TC). One cornerstone of computer science is the Church-Turing thesis, which says that all TC languages are equivalent. What one can do, so can all the others.
That is where we pick up this time…
The previous post, Halt! (or not), described the Turing Halting Problem, a fundamental limit on what computers can do, on what can be calculated by a program. Kurt Gödel showed that a very similar limit exists for any (sufficiently powerful) mathematical system.
This raises some obvious questions: What is calculation, exactly? What do we mean when we talk about a program or algorithm? (And how does all of this connect with the world of mathematics?)
Today we’re going to start exploring that.
I’m on a numeric kick with regard to Sidebands. Don’t worry, it can’t last past 13, because 14 and the numbers that follow are fairly uninspiring. Maybe #21 will be special (or not); Sidebands become adults or something. I’ll have to think about that.
I’ve also noticed that Sidebands have taken on more life than I intended. The plan was for them to be short and frequent, but some of them are pretty meaty. That’s okay, meaty words are the point here. And I’m still searching for my “voice” as I write. Many years of more formal writing, much of it technical, seem to push me away from the personal writing I wanted for this blog.
Well it’s a journey, isn’t it; a process.