Skip to content


Repository files navigation

Build Status


Pharo by Example (vol 1) is a practical introduction for Pharo, a Smalltalk-inspired programming language, IDE and live coding enviroment. This book is an updated version of Pharo By Example for Pharo 1.4.

This version focuses on the latest stable version of Pharo (Pharo 5.0, at the time of writing). The most recent version is Pharo by Example 9 available at

You can find more info and documentation about Pharo at

Latest Builds

  • Individual chapters can also be viewed online or be downloaded in pdf format in the following section:

Chapter Progress

Chapter Status Latest Link reference
1 - Preface Revised, copyedited html pdf
2 - Pharo Tour Revised, copyedited html pdf Chapter *: A Quick Tour of Pharo>../PharoTour/PharoTour.pillar@cha:tour*
3 - A First Application Revised, copyedited html pdf Chapter *: A First Application>../FirstApplication/FirstApplicatioin.pier@cha:firstApp*
4- Syntax in a Nutshell Revised, copyedited html pdf Chapter *: Syntax in a Nutshell>../SyntaxNutshell/SyntaxNutshell.pillar@cha:syntax*
5 - Understanding Messages Revised, copyedited html pdf Chapter *: Understanding Message Syntax>../UnderstandingMessage/UnderstandingMessage.pillar@cha:messages*
6 - The Pharo Object Model Revised, copyedited html pdf Chapter *: The Pharo Object Model>../PharoObjectModel/PharoObjectModel.pier@cha:model*
7 - Environment Revised, copyedited html pdf Chapter *: The Pharo Environment>../Environment/Environment.pillar@cha:env*
8 - Sharing Code and Source Control Revised, copyedited html pdf Chapter *: Sharing Code and Source Control>./SharingCode/SharingCode.pillar@cha:sharingCode*
9 - SUnit Revised, copyedited html pdf Chapter *: SUnit>../SUnit/SUnit.pillar@cha:sunit*
10 - Basic Classes Revised, copyedited html pdf Chapter *: Basic Classes>../BasicClasses/BasicClasses.pier@cha:basicClasses*
11 - Collections Revised, copyedited html pdf Chapter *: Collections>../Collections/Collections.pier@cha:collections*
12 - Streams Revised, copyedited html pdf Chapter *: Streams>../Streams/Streams.pillar@cha:streams*
13 - Morphic Revised, copyedited html pdf Chapter *: Morphic>../Morphic/Morphic.pier@cha:morphic*
14 - Seaside By Example Needs revision html pdf Chapter *: Seaside By Example>../Seaside/Seaside.pier@cha:seaside*
15 - Classes and Metaclasses Revised, copyedited html pdf Chapter *: Classes and Metaclasses>../Metaclasses/Metaclasses.pillar@cha:metaclasses*
16 - Reflection Needs revision html pdf Chapter *: Reflection>../Reflexion/Reflexion.pier@cha:reflection*
17 - Regular Expressions in Pharo Needs revision html pdf Chapter *: Regular Expressions in Pharo>../Regex/Regex.pier@cha:regex*

Contributing to Updated Pharo By Example (vol 1)

This book follows the fork-and-pull GitHub workflow for contributions:

  1. Fork the repository

  2. For each modification, create a quick topic branch named in the form of...

    • initials_ChapterName_my_topic_description

    example: git checkout -b dz_PharoTour_update_screen_snapshots

  3. Make commits to that branch. When you're ready, make a Pull Request

  4. The request will receive comments/corrections, and will be merged into the main repo.

More info about contributing to this book (including Pillar syntax, setting up LaTeX, etc) can be found in the file.

Please send any comments, suggestions, or questions to the pharo-dev mailing list (see also the Get Help section of

Style Guide

This book is written in Pillar markup. If you are not familiar with it please check the pillar-documentation. See also:


Images (screenshots and diagrams) use Pillar image syntax:

+Image caption>file://figures/filename.png|width=80|label=fig:label+

For example:

+A stream positioned at its beginning.>file://figures/abcde.png|width=100|label=fig:abcde+
  • The width parameter is required (percentage of the screen).
  • Place the files in the figures directory of the chapter they are in.
  • The label should begin with fig:
  • When taking screenshots (PNG format), please compress them (you can use TinyPNG for easy and lossless compression)

To reference an image: Figure *@fig:abcde* (renders to Figure 3.8, for example).

Scripts and Code Blocks

For scripts, method definitions and other code blocks:

[[[language=smalltalk|caption=Hello World in a Transcript|label=src:helloWorld
	Transcript show: 'hello world'; cr.

Note that the label starts with src:.

To reference code blocks, use Script *@scr:helloWorld* (similar to Figures).

Chapter and Section Reference Links

Whenever you refer to other chapters of the book, please use the Pillar internal link syntax and the chapter name. (The cha: in the id is to denote that it's a chapter, to differentiate from a section id.) For example:

Chapter *: A Quick Tour of Pharo>../PharoTour/PharoTour.pillar@cha:tour*

A list of chapter ref link code is provided, to easily copy and paste, in the Chapter Progress / table of contents above.

General Style Guidelines

Please keep in mind the following:

  • When possible, hard-wrap lines at 80 characters (e.g. Meta-Q in Emacs, Cmd-Alt-Q in Atom). This is a common open-source documentation convention, and helps with viewing GitHub-generated diffs. However, due to Pillar limitations, ordered and unordered list elements must be on a single line to be correctly parsed. Those can be left un-wrapped.
  • Only one space between sentences.
  • Avoid periods in section titles. (For example, this section is titled "Style Guide" and not "Style Guide.")
  • All inline code mentions (objects, messages, variables, packages) should use the Pillar monospace notation: ==Object==.


This book is licensed under a Creative Commons Attribution-ShareAlike 3.0 license.

Other Books

Deep Into Pharo (Pharo By Example vol 2)

Deep into Pharo (source code) is the second volume of a series of books covering Pharo. Whereas the first volume is intended for newcomers, this second volume covers deeper topics.

Enterprise Pharo: A Web Perspective

Enterprise Pharo: A Web Perspective (latest PDF, source code) is the third volume of the series. It covers enterprise libraries and frameworks, and in particular those useful for doing web development.