4. What is it?
Language + Environment
Simple Language
Object-Oriented, Dynamic, Reflective
Explore + Change running systems
Live Programming
5. Pharo
100% MIT license
Pure object language
Great community of active doers (70
committers in Pharo 40)
Powerful
Elegant and fun to program
Living system under your fingers
Mac, Linux, Android, iOS, Windows
10. Pharo is a vehicule
Pharo is not at its end, just starting
Pharo is not our dream, it is what we have
But **every** single day we improve it
11. Enabler
“One of the things that drew me to do the Delay
refactoring, is simply that I could. That is, I was
amazed that I could dig so deep so easily, see a
path to improvement and effect change at a
fundamental level. Excepting complexities with
the Continuous Integration due to “changing the
wheels on the car at 100km/h” (and one slip), it
seems to have gone reasonably smoothly. That
sense of mastery is seductive.”
12. Enabler: Turtles all the way
A Bryant developed Seaside in Pharo ancestor
(while he knew ruby, python, scheme, C,
objective-C) because he could manipulate the
stack behind the back of developers. Seaside is
based on stack on-demand reification.
14. We want that **you** can make
money with Pharo. We want to be
able to invent solutions to existing
problems.
!
We want a powerful innovative
dynamic language where we can build
our future.
17. • Uni. of Buenos Aires • Uni. of Bern • Uni. of
Maroua • Uni. of Brussels • Ecole des Mines de
Douai • Uni. de Savoie • Ivan Franko Nat. Uni. of
Lviv • Czech Technical Uni. • CULS Prague
• Uni. of Quilmes • Uni. of La Plata • Northern
Michigan Uni. • Uni. Technologica Nacional
(UTN) • Uni. Catholic of Argentina • Uni. of Chile
• Uni. Policnica de Catalunya • Uni. de Bretagne
Occidentale • Uni. of Tomsk • Uni. of Fernhagen
• IT University of Copenhagen • Uni. Cat del
Sacro Cuore of Brescia
Pharo's Teachers
18.
19. Lafhis (AR)
Software Composition Group (CH)
CAR (FR)
RMOD (FR)
Ummisco (IRD)
Reveal (CH)
Lysic (FR)
Pleiad (CL)
CEA-List (FR)
Uqbar (AR)
CCMI-FIT(CZ)
Research Groups
21. Books
Pharo by example http://www.pharobyexample.org
translated to french, merci!
translated to spanish, gracias!
translated to japanese, ありがとう!
Deep into Pharo http://www.deepintopharo.org
Numerical Methods
https://github.com/SquareBracketAssociates/NumericalMethods/
releases
New books in preparation
Updated Pharo by Example
Entreprise Pharo
Fun with Pharo
25. Continuous API Testing
keep your services under control 24/7
Norbert Hartl norbert@2denker.de
www.2denker.de
26. eMCee is developed and deployed using pharo
- zinc
- seaside
- jquery
- magritte
- mongotalk
- magritte-mongo
- fuel
- metacello
mail@2denker.de
27.
28. • Entry Level Track & Trace Product
• Complements T3 Full Product
• One Page Javascript HTML5 / Ajax Client
• REST Back End in Pharo Smalltalk
• Gateways to multiple data providers
29. WEBDRUCK.CH
Web-To-Print Solution
• Design and create
individual printed
matter
• eShop with credit
card payment
• High quality PDF
output with Printing
Process integration
• Thousands of orders
for seven Swiss
printing companies
48. Less is more!
No constructors, no static methods, no operators
No type declaration, no primitive types,
No interfaces, no need for factory
No packages/private/protected modifiers
No parametrized types
No boxing/unboxing
Still powerful
49. Object model
Everything is an object instance of a class
!
Single inheritance
!
Public virtual methods
!
Protected field
50. The complete syntax
exampleWithNumber: x
“A method that illustrates every part of Smalltalk method syntax”
<menu>
| y |
true & false not & (nil isNil) ifFalse: [self halt].
y := self size + super size.
#($a #a ‘a’ 1 16rFF 2r1010101010101010101 1.0)
do: [ :each | Transcript
show: (each class name);
show: (each printString);
show: ‘ ‘].
^ x < y
52. The complete syntax
exampleWithNumber: x
“A method that illustrates every part of Smalltalk method syntax”
<menu>
| y |
true & false not & (nil isNil) ifFalse: [self halt].
y := self size + super size.
#($a #a ‘a’ 1 1.0)
do: [ :each | Transcript
show: (each class name);
show: (each printString);
show: ‘ ‘].
^ x < y