This question comes up every few years - and it’s a good one to revisit, particularly in a new year.
You’ve already had a few good answers - and I’m sure you will get a few more. Of the languages you cite - I’ve tried 2 of them (C# and Swift) - and they are just too complicated. They don’t share the elegance of Smalltalk, it’s such a compact, simple and approachable language. But it’s not just the language - it’s the tools which are all built and self hosted in the language as well , meaning they serve as great examples in how to do most things and also enable you to trivially get in there and extend your programming experience. Even deeper - they let you gradually understand how everything works - even down to the compiler and debugger. Then you understand there is no incomprehensible magic, it’s just straight forward code and messages. I rarely find average C# or Swift programmers who understand how things work in their language - it’s all voodoo and stack overflow for them, whereas most Smalltalkers after 6 months will understand how conditional logic works and many other lower level concepts. It’s also not surprising that many computing innovations (more than most languages I’d say) trace back to Smalltalk (and continue to do so). That simplicity and elegance just inspires creative thinking. While many languages have borrowed ideas from Smalltalk (which none of us mind) - they just got awkwardly bolted on. As an example - most languages now have closures , but the ethos of them is never properly embraced. For example, while we have exceptions - they dont get used as much as other languages because the convention (pervasive in all libraries) is to carry an error closure along with an operation - so on an error condition you can evaluate some code exactly where you need it vs winding back up the stack. Eg #at:ifAbsent: or #detect:ifNone: (and as previously mentioned, you can see how these work, and implement your own similar conventions in your models too). In fact Boolean logic follows suit. This has far reaching implications which just lead to beautiful, compact, readable code. I keep looking at new languages hoping to find the same elegance, but it seems that such simplicity is just not appreciated (I think lisp is one of the few that does - and it’s a cousin of Smalltalk). Finally, it’s just a joyful language, and so fun. It makes me smile just to write this. And when I read about how the community continues to strive make it even simpler - I punch the air. If you haven’t tried it, I encourage you to dip a toe in the water. Even if you use other things, we all seem to find that we just come back to Smalltalk as it’s so deceptively addictive. Tim > On 14 Jan 2023, at 08:01, mayur...@kathe.in via Pharo-users > <pharo-users@lists.pharo.org> wrote: > > Hello, > > This isn't a mail intended to troll this community. > > I am genuinely curious about what would be the type of use cases which would > be exemplary for Pharo? > > Now-a-days, anything one could have accomplished solely with Smalltalk (and > hence Pharo) can be accomplished with a number of modern programming > languages and their associated frameworks, e.g. Google's Dart with Flutter, > Apple Swift with SwiftUI, Microsoft's C# with WinUI. > And such languages and their associated frameworks are built from the > ground-up for a particular platform, while Pharo does not have any such > targets, which usually renders graphical applications built using Pharo to > "look like" aliens. > > What does stand-out regarding Smalltalk (and hence Pharo) is the superior > developer experience furnished as a result of the true object system combined > with a full graphical environment. > In addition to that, Pharo, specifically, provides advanced tools like Git > integration, etc. > > But, are these things all that there are to be considered enough for > highlighting the full inherent power of Pharo? > > Again, apologies if anyone found the subject line as well as the message body > to be troll-ish. That has not been the intent. > > Kind regards, > > ~Mayuresh