4 ms·
Smalltalk is three things in one. It is a language; it embodies a language design idea; and it is an operating system. Learning Smalltalk gives you three thing
by tonyg 8y ago
Smalltalk is three things in one. It is a language; it embodies a language design idea; and it is an operating system.
Learning Smalltalk gives you three things:
1. An understanding of Smalltalk, the language. This is least essential. It's also the kind of thing you can pick up in a single 30-minute session. The language is tiny and simple.
2. An understanding of the design idea, uniformly object-oriented programming. This is crucial and will connect with other styles of programming including Actor-based and pure-functional. This is something you will never get from Java, which is not a uniformly object-oriented language.
3. An understanding of a completely different and (these days) unusual way of designing an operating system. An object-oriented operating system, to boot. The IDE, the debugger, and the other tooling all integrates to give a level of manageability in many ways far superior to e.g. Unix or Windows.
After a while, you may find yourself discovering subtle things about the interplay between the three aspects of Smalltalk that you can then apply in your own designs. For example, Smalltalk is a "dynamic" language, but the way classes and methods are arranged is very rigid, giving a lot of static structure to the system organisation. This static structure is what unlocks the powerful tooling, and is what simplifies the programmer's mental model to make the system understandable. Comparable OO and almost-OO languages, such as Python, have a more "dynamic" system organisation, making it harder to write tools for automatically manipulating Python systems and making it harder for programmers to understand how Python code, data, state, and processes come together to form a running program image.
- gsaga 8y ago>An object-oriented operating system, to boot Isn't that what android runtime is?
- nikki93 8y agoSmalltalk's OO and Java's OO are pretty different. If you get a chance to play w/ Smalltalk's (say Pharo) you should try it out!
- eggy 8y agoYou have just explained to me why I keep returning to Pharo over the years. I play with it, and always seem to walk away with a more connected, deeper understanding or sense of deep organization that I have not experienced with other languages/environments. The only thing is I have not been able to go beyond toy programs in Smalltalk, or utilities for work (I use Storyboard to keep track of my projects at work, since the company's system Vision by Deltek is too complicated, and we don't have full access to its utilities).
- scroot 8y agoI think the new graphics layer (Bloc) will help with this. It's already a huge mental leap to understand what's going on when someone first boots up a Smalltalk environment. The current look of the system doesn't help things.
- eggy 8y agoI thought Bloc was low level like Morphic. If not, I'll have to look into Bloc. I have been using Moose for my data viz needs, and playing with Pharo. I love GT (the Glamorous Toolkit)[1]. Will that be affected by Bloc? Smalltalk, Pharo in my case, is always refreshing and surprising. I have just not learned it enough to build anything complex yet, but that's on me. It's a great environment. [1] https://github.com/feenkcom/gtoolkit https://github.com/feenkcom/gtoolkit
- scroot 8y agoYes it's a replacement for Morphic, but it also allows for more modern 2D graphics. The new GToolkit alpha is actually built in Bloc.