Talk: Pharo at JM2L 2009

1,691 views

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,691
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
15
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

×