Pharo 14
Posted by xkriva11 3 days ago
Comments
Comment by thelazydogsback 2 days ago
One thing that AI programming has done is made me care much less what programming language is being used. This is slightly regrettable, but for the most part very freeing, as I don't need to worry about what language is easier for me (as a human) to use for a particular problem, or make me inclined to use one of my "pet" programming languages over one that may be a better fit for more pedestrian reasons.
Comment by cardanome 2 days ago
Humans haven't given up playing chess just because computers are able to do it better, there is still a point in recreational programming.
I am fondly remembering actually using Smalltalk in production for a small web project. I think I used Squeak with the Seaside framework. The image based workflow made deploying it surprisingly easy.
Comment by thelazydogsback 2 days ago
Comment by black_knight 2 days ago
Comment by xhevahir 2 days ago
Comment by pjmlp 2 days ago
With a very big difference, at least I could backup Smalltalk and Lisp images.
Comment by clx75 2 days ago
Or at least this works wonderfully in Clojure via the nREPL.
Comment by e12e 2 days ago
Comment by corroclaro 2 days ago
Dark times.
Comment by roadside_picnic 2 days ago
I recently did a major move and had to restructure my bookshelf pretty dramatically. The only programming books I kept out of storage where the Common Lisp and Prolog ones. Spending time learning a language that doesn't directly impact how you think about computation itself seems to be more of misuse of time (of course really, when programming truly for fun it shouldn't matter one way or the other).
Comment by mattarm 1 day ago
One thing that AI programming has done is made me care more about how well the AI can handle a language than my own facility with it. I wouldn't be surprised if programming languages begin to tilt toward being easier for agents to work with, while still remaining readable to people -- whatever that ends up meaning.
I've found most agents can work effectively and quickly with Go code, I think mainly due to the strong focus on simplicity in the language and tooling. Something like Pharo is a bit like the opposite end of the spectrum.
Comment by linsomniac 2 days ago
I'm right there with you. I really like programming in Python, the language. Now that I'm not writing much if any code, the rough edges in building and deployment have come to the forefront. Even "uvx run" has become a sticky wicket (I have some machines that don't have Internet access).
Comment by flavio81 2 days ago
Comment by zerr 2 days ago
Comment by jdboyd 2 days ago
Comment by emigre 2 days ago
Comment by pjmlp 2 days ago
Eiffel was also the very first OOP language to introduce non nullable references, which I bet many folks in HN would attribute to something more trendy.
Comment by sourdecor 2 days ago
Comment by pjmlp 2 days ago
Especially if their only understanding of programming is "the way UNIX does it".
Comment by creichenbach 2 days ago
Comment by squidsoup 2 days ago
Comment by jan_m_savage 2 days ago
Comment by __sy__ 2 days ago
Comment by jan_m_savage 2 days ago
The comment mocking Pharo/Smalltalk could have been written by someone who probably writes in one of the Blub languages that are extremely popular. LOL.
Comment by adius 2 days ago
Comment by edragoev 2 days ago
Comment by ElevenLathe 2 days ago
Comment by whacked_new 2 days ago
Ironically after watching glamorous toolkit videos on youtube, I was recommended a talk by Geoffrey Litt about dynamic documents [2] and at the end of his talk I learned about bb [3], which has much better agent integration compared to GT. Like @thelazydogsback said, with agents, the programming language matters less.
Comment by pmkary 2 days ago
I think Girba's really amazing idea of "language = ui = software = data" has a huge win in terms of AI that is not used anywhere else (maybe only in Chris Granger's Eve), but to work with data and build live on it, is something way better than BB.
Comment by whacked_new 2 days ago
But in practicality, at least at this point, bb wins out by sheer expansiveness of ecosystem. I was working on a mishmash of an editor interface that combined obsidian with heptabase, directly in GT. It kind of worked. And the amazing thing is, everything has just a single representation: window positions displayed as text automatically have 2 way bindings across widgets, because they are the same data. But even with agents doing everything, 2 things creep up.
First is in JS/TS, all these binding problems are solved 1000x already. You can fake shared memory with callbacks and the agent won't lose track. In GT you move the cursor around, and have to decide at what point do you convert a widget representation to source representation, and when to restore the widget: is it a delay? is it after changing lines? is it after you move off the text? before or after the whitespace? There's a package for that somewhere in npm that answered all these questions, and it has tables, and it's performant. It doesn't do the 2% stuff that GT does using its magical shared memory representation (which also makes TS->smalltalk porting not straightforward), but you can still tape over it with sheer optimized code.
The second thing is that GT got really slow with all the data structure re-interpreting and rerendering. As "dirty" as bb is in reloading dynamic code, the runtimes are so optimized, I wanted the markdown nodes to be GPU-accelerated in bb, and it turns out they already were.
Comment by yoz 2 days ago
I've been using it on and off for a while, but never got around to doing any major customisation mainly because I hate reinventing wheels (and also I was busy with other things). But I now am looking for something like a cross between Warp and Zed's Delta (which is a very nice design), and bb might be able to give it to me.
EDIT: OK, the plugin marketplace is much more browsable than the last time I looked. It'd be lovely to have a gallery where people can show off their own configs. Maybe I should make one...
Comment by whacked_new 2 days ago
Then I threw actually useful things at it: find this directory of pdf scans, and create an interface where I can browse the files, preview them, and query an lmstudio server, and auto-rename the pdf based on the content.
Another is to ssh to a remote machine that has a particular file organization structure, and give me a preview gallery.
Nothing is particularly complex, but I couldn't be bothered to making that myself. It's also something that I would've used in emacs (the preview function is like dired-preview-mode in emacs), but a graphical interface would perform better.
Comment by pmkary 2 days ago
Ironically enough, I was thinking about the same thing in the morning of the day I replied to you, that gives the amount of data JS provides in the runtime, do we really need Smalltalk for a live system? I agree with you fully.
I guess something about me doesn't want to accept that BB can be a superior GT!
Comment by slim 2 days ago
Comment by pjmlp 2 days ago
Comment by Smalltalker-80 2 days ago
Comment by HighGoldstein 1 day ago
Is this actually an issue? I was under the impression that the conclusion was that LLMs will invariably be terrible at writing good, working code (since their training sets are 90% garbage produced by humans), hence why agentic development now is heavy on verification tools and other software that can signal to the LLM whether the code works and has any code smells. Also why AI agents nowadays seem to write and execute scripts for a lot of tasks instead of spitting code directly. Hence, the volume of training data shouldn't be as relevant as it used to be.
Comment by flavio81 2 days ago
This should be a BIG benefit for agent-driven development, but sadly it seems that few people is taking advantage of it.
Comment by kvgr 2 days ago
Sounds pretty cool. Never heard about Pharo before, but i will try it in spare time.
Comment by xkriva11 2 days ago
Comment by dharmatech 2 days ago
https://github.com/gavr123456789/Niva
An implementation of Boids for Niva:
Comment by pjmlp 2 days ago
Comment by gavr_sas2 9 hours ago
Basically its Receiver key: Type = [body] or Receiver key(localName): Type
Comment by logancbrown 2 days ago
Comment by phforms 2 days ago
Comment by ramesh31 2 days ago
Do the advances mean anything though? Alan Kay is a personal hero of mine, I love the aesthetic of Smalltalk, and the dream-that-was once upon a time of such a system was a real missed opportunity for the evolution of programming environments. But is it anything more than a neat hobby at this point?
Comment by logancbrown 2 days ago
It effectively already is. It may end up in the same domain as Haiku OS, Plant 9, or Squeak, but they are all still interesting domains of research.
Comment by lproven 2 days ago
Let's hope 9front is a seed, yet to fully germinate.
Comment by rfgplk 2 days ago
The opposite. With LLMs you can now pick up any one of these obscure language and write a full blown AAA game engine in them. Or a database. Or a web framework. Or... anything you set your mind to. The language no longer matters. btw LLMs are exceptionally good at Smalltalk/Haskell/Perl/FORTRAN and other old/uncommon languages.
Comment by sanderjd 2 days ago
Comment by red_candle_wax 2 days ago
When was it anything else? The 80s? I've can count the number of Smalltalk jobs I've seen in my career on my hand (but I have seen them)
Comment by juancn 2 days ago
(Smalltalk is a religion, I will die on this hill!)
Comment by ModernMech 2 days ago
Comment by anthk 2 days ago
https://github.com/pharo-pulsar/pulsar
Almost "Pharo for Gnome".
Comment by __rito__ 2 days ago
Clicking on this page, one finds:
> What is Pharo? > > Pharo is a pure object-oriented programming language and a powerful environment focused on simplicity and immediate feedback.
I really appreciate these one liner introductions on any project.
Comment by musicale 2 days ago
> A dynamic, pure, reflective object-oriented programming language in the tradition of Smalltalk
Why not call it a modern Smalltalk, which seems to be what it is?
Smalltalk is a great language and its ecosystem deserves to grow.
Comment by d-us-vb 1 day ago
If you say "Pharo is a Smalltalk" then you might get some of the religious elite come and claim "Thou must change this aspect of the system! For it is in violation of the law of Smalltalk as handed down to our forefathers in Smalltalk 80". Pharo is its own system, heavily inspired by Smalltalk to the extent that non-language lawyers look at it and say "it's Smalltalk".
People argue about whether Janet or Clojure are lisps. Some people say that only Common Lisp is Lisp. Some include Scheme as well. But the unqualified "Lisp" usually means Common Lisp when referring to an actual language with an actual specification that you can find an actual compiler to create binaries with. Pharo is a Smalltalk in a similar way to how Scheme is a Lisp. Different enough that saying "Scheme" means something different from "Lisp" to everyone who knows enough to know what you're talking about.
Comment by musicale 8 hours ago
That is a pretty good argument for calling it "Pharo Smalltalk" or something, which would be accurate and descriptive.
Comment by bmacho 2 days ago
It could serve as the engine for new, fun, interactive websites!
Comment by d-us-vb 2 days ago
Comment by vfclists 2 days ago
Comment by adius 2 days ago
Comment by e12e 2 days ago
Comment by em-bee 2 days ago
https://en.wikipedia.org/wiki/Amber_Smalltalk
or more like https://squeak.js.org/ ?
Comment by bmacho 2 days ago
I don't know how to start Amber in the browser and couldn't find demos.
Comment by bmacho 1 day ago
Why is this thing so fast? I type 3 + 4, hit alt+p and the result appears instantly! (Or the better question: why are all the other things so slow?) I submitted it to <https://news.ycombinator.com/item?id=50259214>!
Comment by jan_m_savage 2 days ago
Someone asked for updated mooc--well since that is not there yet, the next best thing is the updated books both available for free (one needs to be compiled from the github repo (2026 version, Sept).
Comment by wonks 2 days ago
Comment by phegler 2 days ago
Comment by andai 2 days ago
Comment by Qem 2 days ago
Comment by sczi 2 days ago
Comment by thealistra 2 days ago
Comment by xkriva11 2 days ago
Comment by measurablefunc 2 days ago
Comment by Kuyawa 2 days ago
Her answer, SmallTalk
Comment by argentier 2 days ago
Nothing found. Weird.
Comment by frou_dh 2 days ago
Comment by travisgriggs 2 days ago
At this point, I think it's flipped. The people that might be attracted to it would probably enjoy the retro hat tip. The various language wars have all been pointlessly adjudicated, and lost in time, first to the dominance/explosion of JavaScript only programmers, and now due to LLM generated code.
Learning Smalltalk, and practicing it heavily for 20 years was probably the single best thing I learned in programming during 35+ years. It helped me get very good at modelling things. I work in Swift/Kotlin/Elixir/C now days, and I've learned some great things from those systems as well. But how to build representations of real world data as well as structure concepts/relationships more virtual, hands down to Smalltalk (for me).
Comment by pjmlp 2 days ago
Not sure how it was seen from inside at Cincom, however having a couple of Smalltalk vendors quickly pivoting from Smalltalk into Java, to the point most IDEs and libraries that appeared where from Smalltalk origin, was what ended up killing all existing interest into keeping using Smalltalk products.
There was this language that Sun was pushing for free, with SDKs on cover CDs, alongside plenty of stuff coming from Smalltalk, why pay for expensive Smalltalk IDEs, seemed to be the opinion back then.
So we ended up with Java, .NET, Objective-C, as half way to the whole Smalltalk experience.
Comment by Qem 2 days ago
Comment by ModernMech 2 days ago
Comment by billfor 2 days ago
Comment by throwaway613746 2 days ago
Comment by tudorizer 2 days ago