The big thing about Smalltalk isn't objects or classes. The big thing, the thing that's often missed, is message passing -- which doesn't depend on classes or the like. Conceptually, a message is just a word or symbol, and a list of IDs that point in some way to whatever other objects are involved.
Smalltalk's syntax is built around message passing, not around objects and class hierarchies.
"Comments go in double quotes in Smalltalk."
| foo |
"Declare the temporary variable named foo"
foo <- SomeClass new.
"Send the message 'new' to SomeClass, and make the variable 'foo' point to whatever SomeClass sends back as an answer.
foo doSomething.
foo doSomethingElse.
"Send foo a couple of messages."
This is not a syntax that depends on anything other than these principles:
- There are named objects.
- An object can send any message it wants to any other object it has the name of.
- An object can receive any message from any object.
- On receiving a message, an object can send one or more messages, and finally return the id of another object or itself as the answer to the message.
Nowhere in the syntax is there anything about classes or inheritance or any of that.