18 comments

[ 0.31 ms ] story [ 32.8 ms ] thread
Just like learning Lisp will make you rethink programming languages, and learning Erlang will make you understand the true power of concurrency: learning Smalltalk will make you understand what "object oriented" actually means.

I haven't used Squeak since college but I'm glad it was part of the cirriculum.

Btw, almost all of Javascript's good parts come from Smalltalk.

And after all these years, still no fixes for high-DPI displays. The UI is still pixely and slow. Perhaps I should take Fable and try myself, this was the only bug I cared about and it is not solved after 10 years at least.
yeah, after all these years, they are waiting for your contribution. you really should go at it with Fable.
What are the best books/papers/blog posts to learn about Morphic's architecture? I'm not a user of any Smalltalk implementation but I'd like to learn more as the Smalltalk approach to UI is very interesting.
Can I suggest you take a look at Cuis Smalltalk (a simplified fork from squeak), and any of the talks given by Juan Vuletich (main author of cuis). In Cuis, Juan took morphic back to basics and updated it heavily. Now submorphs use relative geometry (not absolute), and everything is hardware accelerated vector graphics - EVEN THE FONTS.

Seriously, reading Unicode enhanced code in a 45 degree tilted editor window, while zooming in and out just for kicks (all of this can be done by manipulating the morph with its halo's menu) just to see how crisp everything is - thats FUN!

Also, try taking apart the standard system browser (4 panes + editor), rearrange everything as per your tastes (by drag & drop), and ... everything still works

How does this compare to Glamorous Toolkit[1]?

[1] https://gtoolkit.com/

What do you use it for?
I used it to explore data since it has built in support for various data formats and easily made visualizations, but I haven’t used it in a few years because I thought it was using too much RAM for what it gave me (around 1GB to start with).
one thing I love about Smalltalk is being able to inspect the code as it's running. Especially from the GUI. You can just be like Oh I wonder where the code for this button is from, inspect it, and it takes you right to the code. It's a shame we can't have this level of introspection without negative performance implications.
I just downloaded on Windows 11. My antivirus (Symantec Endpoint Protection) did not like it and erased the executable. I reinstalled and got it working.

Question? Does this work with Etoys? If so, how? I tried following various directions online without success. Thanks!

[flagged]
Congrats to the Squeak 6.1 team! I was an early contributor to Squeak from when Alan Kay's group was at Apple (I see that SameGame, the first game implemented in Morphic is still in the image), and still enjoy following the progress of Squeak and all of its spinoffs.
I remember enjoying Smalltalk.
Smalltalk's been enormously influential and successful... There is however a better way of understanding objects. Namely, "objects" are [defined to be] processes, "messages" are asynchronous, and Smalltalk's message invocations are indirect function calls. I know what you're thinking: "But no OO PL works like that. You won't understand anything that way." That's true: this suggested reframing won't help you understand any popular OO language, because they use indirect function calls instead of asynchronous message passing.

The indirect function calls of Smalltalk don't transform the semantics of programming. It's still data structures and algorithms. You can, if you adopt Kay's ideas wholesale, write programs where individual letters in a text typeset themselves (as Kay describes). I'm arguing that that model of programming is more accurately articulated in an async message passing frame.

Smalltalk's function calls do have an important benefit, which is polysemy. I'm stealing that word and not using it quite right. The benefit is you can define ideas that are not algorithmic. You can for instance define many methods for LOOKUP(key,table) that works for many data structures, and now you've defined not a recipe, but an idea that transcends recipes. Any recipe R that uses LOOKUP automatically works with all the data structures that LOOKUP works with, even though R itself may be a specific recipe for a specific data structure of its own.

That's a tremendous benefit, and it's worth using OO features to take advantage. But even so you're still living in an algorithms and data structures world. Polysemy is a linguistic feature and does not cause a mechanical or paradigmatic change.

Asynchronous messaging however does change how algorithms are designed, in much the way that Alan Kay anticipated, and also in a way that models real world entities in direct fashion. But everyone understands this part already.

So how is this a "better" way of thinking about objects? 1) It emphasizes the advantage of polysemy, which in my experience OO pedagogy tends to overlook, even though most everyone utilizes OO partly for that purpose; 2) It explains why OO programs remain organized as algorithms and data structures; and 3) it welcomes combining "object" techniques with A & DS techniques in the same program or function or even the same line of code. They are completely compatible, in the sense that the language or library or database is not "OO" or "non-OO".

I've been tempted to learn this so I could port my Pips solver to it, solely because PipSqueak would be a good name.
I used to love using Squeak but moved to Pharo to get better high resolution display support. I should try the Squeak 6.1 release.
Can someone give me some advice on what to use as a beginner? Pharo? Squeak? Common Lisp?

I just want to understand how this whole thing works and see how I can use it.