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 4, at the time of writing).
You can find more info and documentation about Pharo at Pharo.org.
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 | Copyedited, Needs revision | html pdf | Chapter *: The Pharo Environment>../Environment/Environment.pillar@cha:env* |
8 - Sharing Code and Source Control | Copyedited, Needs revision | html pdf | Chapter *: Sharing Code and Source Control>./SharingCode/SharingCode.pillarr@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 | html pdf | Chapter *: Streams>../Streams/Streams.pillar@cha:streams* |
13 - Morphic | Needs revision | 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 | 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* |
This book follows the fork-and-pull GitHub workflow for contributions:
-
Fork the repository
-
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
-
Make commits to that branch. When you're ready, make a Pull Request
-
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 CONTRIBUTING.md file.
Please send any comments, suggestions, or questions to the pharo-dev mailing list (see also the Get Help section of Pharo.org).
This book is written in Pillar markup. If you are not familiar with it please check the pillar-documentation. See also:
- Documenting your Project with Pillar chapter of Enterprise Pharo
- Pillar Syntax Cheat Sheet
- CONTRIBUTING.md
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).
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).
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.
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==
.
The latest versions of Updated Pharo by Example can be found at the following sites:
- Jenkins
Latest PDF: UpdatedPharoByExample.pdf. All Chapters: UpdatedPharoByExample build artifacts
- Travis
(https://travis-ci.org/SquareBracketAssociates/UpdatedPharoByExample)
This book is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 license.
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 (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.