So far the most interesting idea I've encountered in Smalltalk is the focus on late binding. Most object-oriented languages have static type systems that bind at compile time. This results in very inflexible systems that don't adapt well to change. Smalltalk on the other hand is practically type-less and binds methods to objects at the last possible moment. Basically, you can send any message to any object and you only find out if it works at runtime when the object either understands the message or doesn't.
Of course, that's the same way Perl works! Seeing the way that Smalltalk exploits this property to build object systems that can be reorganized at runtime is very interesting to me. I think that if I let this stuff stew long enough I'll eventually be able to integrate it into my OO design methodology. And if that happens, watch out!
-sam
Debugging a program into existence (Score:2, Interesting)
*the* way to learn objects (Score:3, Interesting)
Squeak [squeak.org] rocks. It has a heritage leading back to the original Smalltalk-80 system, being maintained by two of the guys that came from that place and era (Alan Kay and Dan Ingalls). On a 68K-class machine, you had a full interactive development environment, including a breakpoint system with full source-code symbolic debugger that lets you restart from the middle of the interrupt, having changed code at any level of the stack. Try that with Java. And as soon as you taste the "everything is an object" world, you won't want to go back.
Reply to This
Now you know Smalltalk syntax... (Score:1)