5. Talk Roadmap
• Pharo: an open-source project
• Get the feel
• Model/Syntax
• Coding with the audience
• Web Development in Pharo
• Ongoing works
• Wrap-up
6. http://www.pharo.org
Pure object language
Great community of active doers
Powerful and full access
Elegant and fun to program
Living system under your fingers
100% MIT inside
Mac, Linuxes, Windows, iOS
12. 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.
15. • 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
16.
17. 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
19. 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
23. Continuous API Testing
keep your services under control 24/7
Norbert Hartl norbert@2denker.de
www.2denker.de
24. eMCee is developed and deployed using pharo
- zinc
- seaside
- jquery
- magritte
- mongotalk
- magritte-mongo
- fuel
- metacello
mail@2denker.de
25.
26. • 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
27. 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
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 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
53. 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
54. A Pure OO World
Only objects!
mouse, booleans, arrays, numbers, strings, windows, scrollbars, canvas, files, trees, compilers, sound, url, socket, fonts, text,
collections, stack, shortcut, streams, …
68. Summary
• Everything is an object
• Single inheritance, public methods, protected attributes
• One single model
• Classes are simply objects too
• A class is instance of another class
• One unique method lookup, look in the class of the
receiver
77. Blocks: Closures all the way
• Anonymous method
• Passed as method argument or stored
• Functions
fct(x)= x*x+3, fct(2).
!
fct :=[:x| x * x + 3].
fct value: 2
!
78. Every control structure is a message
4 timesRepeat: [Beeper beep]
max: aNumber!
! ^ self < aNumber !
! ! ifTrue: [aNumber] !
! ! ifFalse: [self]
79. <= aPoint !
! "Answer whether the receiver is neither!
! below nor to the right of aPoint."!
!
! ^ x <= aPoint x and: [y <= aPoint y]
Method name Argument Comment
Return Binary message
Keyword messageInstance variable
Block
(2@3) <= (5@6) true
125. On going work
• Working bootstrap for pharo reflective core
• Customized images (11k)
• First class variables for real
• associations
• data flow model
126. Glimpse on going work
• Package catalog
• Git (the right subset)
• OSWindow (SDL)
• Multi touch support
• Full vector graphics
127. VM
• Spur: new memory manager (got *4 speed up)
• ephemerons, pinned object, fragmented memory, 64
bits
• Sista: next level JIT
• inliner, constant propagation…
• Unified FFI + threaded
• one syntax several back-ends