A clean, innovative, open-source Smalltalk


  http://www.pharo-project.org
Roadmap
Short intro
User community
Look at syntax and runtime
Coding Session
Future
In a nutshell
Pharo = language + IDE + update mechanism
Pure object-oriented programming language
Dynamically typed and tr...
Pharo?
 A progressive, open-source Smalltalk platform
               for professional use.




Stable
Bugs fixed fast
But i...
Pier
Pier
iPhone
Smalltalk with OO-Database

     Pharo is the IDE
Companies
netstyle.ch        GemStone
cmsbox.com         SW GmbH
Pinesoft           2Denker
Smallworks         ...
Agiliti...
Universities
Annecy            Bruxelles
Lugano            ...
Bern
Douai
Lille
Santiago
Getting started
Model
Tools
Syntax
A Simple and Pure
       Model
Everything is an object (instance of a class)
Public methods
Protected attributes
Single in...
Everything happens by sending messages to
objects

	 1000 factorial / 999 factorial

 (Smalltalk isCool) ifTrue: [‘Yeahh’]...
Running Pharo
Do it, print it




 You can evaluate
  any expression
    anywhere
     in Pharo
Standard development tools
Standard development tools
Debugger, explorer, inspector
Syntax in a nutshell
3 kinds of messages


  Unary messages      5 factorial
                      Transcript cr


  Binary messages         3 ...
From Java to Smalltalk
postman.send(mail,recipient);
Removing
postman.send(mail,recipient);
Removing unnecessary
postman send mail recipient
But without losing
    information
postman send mail to recipient
postman send: mail to: recipient
   postman.send(mail,recipient);
Precedence
(Msg) > Unary > Binary > Keywords	

	

from left to right
No mathematical precedence
2 + 3 squared




                28
2 + 3 squared
>2+9




                29
2 + 3 squared
>2+9
> 11




                30
Color gray - Color white = Color black




                      31
Color gray - Color white = Color black




                      32
Color gray - Color white = Color black
> aColor = Color black




                      33
Color gray - Color white = Color black
> aColor = Color black
> true




                      34
Statement and cascades



        Temporary variables
                               Statement

             | p pen |
   ...
Block Closures: aka Function
fct(x) = x * x + x

|fct|
fct:= [:x | x * x + x].




                          36
Function Application
fct (2) = 6
fct (20) = 420

fct value: 2
>6
fct value: 20
> 420
[:x | x * x + x] value: 2
>6
[:x | x ...
#(15 10 19 68) do:
    [:i | Transcript show: i ; cr ]




                         38
#(15 10 19 68) do:
    [ :i | Transcript show: i ; cr ]




                         39
1 to: 100 do:
    [ :i | Transcript show: i ; space]




                         40
1 to: 100 do:
    [ :i | Transcript show: i ; space]




                         41
1 to: 100 by: 3 do:
    [ :i | Transcript show: i ; space]




                         42
1 to: 100 by: 3 do:
    [ :i | Transcript show: i ; space]




                         43
A typical method in Point

  Method name      Argument               Comment


     <= aPoint
     ! "Answer whether the r...
Creating classes

 Send a message to a class (!)



    Number subclass: #Complex
    ! instanceVariableNames: 'real imagi...
Past....
      Started with Squeak Smallltalk

+ Major Cleanups (MVC, eToys)
+ New UI Look / TrueType
+ Tools
+ Block Clos...
Update ~1200 Bug-reports closed

        496 Updates (1.0)
        61 (1.1 unstable)

Release Candidate: October 2009 ;)
Future
...cleaner

started to run SmallLint... and fix
...smaller

deployment image is 7 MB
...faster
What we dream about
   A flexible infrastructure to be able to
               reinvent itself

                            ...
Everybody can help
   Reporting bugs
   Confirming bugs
   Writing tests
   Writing examples
   Writing comments
   Simple ...
Process
       FIX/
 ENHANCEMENT           Discussed on
 In PharoInbox or                     Discussed
    Changesets    ...
Pharo Sprints
May 2008 Bern
July 2009 Bern
October 2009 Lille
November 2009 Buenos Aires




      more in the future...
Books




                                                                                           by example
          ...
Thanks Hans Beck
                            Matthew Fulmer
                            Hilaire Fernandes
                ...
Join Us!

Creating good energy, software quality,
        learning and having fun

   http://pharo-project.org
Talk: Pharo at JM2L 2009
Upcoming SlideShare
Loading in...5
×

Talk: Pharo at JM2L 2009

1,276

Published on

A presentation of Pharo at J2ML 2009 in Sophia Antipolis, France.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,276
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Talk: Pharo at JM2L 2009

  1. 1. A clean, innovative, open-source Smalltalk http://www.pharo-project.org
  2. 2. Roadmap Short intro User community Look at syntax and runtime Coding Session Future
  3. 3. In a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open and flexible environment Platform for Seaside and Aida/Web web frameworks
  4. 4. Pharo? A progressive, open-source Smalltalk platform for professional use. Stable Bugs fixed fast But innovative
  5. 5. Pier
  6. 6. Pier
  7. 7. iPhone
  8. 8. Smalltalk with OO-Database Pharo is the IDE
  9. 9. Companies netstyle.ch GemStone cmsbox.com SW GmbH Pinesoft 2Denker Smallworks ... Agilitic.be Inceptive.be
  10. 10. Universities Annecy Bruxelles Lugano ... Bern Douai Lille Santiago
  11. 11. Getting started Model Tools Syntax
  12. 12. A Simple and Pure Model Everything is an object (instance of a class) Public methods Protected attributes Single inheritance
  13. 13. Everything happens by sending messages to objects 1000 factorial / 999 factorial (Smalltalk isCool) ifTrue: [‘Yeahh’] #(1 -2 3) collect: [ :each | each abs ]
  14. 14. Running Pharo
  15. 15. Do it, print it You can evaluate any expression anywhere in Pharo
  16. 16. Standard development tools
  17. 17. Standard development tools
  18. 18. Debugger, explorer, inspector
  19. 19. Syntax in a nutshell
  20. 20. 3 kinds of messages Unary messages 5 factorial Transcript cr Binary messages 3 + 4 Keywords messages 3 raisedTo: 10 modulo: 5 Transcript show: 'hello world'
  21. 21. From Java to Smalltalk postman.send(mail,recipient);
  22. 22. Removing postman.send(mail,recipient);
  23. 23. Removing unnecessary postman send mail recipient
  24. 24. But without losing information postman send mail to recipient
  25. 25. postman send: mail to: recipient postman.send(mail,recipient);
  26. 26. Precedence (Msg) > Unary > Binary > Keywords from left to right No mathematical precedence
  27. 27. 2 + 3 squared 28
  28. 28. 2 + 3 squared >2+9 29
  29. 29. 2 + 3 squared >2+9 > 11 30
  30. 30. Color gray - Color white = Color black 31
  31. 31. Color gray - Color white = Color black 32
  32. 32. Color gray - Color white = Color black > aColor = Color black 33
  33. 33. Color gray - Color white = Color black > aColor = Color black > true 34
  34. 34. Statement and cascades Temporary variables Statement | p pen | p := 100@100. pen := Pen new. pen up. pen goto: p; down; goto: p+p Cascade
  35. 35. Block Closures: aka Function fct(x) = x * x + x |fct| fct:= [:x | x * x + x]. 36
  36. 36. Function Application fct (2) = 6 fct (20) = 420 fct value: 2 >6 fct value: 20 > 420 [:x | x * x + x] value: 2 >6 [:x | x * x + x] value: 20 >420 37
  37. 37. #(15 10 19 68) do: [:i | Transcript show: i ; cr ] 38
  38. 38. #(15 10 19 68) do: [ :i | Transcript show: i ; cr ] 39
  39. 39. 1 to: 100 do: [ :i | Transcript show: i ; space] 40
  40. 40. 1 to: 100 do: [ :i | Transcript show: i ; space] 41
  41. 41. 1 to: 100 by: 3 do: [ :i | Transcript show: i ; space] 42
  42. 42. 1 to: 100 by: 3 do: [ :i | Transcript show: i ; space] 43
  43. 43. A typical method in Point Method name Argument Comment <= aPoint ! "Answer whether the receiver is neither ! below nor to the right of aPoint." ! ^ x <= aPoint x and: [y <= aPoint y] Return Binary message Block Instance variable Keyword message (2@3) <= (5@6) true
  44. 44. Creating classes Send a message to a class (!) Number subclass: #Complex ! instanceVariableNames: 'real imaginary' ! ... ! category: 'ComplexNumbers'
  45. 45. Past.... Started with Squeak Smallltalk + Major Cleanups (MVC, eToys) + New UI Look / TrueType + Tools + Block Closures + Lots of bugfixes and small improvements + Preferences clean up + MIT license clean
  46. 46. Update ~1200 Bug-reports closed 496 Updates (1.0) 61 (1.1 unstable) Release Candidate: October 2009 ;)
  47. 47. Future
  48. 48. ...cleaner started to run SmallLint... and fix
  49. 49. ...smaller deployment image is 7 MB
  50. 50. ...faster
  51. 51. What we dream about A flexible infrastructure to be able to reinvent itself Integration Server.... Better tools next generation refactoring So that people can Better infrastructure invent their future New compilers First class packages Minimal core
  52. 52. Everybody can help Reporting bugs Confirming bugs Writing tests Writing examples Writing comments Simple contributing fixes Deep discussion...
  53. 53. Process FIX/ ENHANCEMENT Discussed on In PharoInbox or Discussed Changesets on Mailing- BUG list Described Described BUG Tracker Discussed on Other version Integrated Rejected
  54. 54. Pharo Sprints May 2008 Bern July 2009 Bern October 2009 Lille November 2009 Buenos Aires more in the future...
  55. 55. Books by example Pharo is a modern open-source development environment for the 2nd Volume classic Smalltalk-80 programming language. Despite being the first purely object-oriented language and environment, Smalltalk is in many ways still far ahead of its successors in promoting a vision of an environment where everything is an object, and anything can change by example at run-time. Pharo by Example, intended for both students and developers, will in preparation guide you gently through the Pharo language and environment by means of a series of examples and exercises. This book is made available under the Creative Commons Attribution- ShareAlike 3.0 license. You can either download the PDF for free, or you can buy a softcover copy from lulu.com. Additional material is available from Pharo web site at www.pharo-project.org. Square Bracket Associates Andrew P. Black, Stéphane Ducasse, Oscar Nierstrasz, Damien Pollet with Damien Cassou and Marcus Denker +,-.*(&'/!/()%!!"#/$/% * ( &'!()% !!"#$%
  56. 56. Thanks Hans Beck Matthew Fulmer Hilaire Fernandes Julian Fitzell David J Pennell Alexandre Bergel Tudor Girba Joseph Pelrine Cedric Beler Sean Glazier Alain Plantec Torsten Bergmann Norbert Hartl Damien Pollet Matthias Berth Dale Henrichs Lukas Renggli Ralph Boland Reinout Heeck Jorge Ressia Noury Bouraqadi Eric Hochmeister Mike Roberts Brian Brown Keith Hodges Robert Rothwell Gwenael Casaccio Henrik Sperre Johansen David Rotlisberger Damien Cassou Pavel Krivanek Michael Rueger Nicolas Cellier Adrian Kuhn Bill Schwab Gary Chambers Adrian Lienhard Niko Schwarz Miguel Coba Andreas Leidig Igor Stasenko Gabriel Cotelli Mariano Martinez Peck Francois Stephany Carlos Crosetti Dave Mason Serge Stinckwich Cyrille Delaunay John McIntosh Mathieu Suen Simon Denier Johnaton Meichtry Lawrence Trutter Marcus Denker Eliot Miranda Andrew Tween Ramiro Diaz Trepat Hernan Morales Durand martin von loewis Stephane Ducasse Philipp Marshall Juan Vuletich Morales Durand Hernan Jannick Menanteau Steven Wirts Stephan Eggermont Yann Monclair Hernan Wilkinson Luc Fabresse Oscar Nierstrasz
  57. 57. Join Us! Creating good energy, software quality, learning and having fun http://pharo-project.org
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×