ThoughtStorms Wiki

Considered to be the modern version of SmallTalk

Open-source, derived from SqueakLanguage

Hosts GlamorousToolkit

Quora Answer : Have you tried Pharo? What kind of project did you make?

Jul 2, 2019

So far, no.

I want to play with it for something.

Smalltalk was my first real love in terms of programming languages. I used it in my final year project at university in the late 80s.

And I used it a bit at work after that.

I'd kind of like to get back into it again.

But I am very rusty. Frankly, when I open Pharo I simply don't know what to click on or what to do to get started playing with it. I basically need to go and RTFM. But I never really get the time for that.

This is one reason I complain about Smalltalk's (including Pharo's) stand-offishness and not being in the right place.

There are a bunch of projects I want to do right now. That I am willing to put some time into manual-reading in order to get up to speed on. But none of them are projects that I want to run in the Pharo environment.

I want some of them running on a server and in the browser as rich-web applications. I know Smalltalk runs in the browser. But only in an emulation of the Smalltalk environment. I don't want an emulation of the whole Smalltalk desktop. I just want to have an HTML / CSS structure and a bit of scripting behind it to animate it. Given those requirements, I'll use ClojureScript. Another great and fantastically powerful language, that WILL just run in the browser in the way I want. (And wraps the whole of React in a convenient way so I don't have to think about the horrors of Javascript)

Other software I want to run for music, interacting with my existing DAW software and VCVRack etc. I'm just having to bite-the-bullet and write C++ for that.

Others are interactive graphics toys I write in Processing. If someone would just clone the Processing API and way of working inside Smalltalk, and have it pump out graphics to a separate OpenGL window ... that would be awesome. And something I could plausibly switch too. (As long as performance was good enough.) But until that time, I'm stuck writing them in Java (a language I very much dislike, especially when I contemplate Smalltalk)

Smalltalk is an elusive utopia. You know it's the best possible place to be. But you can never quite get there. Or rather it's never there, where you want your program to be.

If someone ... (and I'm thinking of people like Richard Kenneth Eng and Peter Fisk ) could just solve THAT problem, then they would win me (and many, many others) over to Pharo or similar.

What problem was the Pharo programming language designed to solve; since most programming languages are Turing complete, why use Pharo?

May 15, 2019

Pharo is a modern version of Smalltalk.

The most important thing about Smalltalk is that it's a radically different idea of a computing environment and programming language than most languages you are used to.

The Smalltalk language is tightly coupled with the environment in a way which is unlike most programming languages and environments in use today.

Firstly pretty much everything in a Smalltalk environment is made in Smalltalk. There's a tiny core which isn't. (It's actually a Smalltalk-like language which compiles to machine code) But everything else is.

On your computer today you may have a window system largely written in C, with some C++ applications, some Java applications. A browser showing web-pages written in Javascript. Etc. A kind of Tower of Babel of incompatible and inconsistent software. Few people could understand most of what's going on.

Instead, in Smalltalk, everything is written in one language : Smalltalk. Secondly you don't really have separate "programs" or "applications". Instead, the system grows as one big application that people keep adding extra functionality to.

You want a text-editor? Someone already added that to the environment. You now want a spreadsheet editor? Someone can add that too. And they can reuse as much of the existing code that is already in the text editor as is useful to them.

Why? Because all that code is part of the Smalltalk system. It's all visible and reusable. A bit like how web-browsers have a "view source" button so you can look at the code that makes up a web-page. Everything in the Smalltalk environment has a "View Source" button so you can see how it works. Everything has the equivalent of a "debugger" so you can look inside a running instance of an object and see the current state of the variables inside it. You can take anything that you like in your Smalltalk environment, open it up, study it, learn from it, reuse the code from it, adapt it to your own requirements.

There's no barrier between one application and another. You can quickly write new functionality anywhere that can call existing functionality anywhere else. Want to use your new spreadsheet interface to look at a table in a database. You can just plug some of the spreadsheet objects into the database objects. Want to output a database query as a graph and then run that through some image processing filters? All this functionality is there as classes within the whole system, so you just have to write a small bit of glue code to tie them together.

This is what Smalltalk (and therefore Pharo) is. Not a language to write programs, but an ideal of a whole "live" interactive environment.

Pharo is probably the best way to get the experience of that kind of environment today. That's its "niche".