3 ms·
Smalltalk is still the gold standard for class-based object-oriented language design. It doesn't get used much, though. There are the problems with image-based
by wrp 15y ago
Smalltalk is still the gold standard for class-based object-oriented language design. It doesn't get used much, though. There are the problems with image-based development, external interfacing, cross-implementation differences, unwieldy class libraries, and a bunch of other things.
Ruby gets recommended a lot as a modern alternative. It has a very clean syntax and the OOP machinery is closely copied from Smalltalk. By my experience is that while Ruby code at first seems clean and elegant, it turns out to be confusing. The design philosophy is like Perl, have multiple ways to do anything. The larger and more complicated grammar makes it harder to learn. I thought that while regexes and class management were smoothly integrated, many other syntactic features were inconsistent, nonstandard, or ambiguous. In all, there were just too many other things going on to make Ruby a good vehicle for dipping into class-based OOP.
Python, also, might be suggested, since Python 3 has made the OOP features more integrated than once was the case. However, Python is a big language, there is a lot to become aware of, and the OOP machinery is not all that close to Smalltalk any more.
GNU Smalltalk is what I recommend. It is a straightforward implementation of traditional Smalltalk with one big difference. Instead of being image-based and editable only in the Smalltalk browser environment, GST is text-based. You write code in a text editor as with any other language, though there is also a browser environment available. GNU Smalltalk is designed as a scripting language, so it has the usual facilities for system interaction.
- fractallyte 15y agoPart of the charm of Smalltalk (or, more objectively, the uniqueness in a Perlis-language sense) is its image-based nature. Smalltalk is the image. A Smalltalk IDE is unlike any other. The integration of language and 'operating system' changes the way you look at most other languages; it's not just an OO thing. You lose all that if you go running to the familiar, comfortable 'standard' of a text editor. Personally, I'd suggest Pharo Smalltalk as an ideal starting point: it's clean, modern and under vigorous development, with a thriving community. Also, I strongly disagree with 'unwieldy class libraries' - I've found the libraries a joy to use. Clear, logical, and very easy to explore even without reams of documentation.
- wrp 15y agoI think this is taking the position that even though the semantics of the language is the same, changing the interface to it can make for a change in programming paradigm. I'm skeptical, but it would be interesting to hear this idea developed more.