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, mayuresh@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