Systems Smalltalk

Systems Smalltalk
Photo by Camila Quintero Franco / Unsplash

If we stripped away all the nice bits of Smalltalk and made it a systems programming language, what would it look like?

No garbage collection, no green threads, no exceptions, no stack manipulation, no doesNotUnderstand:, may be not even perform:. If we strip it away what can we add back in using meta-programming?

And what about types? do we need them and just when and where do we need them to get the benefits of being closer to the metal?

Is this in the spirit of Smalltalk? no, absolutely not. Smalltalk was made to be a high level concepts language. But that doesn't mean high level concepts can't also be low level closer to metal concepts.

Of course the hardest thing about programming is naming things. What would we call this new kind of Smalltalk. Not Smalltalk/V or Smalltalk X. Those are taken. 5 and 10 are popular numbers apparently.

The name can be divided in to two parts - Small and Talk. Small being how simple it was to explain the language; and Talk because objects send each other messages. Message sending is the true core of Smalltalk and it is also one of the parts that makes it difficult to grasp for many programmers.

Given we might be adding many new concepts to the language it likely won't be Small any more. And I do wonder sometimes how Smalltalk would look if messages weren't directed at a single object but could be spoken to groups. Talk is still a good name for that bit.

One might consider the name lowtalk - except someone already used that. Perhaps low isn't low enough. Let's go with Zero. For simplicity we'll call it Smalltalk Zero or STZ.

stz it is.