SlideShare a Scribd company logo
1 of 58
Download to read offline
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 trait-based
Open and flexible environment
Platform for Seaside and Aida/Web web frameworks
Pharo?
 A progressive, open-source Smalltalk platform
               for professional use.




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

     Pharo is the IDE
Companies
netstyle.ch        GemStone
cmsbox.com         SW GmbH
Pinesoft           2Denker
Smallworks         ...
Agilitic.be
Inceptive.be
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 inheritance
Everything happens by sending messages to
objects

	 1000 factorial / 999 factorial

 (Smalltalk isCool) ifTrue: [‘Yeahh’]
	 #(1 -2 3) collect: [ :each | each abs ]
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 + 4


  Keywords messages
                3 raisedTo: 10 modulo: 5

                Transcript show: 'hello world'
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 |
             p := 100@100.
             pen := Pen new.
             pen up.
             pen goto: p; down; goto: p+p

                              Cascade
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 * x + x] value: 20
>420

                             37
#(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 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
Creating classes

 Send a message to a class (!)



    Number subclass: #Complex
    ! instanceVariableNames: 'real imaginary'
    ! ...
    ! category: 'ComplexNumbers'
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
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

                                  Integration Server....
Better tools
  next generation refactoring   So that people can
Better infrastructure           invent their future
   New compilers
   First class packages
   Minimal core
Everybody can help
   Reporting bugs
   Confirming bugs
   Writing tests
   Writing examples
   Writing comments
   Simple contributing fixes
   Deep discussion...
Process
       FIX/
 ENHANCEMENT           Discussed on
 In PharoInbox or                     Discussed
    Changesets                        on Mailing-                BUG
                                          list


                    Described
                                                    Described


                                      BUG Tracker
       Discussed on




                                                                    Other
                                                                   version



                                      Integrated      Rejected
Pharo Sprints
May 2008 Bern
July 2009 Bern
October 2009 Lille
November 2009 Buenos Aires




      more in the future...
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
                 +,-.*(&'/!/()%!!"#/$/%




                                      *
                  ( &'!()% !!"#$%
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
Join Us!

Creating good energy, software quality,
        learning and having fun

   http://pharo-project.org

More Related Content

Similar to Talk: Pharo at JM2L 2009

Pharo, an innovative and open-source Smalltalk
Pharo, an innovative and open-source SmalltalkPharo, an innovative and open-source Smalltalk
Pharo, an innovative and open-source SmalltalkSerge Stinckwich
 
Pharo
PharoPharo
PharoESUG
 
Pharo: Objects at your Fingertips
Pharo: Objects at your FingertipsPharo: Objects at your Fingertips
Pharo: Objects at your FingertipsPharo
 
Pharo: Objects at your Fingertips
Pharo: Objects at your FingertipsPharo: Objects at your Fingertips
Pharo: Objects at your FingertipsMarcus Denker
 
Pharo - I have a dream @ Smalltalks Conference 2009
Pharo -  I have a dream @ Smalltalks Conference 2009Pharo -  I have a dream @ Smalltalks Conference 2009
Pharo - I have a dream @ Smalltalks Conference 2009Pharo
 
Pharo Update
Pharo UpdatePharo Update
Pharo UpdateESUG
 
Python PPT by Sushil Sir.pptx
Python PPT by Sushil Sir.pptxPython PPT by Sushil Sir.pptx
Python PPT by Sushil Sir.pptxsushil155005
 
2011 Pharo Roadmap explained
2011 Pharo Roadmap explained2011 Pharo Roadmap explained
2011 Pharo Roadmap explainedPharo
 
Ti1220 Lecture 1: Programming Linguistics
Ti1220 Lecture 1: Programming LinguisticsTi1220 Lecture 1: Programming Linguistics
Ti1220 Lecture 1: Programming LinguisticsEelco Visser
 
2010 pharo-esug-final
2010 pharo-esug-final2010 pharo-esug-final
2010 pharo-esug-finalPharo
 
Software archaeology for beginners: code, community and culture
Software archaeology for beginners: code, community and cultureSoftware archaeology for beginners: code, community and culture
Software archaeology for beginners: code, community and cultureJames Turnbull
 
IzPack - fOSSa 2009
IzPack - fOSSa 2009IzPack - fOSSa 2009
IzPack - fOSSa 2009julien.ponge
 
python-160403194316.pdf
python-160403194316.pdfpython-160403194316.pdf
python-160403194316.pdfgmadhu8
 
Python Course Basic
Python Course BasicPython Course Basic
Python Course BasicNaiyan Noor
 
Pharo3 at Fosdem
Pharo3 at FosdemPharo3 at Fosdem
Pharo3 at FosdemPharo
 

Similar to Talk: Pharo at JM2L 2009 (20)

Pharo, an innovative and open-source Smalltalk
Pharo, an innovative and open-source SmalltalkPharo, an innovative and open-source Smalltalk
Pharo, an innovative and open-source Smalltalk
 
Pharo
PharoPharo
Pharo
 
Pharo: Objects at your Fingertips
Pharo: Objects at your FingertipsPharo: Objects at your Fingertips
Pharo: Objects at your Fingertips
 
Pharo: Objects at your Fingertips
Pharo: Objects at your FingertipsPharo: Objects at your Fingertips
Pharo: Objects at your Fingertips
 
Pharo - I have a dream @ Smalltalks Conference 2009
Pharo -  I have a dream @ Smalltalks Conference 2009Pharo -  I have a dream @ Smalltalks Conference 2009
Pharo - I have a dream @ Smalltalks Conference 2009
 
Pharo Update
Pharo UpdatePharo Update
Pharo Update
 
Python PPT by Sushil Sir.pptx
Python PPT by Sushil Sir.pptxPython PPT by Sushil Sir.pptx
Python PPT by Sushil Sir.pptx
 
2011 Pharo Roadmap explained
2011 Pharo Roadmap explained2011 Pharo Roadmap explained
2011 Pharo Roadmap explained
 
Ti1220 Lecture 1: Programming Linguistics
Ti1220 Lecture 1: Programming LinguisticsTi1220 Lecture 1: Programming Linguistics
Ti1220 Lecture 1: Programming Linguistics
 
2010 pharo-esug-final
2010 pharo-esug-final2010 pharo-esug-final
2010 pharo-esug-final
 
Software archaeology for beginners: code, community and culture
Software archaeology for beginners: code, community and cultureSoftware archaeology for beginners: code, community and culture
Software archaeology for beginners: code, community and culture
 
Pharo3 at Fosdem
Pharo3 at FosdemPharo3 at Fosdem
Pharo3 at Fosdem
 
IzPack - fOSSa 2009
IzPack - fOSSa 2009IzPack - fOSSa 2009
IzPack - fOSSa 2009
 
python into.pptx
python into.pptxpython into.pptx
python into.pptx
 
python-160403194316.pdf
python-160403194316.pdfpython-160403194316.pdf
python-160403194316.pdf
 
05 python.pdf
05 python.pdf05 python.pdf
05 python.pdf
 
Python Course Basic
Python Course BasicPython Course Basic
Python Course Basic
 
Research at RMOD
Research at RMODResearch at RMOD
Research at RMOD
 
Pharo3 at Fosdem
Pharo3 at FosdemPharo3 at Fosdem
Pharo3 at Fosdem
 
Python
PythonPython
Python
 

More from Marcus Denker

ConstantBlocks in Pharo11
ConstantBlocks in Pharo11ConstantBlocks in Pharo11
ConstantBlocks in Pharo11Marcus Denker
 
First Class Variables as AST Annotations
First Class Variables as AST AnnotationsFirst Class Variables as AST Annotations
First Class Variables as AST AnnotationsMarcus Denker
 
Supporting Pharo / Getting Pharo Support
Supporting Pharo / Getting Pharo SupportSupporting Pharo / Getting Pharo Support
Supporting Pharo / Getting Pharo SupportMarcus Denker
 
Lecture: "Advanced Reflection: MetaLinks"
Lecture: "Advanced Reflection: MetaLinks"Lecture: "Advanced Reflection: MetaLinks"
Lecture: "Advanced Reflection: MetaLinks"Marcus Denker
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the DebuggerMarcus Denker
 
Lecture. Advanced Reflection: MetaLinks
Lecture. Advanced Reflection: MetaLinksLecture. Advanced Reflection: MetaLinks
Lecture. Advanced Reflection: MetaLinksMarcus Denker
 
Improving code completion for Pharo
Improving code completion for PharoImproving code completion for Pharo
Improving code completion for PharoMarcus Denker
 
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinksVUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinksMarcus Denker
 
Lecture: Advanced Reflection. MetaLinks
Lecture: Advanced Reflection. MetaLinksLecture: Advanced Reflection. MetaLinks
Lecture: Advanced Reflection. MetaLinksMarcus Denker
 
Open-Source: An Infinite Game
Open-Source: An Infinite GameOpen-Source: An Infinite Game
Open-Source: An Infinite GameMarcus Denker
 
PharoTechTalk: Contributing to Pharo
PharoTechTalk: Contributing to PharoPharoTechTalk: Contributing to Pharo
PharoTechTalk: Contributing to PharoMarcus Denker
 
Feedback Loops in Practice
Feedback Loops in PracticeFeedback Loops in Practice
Feedback Loops in PracticeMarcus Denker
 

More from Marcus Denker (20)

Soil And Pharo
Soil And PharoSoil And Pharo
Soil And Pharo
 
ConstantBlocks in Pharo11
ConstantBlocks in Pharo11ConstantBlocks in Pharo11
ConstantBlocks in Pharo11
 
Demo: Improved DoIt
Demo: Improved DoItDemo: Improved DoIt
Demo: Improved DoIt
 
First Class Variables as AST Annotations
First Class Variables as AST AnnotationsFirst Class Variables as AST Annotations
First Class Variables as AST Annotations
 
Supporting Pharo / Getting Pharo Support
Supporting Pharo / Getting Pharo SupportSupporting Pharo / Getting Pharo Support
Supporting Pharo / Getting Pharo Support
 
Lecture: "Advanced Reflection: MetaLinks"
Lecture: "Advanced Reflection: MetaLinks"Lecture: "Advanced Reflection: MetaLinks"
Lecture: "Advanced Reflection: MetaLinks"
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Variables in Pharo
Variables in PharoVariables in Pharo
Variables in Pharo
 
Lecture. Advanced Reflection: MetaLinks
Lecture. Advanced Reflection: MetaLinksLecture. Advanced Reflection: MetaLinks
Lecture. Advanced Reflection: MetaLinks
 
Improving code completion for Pharo
Improving code completion for PharoImproving code completion for Pharo
Improving code completion for Pharo
 
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinksVUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
VUB Brussels Lecture 2019: Advanced Reflection: MetaLinks
 
Slot Composition
Slot CompositionSlot Composition
Slot Composition
 
Lecture: Advanced Reflection. MetaLinks
Lecture: Advanced Reflection. MetaLinksLecture: Advanced Reflection. MetaLinks
Lecture: Advanced Reflection. MetaLinks
 
PHARO IOT
PHARO IOTPHARO IOT
PHARO IOT
 
Open-Source: An Infinite Game
Open-Source: An Infinite GameOpen-Source: An Infinite Game
Open-Source: An Infinite Game
 
Lecture: MetaLinks
Lecture: MetaLinksLecture: MetaLinks
Lecture: MetaLinks
 
PharoTechTalk: Contributing to Pharo
PharoTechTalk: Contributing to PharoPharoTechTalk: Contributing to Pharo
PharoTechTalk: Contributing to Pharo
 
Feedback Loops in Practice
Feedback Loops in PracticeFeedback Loops in Practice
Feedback Loops in Practice
 
Pharo6 - ESUG17
Pharo6 - ESUG17Pharo6 - ESUG17
Pharo6 - ESUG17
 
Pharo6
Pharo6Pharo6
Pharo6
 

Recently uploaded

Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 

Talk: Pharo at JM2L 2009

  • 1. A clean, innovative, open-source Smalltalk http://www.pharo-project.org
  • 2. Roadmap Short intro User community Look at syntax and runtime Coding Session Future
  • 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. Pharo? A progressive, open-source Smalltalk platform for professional use. Stable Bugs fixed fast But innovative
  • 5.
  • 9. Smalltalk with OO-Database Pharo is the IDE
  • 10. Companies netstyle.ch GemStone cmsbox.com SW GmbH Pinesoft 2Denker Smallworks ... Agilitic.be Inceptive.be
  • 11. Universities Annecy Bruxelles Lugano ... Bern Douai Lille Santiago
  • 13. A Simple and Pure Model Everything is an object (instance of a class) Public methods Protected attributes Single inheritance
  • 14. Everything happens by sending messages to objects 1000 factorial / 999 factorial (Smalltalk isCool) ifTrue: [‘Yeahh’] #(1 -2 3) collect: [ :each | each abs ]
  • 16. Do it, print it You can evaluate any expression anywhere in Pharo
  • 20. Syntax in a nutshell
  • 21. 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'
  • 22. From Java to Smalltalk postman.send(mail,recipient);
  • 25. But without losing information postman send mail to recipient
  • 26. postman send: mail to: recipient postman.send(mail,recipient);
  • 27. Precedence (Msg) > Unary > Binary > Keywords from left to right No mathematical precedence
  • 28. 2 + 3 squared 28
  • 29. 2 + 3 squared >2+9 29
  • 30. 2 + 3 squared >2+9 > 11 30
  • 31. Color gray - Color white = Color black 31
  • 32. Color gray - Color white = Color black 32
  • 33. Color gray - Color white = Color black > aColor = Color black 33
  • 34. Color gray - Color white = Color black > aColor = Color black > true 34
  • 35. Statement and cascades Temporary variables Statement | p pen | p := 100@100. pen := Pen new. pen up. pen goto: p; down; goto: p+p Cascade
  • 36. Block Closures: aka Function fct(x) = x * x + x |fct| fct:= [:x | x * x + x]. 36
  • 37. 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
  • 38. #(15 10 19 68) do: [:i | Transcript show: i ; cr ] 38
  • 39. #(15 10 19 68) do: [ :i | Transcript show: i ; cr ] 39
  • 40. 1 to: 100 do: [ :i | Transcript show: i ; space] 40
  • 41. 1 to: 100 do: [ :i | Transcript show: i ; space] 41
  • 42. 1 to: 100 by: 3 do: [ :i | Transcript show: i ; space] 42
  • 43. 1 to: 100 by: 3 do: [ :i | Transcript show: i ; space] 43
  • 44. 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
  • 45. Creating classes Send a message to a class (!) Number subclass: #Complex ! instanceVariableNames: 'real imaginary' ! ... ! category: 'ComplexNumbers'
  • 46. 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
  • 47. Update ~1200 Bug-reports closed 496 Updates (1.0) 61 (1.1 unstable) Release Candidate: October 2009 ;)
  • 49. ...cleaner started to run SmallLint... and fix
  • 52. 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
  • 53. Everybody can help Reporting bugs Confirming bugs Writing tests Writing examples Writing comments Simple contributing fixes Deep discussion...
  • 54. Process FIX/ ENHANCEMENT Discussed on In PharoInbox or Discussed Changesets on Mailing- BUG list Described Described BUG Tracker Discussed on Other version Integrated Rejected
  • 55. Pharo Sprints May 2008 Bern July 2009 Bern October 2009 Lille November 2009 Buenos Aires more in the future...
  • 56. 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 +,-.*(&'/!/()%!!"#/$/% * ( &'!()% !!"#$%
  • 57. 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
  • 58. Join Us! Creating good energy, software quality, learning and having fun http://pharo-project.org