I've had lots of thoughts lately about bounded versus unbounded systems.

A book is bounded; the global library system is unbounded. A CD is bounded; Spotify is unbounded. The world is effectively unbounded, and networked computer systems tend to be unbounded too.

Many things are bigger than a human can experience, or changing faster than a human can keep up with. Many curious explorers and tinkerers are drawn to these unbounded things because they are vast, unknowable, and therefore exciting.

But what finite, bounded things are worth exploring and tinkering with?

Unbounded things can be endlessly novel and fascinating without ever rising to the level of being good or interesting. If you find something unbounded that you like, you can soak in it forever without thinking twice about it.

If you find something bounded that you like, you are stuck. You will eventually run out of new material. Whenever I near the end of a great book or a great album, I have a feeling of doom because I know that soon there will be no more.

Once you finally finish, life gets hard. You want another chapter, or another song, but there's nothing there. You're done.

If you want more, all you can do is try to feed the obsession by replaying the hell out of what you've been given. You need to examine the old material in more and more depth and examine it from every possible angle.

You may even be driven to create something new to feed the hunger inside you.

So again, what bounded things can be explored for a lifetime?

Chess is the best example I can think of: one page of rules has been handed down for millennia.

Euclid's axioms are another good example, not because they are strictly true, but because they define a useful spatial model that's pretty close to how our universe works.

Most of the programmers around here can point to a one-page language spec with the same mojo: something small and self describing like a Lisp metacircular evaluator, or a Forth primitive word set, or an index card with all of Smalltalk written on it.

Compared to chess or geometry, programming has only been around long enough to be examined by a handful of generations, let alone hundreds. But no one points to say, Java, as the language that will affect how future generations think about programming. Even though far more lines of Java have been written than these other languages, and Java has had a far larger direct impact on most peoples' lives. Why not?

@psf > So again, what bounded things can be explored for a lifetime?

Interesting discussion, and I just want to say that the example that comes to mind for me is music. The predominant system of scales that's been handed down for millennia has in common with Euclid's axioms that it isn't the only possible or useful way to do things, but still it persists. Innumerable styles and traditions have developed around it. If there is such a fundamental structure to the principles underlying a similarly diverse class of programming languages, I haven't comprehended it yet.
@zudlig Oh that's a good one! I'd say the Circle of Fifths has got a pretty good claim to being All of Western Music on One Page. It's like Euclid; there are obviously other ways of doing things but this one isn't totally arbitrary, and has some consistent principles backing it up.