Greenspun’s Tenth Rule of Programming says:
Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.
Here I’m going to take seriously a rule that was only not entirely serious. It’s saying three things about Lisp.
- It’s a frequently rediscovered technology. There’s something inevitable about it.
- It’s not completely widely known. Not everyone knows about it, so they don’t know that they’re reinventing it.
- It’s not easy to implement, hence all the poor implementations.
The same could be said of state machines. A number of projects have grown until they contained an ad hoc, informally-specified, bug-ridden, slow implementation of state machines.
What are other ideas like Lisp and state machines that are frequently and poorly reinvented?