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

Reply via email to