- Message-Sending
- Turtles All the Way Down
- No Source Code
- Classes and Objects
- Smalltalk Descendants
Smalltalk Descendants
Although Smalltalk is rarely used today, one of its descendants is popular: Objective-C was created as a hybrid language, combining C and Smalltalk. If you want to write good Objective-C code, it's worth your time to learn both languages.
Objective-C inherits the message-sending syntax from Smalltalk, as well as the object model. In various places in Objective-C, you'll see references to metaclasses, in spite of the fact that they're not exposed by the Objective-C language anywhere. In Smalltalk, metaclasses had a special status, whereas in Objective-C they're just the thing to which a class' isa pointer points, and they're considered an implementation detail.
Java was influenced heavily by Objective-C, although gaining interfaces (called protocols in Objective-C) and explicit typing, but beyond those differences, the object model is very similar to that in Smalltalk. Java handles method lookups in a slightly different way; until Java 1.3, it also lacked the fallback mechanism for missing methods that both Smalltalk and Objective-C provide. This mechanism allows an object to handle messages that are sent to it, even when it doesn't explicitly declare a method corresponding to the message name.
The Smalltalk family has lots of other members. Ruby, for example, was intended to marry Smalltalk semantics with Perl syntax. Why anyone thought this was a good idea is unclear.
What's Next?
The next article ends this series with a look at one of the most influential programming languages of all time: Lisp.