is both the programming language and the environment it runs in. The language syntax is a bit different from c-like languages. For example, you call a method without using the . character, you just leave a space character and then type in the name of the method that you are trying to call.

For example, in Java you would write aPerson.getHeight() while in Pharo it’s aPerson height. There is no get/set naming convention for getters and setters like in Java because you can’t really access the fields of an object directly.

Code blocks are between [] instead of {} but they are also objects and can be passed around as parameters and executed.

Statements end with . instead of ; and you return with ^ instead of return.

The syntax is a bit “weird” but simple and elegant.

Here comes the shocking part

Pharo is a purely object oriented language. This means that everything is made up of objects, even your code. Think about that for a second. Source code is made up of objects. In most other languages you store your code in files. Not here. Here, everything is an object. Even the editor that you use to edit your classes and methods which are objects that live in memory. Let that sink in.

Got it? Ok.

How do you save your work? You serialize the entire state of Pharo as an image file. Sort of like a Java heap dump.

How do you run a program written in Pharo? You run a Pharo image with the Pharo VM. Yes, there is a Pharo VM for your OS and the images you run with it contain only code, so they are OS independent. Nothing extraordinary here.

How do you collaborate? There is a git client, obviously :).


I will add a comments section in the next couple of days so you can ask questions or point out if I said something stupid.