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?

I'd suggest that it's because Java is too large to be a bounded system. How many people understand all of Java, and in a doomsday scenario, how many could reimplement a compatible replacement?

Java, The Language, is widely used. Java, The Idea, doesn't exist. The language is too big and sprawling to distill a unifying, distinctive driving idea from.

(Unless you're talking about the idea of a bytecode VM used as a compilation target for a friendly language -- an idea much older than Java. The idea of everything being an object is also much older than Java. But, you certainly can't start from 1 page of rules, sit down at a computer, and wind up with a working Java interpreter five days later as an inevitable consequence.)

I'm not trying to pick on Java, btw... I have the same thoughts about C++, or Javascript, and even C, although old C versions are approaching simple enough to be re-implemented by a typical programmer with a 1 page spc and a bit of time on their hands.

#forth is my classic example of a bounded programming language, by the way. The behavior of #forth devotees makes this clear. There is not a large body of material written about the language. There is not a large body of source code to study. But the language is not dead. Anyone who is interested in the language and has an itch to do more with it is drawn... dare I say cursed?... to implement it, reimplement it, and tinker at length. Because there is just no other way to get deeper into it, other than making your own path. More than any other language, it is a folk language that has been reimplemented hundreds of times to satisfy some kind of deep primal curiosity.

Despite this independence, most of these Forths and Forthlikes have strong structural similarities and force similar programming patterns on their user. A whole lot of behavior inevitably falls out of a short set of rules. That's the cool bit.

Just replying to one of my older posts to retract an incorrect statement:

"There is not a large body of material written about #Forth".

I was absolutely incorrect. There is a LOT written down. You just have to dig for it a bit. It's in books and papers, and personal webpages, and places like the #simtel archive. And most of it is pretty old.

I think the other point stands -- Forthlikes have strong structural similarities, and a lot of behavior inevitably falls out of a short set of rules.

@psf Java is an interesting example, because depending on where an how you interact with it, it is many things:

  • Java, the language.
  • Java, the compiler.
  • Java, the library (superset of language).
  • Java, the JVM. As a sysadmin / sysops guy, this is much of my interaction with it.
  • Java, the community.
  • Java, the product / vendor (Oracle, 'nuf said).
@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.

@psf If you treat a bounded entity as a set of internal relationships, rather than, say, a simple linear relationship, then the space to explore expands immensely.

That set of relationships might be entirely / largely contained (say, a particular fictional world / cinematic universe), or include references to an outside world.

Works such as religious texts (Torah, Bible, Qaran), philosophical works (Plato, Aristotle, Augustine, Averroes, Wittgenstein, Quine, ...) the Periodic Table, Particle Physics, etc., can provide ample material for many lifetimes of study.

The key here is to be able to take the components apart and reassemble them in different ways.

Much like the pieces of a chessboard, or the four letters of the genetic alphabet.

@dredmorbius Yes, allowing permutations is very helpful in keeping small systems expressive and interesting. Relying on emergent behavior is also helpful. Of course, it's often hard to fine tune this kind of system if it's going in a direction you don't like -- small changes have a large impact.

I found another fascinating bounded system: the Yamaha DX7.

Well-understood, free and open-source (thanks #Dexed!) and with a patch format succinct enough that you can write down your masterpiece on a sheet of paper for your grandkids... who are exceedingly likely to be able to actually USE IT

#permasynthesizing?

@psf Less disagreeing than expanding on your observation here: books.

Depending on where, when, and how you interact with books, they're not necessarily bounded.

Early "books" were oral traditions, and were adapted, expanded, excised, and changed by those who retold them.

Prior to the invention of the codex, a book existed as multiple scrolls, and was fairly modular. New scrolls could be added, existing scrolls could be taken away (or lost or burned or otherwise destroyed). The form was highly modular.

Prior to the invention of the printing press, reproduction was tedious, and cost on the order of $0.5 -- $3 million per volume in present-day value, beginning with the herd of cattle you'd have to slaughter for the vellum (300 hides to a typical book), or the old parchment you'd have to scrape clean as a palimpsest. Then copy out the text by hand with scribes, at about 0.5 -- 3 man-years per volume.

Encyclopaedias emerged as serially-produced, subscription productions, most especially with Diderot in the 18th century.

In the late 19th century, "loose-leaf" bidnings emerged, and books could be updated with new inserts. Serials, yearbooks, quarterlies, etc., emerged, and there was a whole practice and industry of producing and updating those books. These were, strictly, "unbounded".

And today with the merging of version-control, HTML, databases, and collaborative editing, wikis exist which are in some ways loose-leaf on steroids, and I'd argue an entirely new form of book or publication, though of course with prior antecedents.