4 ms·
Tangentially: I recently decided to give Pharo a try. I'm still pretty early on in it, but, so far, I've really been having fun. If you look at it the right wa
by mumblemumble 6y ago
Tangentially:
I recently decided to give Pharo a try. I'm still pretty early on in it, but, so far, I've really been having fun. If you look at it the right way, Smalltalk can almost be seen as more Clojure than Clojure. It's even more dynamic, and the live programming environment gives even tighter, more integrated feedback loops than REPL-driven development. Smalltalkers aren't exaggerating when they say you can literally program from inside the debugger.
A lot of familiar programming idioms from Clojure (and other functional languages) are present in Smalltalk, and have been for years. And, while objects in Smalltalk are nearly as dynamic as maps in Clojure, the fact that they're discrete, named entities makes it a lot easier to inspect and grok someone else's code.
It's not all perfect, of course. Some of the usual criticisms of Smalltalk are legitimate (though Pharo is making progress on addressing many of them), and I would like to see more of a culture of discipline around mutability. But, all in all, it's largely been a joy to learn.
- truculent 6y agoWhat are you writing with it? I've been wanting to give it a try too, but I'm unsure what kind of project is best suited.
- deleted 6y ago[deleted]
- mumblemumble 6y agoSorry it took me so long to answer, but I'm still learning it, so I was hoping someone else would pop in. My impression/hope is that this is another spot where Smalltalk is like lisp. As a clean language with a simple syntax and clean semantics, it seems like where it shines is malleability. It's a substrate on top of which you build a domain-specific language that's tailor-made to whatever problem domain you happen to be working in. There's https://github.com/pharo-open-documentation/awesome-pharo https://github.com/pharo-open-documentation/awesome-pharo
- dunefox 6y agoYou could have a look at https://adventofcode.com https://adventofcode.com. I've been solving every puzzle so far and it's a fun way to play around with a new language (at least for the first couple of days).
- bmitc 6y agoWhat is your process of learning it? Did you take the Pharo MOOC?
- mumblemumble 6y agoYep, I'm still working my way through the MOOC. It's quite well done. I would recommend even taking the time to listen to the parts that seem basic. The Smalltalk way of thinking about objects is different from how OOP is usually done in some subtle but important ways, so I'm finding it useful to take a "forget everything you know" approach. Somewhat amusingly, the process of learning Smalltalk in the evenings and then going back to Java during the day is going a long way toward helping me understand why Yegor Bugayenko seems so chronically exasperated.
- bmitc 6y agoThat's great to hear. It's been on my radar for a while, but I've not dove into yet. > I would recommend even taking the time to listen to the parts that seem basic. Thanks for that recommendation! This is my default style, although it's enabled by not knowing much anyway. Lol. Regarding your last point, this is my exact feeling knowing F# and Racket before being forced to use Python in some capacities.
- dunefox 6y agoI've solved the first few AoC puzzles with Common Lisp and while I'm not great at it, it's been a pleasure to use precisely due to the interactivity, restarts, introspection of the running program, etc.