SlideShare ist ein Scribd-Unternehmen logo
1 von 119
A clean, innovative, open-source
            Smalltalk
   http://www.pharo-project.org/
             Serge Stinckwich
        Serge.Stinckwich@esug.org
1   Smalltalk Syntax


2   Smalltalk object model


3   Pharo, an open-source Smalltalk
1   Smalltalk syntax
What are the keywords ?


   How do you build
    expressions ?
Almost no keywords
Syntax for litterals
1   -10   30
3.14156    1e-10 -1.4e4
$A $z
‘Hello World’
#(1 2 3 4 5)
“A comment is a sequence of
 characters surrounded by
     quotation marks.”
Assignement
x := 3.
y := ‘Hello world’.
z := x+4.
6 pseudo-variables
       nil, true, false
self, super, thisContext
Everything happens
by message sending
(1) Unary message
receiver message.
20 factorial
2432902008176640000
‘Esope reste et se repose’
        reversed
‘esoper es te etser eposE’
‘12345’ isAllDigits
true
‘Quelle est ma longueur ?’
            size
23
‘foobar’ first
$f
(2) Binary Messages
aReceiver aSelector
   anArgument
3+4
7
‘Bonjour ’, ‘monde’
‘Bonjour monde’
2@3
2@3
(3) Keywords Messages
12 between: 8 and:15.
8 < 12 < 15 ?
true
#(1 4 9 16 25) at: 3
9
aString.substring(2, 5)   aString copyFrom: 2 to: 5


                              ColorValue hue: a
 new ColorValue(a, b, c)
                             saturation: b value: c

                         DateAndTime year: a day:
new DateAndTime(a, b, c)
                              b timeZone: c


      Easier to document the semantic role
      of arguments with keywords messages.
(Msg) > Unary > Binary > Keywords
Messages cascading
myBirthday := Date new.

myBirthDay setYear: 1967.
myBirthDay setMonth: 5.
myBirthDay setDayOfMonth: 10.
myBirthday := Date new;
   setYear: 1967;
   setMonth: 5;
   setDayOfMonth: 10.
The
End
if ... then ... else ?
Weather today isRaining
  ifTrue: [self takeMyUmbrella]
  ifFalse: [self takeMySunglasses]


ifTrue:ifFalse is sent to an objet: a boolean
Closures
       [3+4]

[‘Bonjour’ size. 3+4.
   #(1 2 3 4) at:2]
A block (lexical closure) is a Smalltalk
object, whose value could be evaluated in
               the future.

   A block is evaluated by sending the
            message value.
[1+2] value. ⇒ 3
Block could be parametrized

[:param1 :param2 ... | statements]
[:x | x+1] value:2.

[:x :y | x,y] value:’Bonjour’
       value:’monde !’.
Dynamic binding
Postponing selection of an operation until
execution time

       aCondition
         ifTrue:[y:= 3]
         ifFalse:[y:= #(1 2 3)].
       y printOn: someStream.

      Many printOn: methods,
 compiler can’t preordain the choice.
Dynamic binding enables
    polymorphism
Where is implemented
   ifTrue:ifFalse: ?
Where is implemented
     ifTrue:ifFalse: ?
True>>ifTrue:aBlock1 ifFalse: aBlock2
 ^aBlock1 value


False>>ifTrue:aBlock1 ifFalse: aBlock2
 ^aBlock2 value
Build your own control
       structure !
 7 ifSeven:[Object inform: ‘Its seven’]




 Number>>ifSeven:aBlock
  self=7 ifTrue:[^aBlock value]
Iterations
[Weather today isRaining]
 whileTrue:[self doNotGoOutside.
        self readAGoodBook]
Array
| life |
life := #(calvin hates suzie).
life at:2 put:#loves.
life. ⇒ #(#calvin #loves #suzie)

life first. ⇒ #calvin
life last. ⇒#suzie
life indexOf:#calvin. ⇒ 1
life indexOf:#asterix
    ifAbsent:[Transcript show:’Je ne
connais pas’].
Set
s := Set new.
s add:1.
s add:2.
s add:2.
s. ⇒ a Set(1 2)
Interval
-10 to:10. ⇒ (-10 to: 10)
(-10 to:10) at:2. ⇒ -9
(-10 to:10) at:2 put:3.
⇒ erreur
OrderedCollection
distributions := OrderedCollection new.
distributions add:’Slackware’;
   add:’Fedora’; add:’Ubuntu’.
distributions. ⇒ an
OrderedCollection('Slackware' 'Fedora' 'Ubuntu')
distributions remove:’Fedora’.
distributions. ⇒ an
OrderedCollection('Slackware' 'Ubuntu')
OrderedCollection
distributions addFirst:’Debian’.
distributions addLast:’RedHat’.

distributions. ⇒ an OrderedCollection('Debian'
'Slackware' 'Ubuntu' 'RedHat')

distributions add:’Mandriva’ afterIndex:2.

distributions. ⇒ an OrderedCollection('Debian'
'Slackware' 'Mandriva' 'Ubuntu' 'RedHat')
Collection enumeration

 A collection contains a lot of elements.
 Enumerate a collection is browsing the collection
 and running a statement for each element:

 do:, select:, reject:
 collect:, inject:
Enumeration messages are polymorphic
                 =
 they work whatever the collection is
do:
Evaluate the block for each element of the
collection.
total := 0.
a := #(1 2 3 4 5 6).
a do:[:unElement |  total := total +
unElement]
select:
Evaluate the block for each element of the
collection and return a collectiof the items of the
same class containing elements whose evaluation
return true.
a := #(1 2 3 4 5 6).
a select:[:unElement| unElement even]
Return : #(2 4 6)
detect:
Evaluate the block for each element of the
collection and return the first element that
evaluate as the block value as true.
a := #(1 2 3 4 5 6).
a detect:[:unElement |  unElement>3].
Return : 4.
2   Smalltalk object model
Classe Rectangle

      Rectangle

       width
       height

        area
         ...
Object subclass: #Rectangle

 instanceVariableNames: 'width height'

 classVariableNames: ''

 poolDictionaries: ''

 category: 'Exemples-Heritage'
Rectangle>>width: w
     width := w

Rectangle>>height: h
     height := h

 Rectangle>>width
      ^width

 Rectangle>>height
      ^height

  Rectangle>>area
   ^ width*height
Classe
ColoredRectangle
    ColoredRectangle

         width
         height
          color


          area
           ...
A colored rectangle is like a rectangle but
             with a color ...
Operations that can be done a rectangle,
can also be done on a colored rectangle
          (e.g surface calculus)
a ColoredRectangle isa Rectangle
Rectangle subclass: #ColoredRectangle

 instanceVariableNames: 'color'

 classVariableNames: ''

 poolDictionaries: ''

 category: 'Exemples-Heritage'
ColoredRectangle>>color
 ^color


ColoredRectangle>>color:
aColor
 color := aColor
Class inheritance
        Rectangle

          width
          height

           area
            ...




     ColoredRectangle


          color


            ...
a := Rectangle new.
a width:10.
a height:50.

a width. ⇒ 10
a height. ⇒ 50
a area. ⇒ 500
b := ColoredRectangle new.
b width:10.
b height:50.
b color: Color blue.
b width. ⇒ 10
b height. ⇒ 50
b color. ⇒ Color blue
b area. ⇒ 500
Rule 1
     Everything is an object
              Rule 2
Every object is an instance of one
               class
              Rule 3
  Every class has a super-class
              Rule 4
 Everything happens by message
             sending
Classes are also
      objects !
1 class⇒ SmallInteger
20 factorial class ⇒
LargePositiveInteger
‘Hello’ class ⇒ ByteString
#(1 2 3) class ⇒ Array
Every class has a
       superclass
Integer superclass ⇒ Integer
Number superclass ⇒ Magnitude
Magnitude superclass ⇒ Object
doesNotUnderstand:
If a class is an object, every
    class should be also an
instance of a specific classe.


        Metaclasses !
Metaclasses hierarchy is
parallel to class hierarchy
Every metaclasses is
instance of Metaclass
The metaclass of
 Metaclass is an
  instance of
   Metaclass
How many classes in
    the system ?

Object allSubclasses size
How many abstract
methods in the system ?

Object allSubclasses do:
[:aClass| aClass methodDict keys
select: [:aMethod |
	 (aClass>>aMethod)
isAbstract ]]
What is a dynamic
    language ?
Dynamic typing: greater polymorphism
Metaprogramming (metaclasses):
 allow language itself to be dynamically changed
 allow hooks into object life cycle and method calls

Work with code as easily as data
 Closures
 Higher-order programming
Readability
Shorter code is easier to read and maintain and
refactor
Need balance between cryptic and expressive
square
         ^self*self



public int square(int x) {
  return x * x;
}
button on: #mouseDown send:
    #value to: [Object inform: 'You
    clicked me'].



button.setOnClickListener(new
View.OnClickListener() {
  public void onClick(View view) {
    (Button) view.setText(""You Clicked
Me!")
  }
});
3


Pharo, an open-source
      Smalltalk
In a nutshell
Pharo = language + IDE
Pure object-oriented programming language
(Smalltalk)
Dynamically language and trait-based
Open and flexible environment
Used Monticello for versionning (Metacello
planned for 1.1)
iPhone
Pharo class Browser
other Pharo tools
Polymorph UI
Polymorph provides support for selectable UI
themes in Morphic, extra widgets to support a
consistent look&fell, a framework for easily
creating UI in code.
Standard UI in Pharo
Demo of Pharo
Simple examples
BlinkMorph example
Skins support
MultiMorph UI (UITheme examples)
Tests !
9179 unit tests includes in Pharo 1.0
9144 passes
20 expected failures
15 failures
0 errors
Everybody can help
   Reporting bugs
   Confirming bugs
   Writing tests
   Writing examples
   Writing comments
   Simple contributing fixes
   Deep discussion...
Community Process
      FIX/
ENHANCEMENT           Discussed on
In PharoInbox or                     Discussed
   Changesets                        on Mailing-                BUG
                                         list


                   Described
                                                   Described


                                     BUG Tracker
      Discussed on




                                                                   Other
                                                                  version



                                     Integrated      Rejected
http://www.pharobyexample.org/




Pharo by example vol. 2 on preparation
Pharo Sprints
May 2008 Bern (Switzerland)
July 2009 Bern (Switzerland)
October 2009 Lille (France)
November 2009 Buenos Aires
(Argentina)
Thanks Hans Beck
                            Matthew Fulmer
                            Hilaire Fernandes
                                Julian Fitzell      David J Pennell
    Alexandre Bergel
                               Tudor Girba          Joseph Pelrine
      Cédric 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
   Stéphane 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
Cộng đồng Smalltalk Việt

Smalltalk-VN mailing-list :

    http://lists.squeakfoundation.org/
      mailman/listinfo/smalltalk-vn
Smalltalk flyer in vietnamese
EToys in vietnamese
Occam's razor: "entities should not be
multiplied beyond what is necessary" (entia
non sunt multiplicanda praeter necessitatem)


   the simplest solution is usually the
              correct one.
Thank you for your
attention.
Cám ơn sự quan
tâm của bạn.

Weitere ähnliche Inhalte

Was ist angesagt?

Variables: names, bindings, type, scope
Variables: names, bindings, type, scopeVariables: names, bindings, type, scope
Variables: names, bindings, type, scopesuthi
 
The Ring programming language version 1.8 book - Part 7 of 202
The Ring programming language version 1.8 book - Part 7 of 202The Ring programming language version 1.8 book - Part 7 of 202
The Ring programming language version 1.8 book - Part 7 of 202Mahmoud Samir Fayed
 
Java Keeps Throttling Up!
Java Keeps Throttling Up!Java Keeps Throttling Up!
Java Keeps Throttling Up!José Paumard
 
Android 101 - Building a simple app with Kotlin in 90 minutes
Android 101 - Building a simple app with Kotlin in 90 minutesAndroid 101 - Building a simple app with Kotlin in 90 minutes
Android 101 - Building a simple app with Kotlin in 90 minutesKai Koenig
 
From Java to Parellel Clojure - Clojure South 2019
From Java to Parellel Clojure - Clojure South 2019From Java to Parellel Clojure - Clojure South 2019
From Java to Parellel Clojure - Clojure South 2019Leonardo Borges
 
Unit3 java
Unit3 javaUnit3 java
Unit3 javamrecedu
 
C# Summer course - Lecture 3
C# Summer course - Lecture 3C# Summer course - Lecture 3
C# Summer course - Lecture 3mohamedsamyali
 
scala.reflect, Eugene Burmako
scala.reflect, Eugene Burmakoscala.reflect, Eugene Burmako
scala.reflect, Eugene BurmakoVasil Remeniuk
 
Type script by Howard
Type script by HowardType script by Howard
Type script by HowardLearningTech
 
What's New In Python 2.6
What's New In Python 2.6What's New In Python 2.6
What's New In Python 2.6Richard Jones
 
Fun never stops. introduction to haskell programming language
Fun never stops. introduction to haskell programming languageFun never stops. introduction to haskell programming language
Fun never stops. introduction to haskell programming languagePawel Szulc
 
Java fundamentals
Java fundamentalsJava fundamentals
Java fundamentalsHCMUTE
 
Python Puzzlers - 2016 Edition
Python Puzzlers - 2016 EditionPython Puzzlers - 2016 Edition
Python Puzzlers - 2016 EditionNandan Sawant
 
TypeScript by Howard
TypeScript by HowardTypeScript by Howard
TypeScript by HowardLearningTech
 
Privet Kotlin (Windy City DevFest)
Privet Kotlin (Windy City DevFest)Privet Kotlin (Windy City DevFest)
Privet Kotlin (Windy City DevFest)Cody Engel
 
Groovy grails types, operators, objects
Groovy grails types, operators, objectsGroovy grails types, operators, objects
Groovy grails types, operators, objectsHusain Dalal
 

Was ist angesagt? (19)

Variables: names, bindings, type, scope
Variables: names, bindings, type, scopeVariables: names, bindings, type, scope
Variables: names, bindings, type, scope
 
Lezione03
Lezione03Lezione03
Lezione03
 
The Ring programming language version 1.8 book - Part 7 of 202
The Ring programming language version 1.8 book - Part 7 of 202The Ring programming language version 1.8 book - Part 7 of 202
The Ring programming language version 1.8 book - Part 7 of 202
 
Java Keeps Throttling Up!
Java Keeps Throttling Up!Java Keeps Throttling Up!
Java Keeps Throttling Up!
 
Android 101 - Building a simple app with Kotlin in 90 minutes
Android 101 - Building a simple app with Kotlin in 90 minutesAndroid 101 - Building a simple app with Kotlin in 90 minutes
Android 101 - Building a simple app with Kotlin in 90 minutes
 
From Java to Parellel Clojure - Clojure South 2019
From Java to Parellel Clojure - Clojure South 2019From Java to Parellel Clojure - Clojure South 2019
From Java to Parellel Clojure - Clojure South 2019
 
Unit3 java
Unit3 javaUnit3 java
Unit3 java
 
C# Summer course - Lecture 3
C# Summer course - Lecture 3C# Summer course - Lecture 3
C# Summer course - Lecture 3
 
JAVA OOP
JAVA OOPJAVA OOP
JAVA OOP
 
scala.reflect, Eugene Burmako
scala.reflect, Eugene Burmakoscala.reflect, Eugene Burmako
scala.reflect, Eugene Burmako
 
java tutorial 2
 java tutorial 2 java tutorial 2
java tutorial 2
 
Type script by Howard
Type script by HowardType script by Howard
Type script by Howard
 
What's New In Python 2.6
What's New In Python 2.6What's New In Python 2.6
What's New In Python 2.6
 
Fun never stops. introduction to haskell programming language
Fun never stops. introduction to haskell programming languageFun never stops. introduction to haskell programming language
Fun never stops. introduction to haskell programming language
 
Java fundamentals
Java fundamentalsJava fundamentals
Java fundamentals
 
Python Puzzlers - 2016 Edition
Python Puzzlers - 2016 EditionPython Puzzlers - 2016 Edition
Python Puzzlers - 2016 Edition
 
TypeScript by Howard
TypeScript by HowardTypeScript by Howard
TypeScript by Howard
 
Privet Kotlin (Windy City DevFest)
Privet Kotlin (Windy City DevFest)Privet Kotlin (Windy City DevFest)
Privet Kotlin (Windy City DevFest)
 
Groovy grails types, operators, objects
Groovy grails types, operators, objectsGroovy grails types, operators, objects
Groovy grails types, operators, objects
 

Andere mochten auch

Smalltalk In a Nutshell
Smalltalk In a NutshellSmalltalk In a Nutshell
Smalltalk In a NutshellMichele Lanza
 
Seaside - The Revenge of Smalltalk
Seaside - The Revenge of SmalltalkSeaside - The Revenge of Smalltalk
Seaside - The Revenge of SmalltalkLukas Renggli
 
(How) Does VA Smalltalk fit into today's IT landscapes?
(How) Does VA Smalltalk fit into today's IT landscapes?(How) Does VA Smalltalk fit into today's IT landscapes?
(How) Does VA Smalltalk fit into today's IT landscapes?Joachim Tuchel
 
Algorithm and Programming (Introduction of Algorithms)
Algorithm and Programming (Introduction of Algorithms)Algorithm and Programming (Introduction of Algorithms)
Algorithm and Programming (Introduction of Algorithms)Adam Mukharil Bachtiar
 
Introduction to Algorithms
Introduction to AlgorithmsIntroduction to Algorithms
Introduction to AlgorithmsVenkatesh Iyer
 
Fundamentals of Web Development For Non-Developers
Fundamentals of Web Development For Non-DevelopersFundamentals of Web Development For Non-Developers
Fundamentals of Web Development For Non-DevelopersLemi Orhan Ergin
 

Andere mochten auch (7)

Smalltalk In a Nutshell
Smalltalk In a NutshellSmalltalk In a Nutshell
Smalltalk In a Nutshell
 
Seaside - The Revenge of Smalltalk
Seaside - The Revenge of SmalltalkSeaside - The Revenge of Smalltalk
Seaside - The Revenge of Smalltalk
 
(How) Does VA Smalltalk fit into today's IT landscapes?
(How) Does VA Smalltalk fit into today's IT landscapes?(How) Does VA Smalltalk fit into today's IT landscapes?
(How) Does VA Smalltalk fit into today's IT landscapes?
 
Web Development with Smalltalk
Web Development with SmalltalkWeb Development with Smalltalk
Web Development with Smalltalk
 
Algorithm and Programming (Introduction of Algorithms)
Algorithm and Programming (Introduction of Algorithms)Algorithm and Programming (Introduction of Algorithms)
Algorithm and Programming (Introduction of Algorithms)
 
Introduction to Algorithms
Introduction to AlgorithmsIntroduction to Algorithms
Introduction to Algorithms
 
Fundamentals of Web Development For Non-Developers
Fundamentals of Web Development For Non-DevelopersFundamentals of Web Development For Non-Developers
Fundamentals of Web Development For Non-Developers
 

Ähnlich wie Pharo, an innovative and open-source Smalltalk

Pharo: Syntax in a Nutshell
Pharo: Syntax in a NutshellPharo: Syntax in a Nutshell
Pharo: Syntax in a NutshellMarcus Denker
 
Ruby — An introduction
Ruby — An introductionRuby — An introduction
Ruby — An introductionGonçalo Silva
 
Talk: Pharo at JM2L 2009
Talk: Pharo at JM2L 2009Talk: Pharo at JM2L 2009
Talk: Pharo at JM2L 2009Marcus 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
 
The Ring programming language version 1.2 book - Part 5 of 84
The Ring programming language version 1.2 book - Part 5 of 84The Ring programming language version 1.2 book - Part 5 of 84
The Ring programming language version 1.2 book - Part 5 of 84Mahmoud Samir Fayed
 
Pharo: Objects at your Fingertips
Pharo: Objects at your FingertipsPharo: Objects at your Fingertips
Pharo: Objects at your FingertipsMarcus Denker
 
A tour on ruby and friends
A tour on ruby and friendsA tour on ruby and friends
A tour on ruby and friends旻琦 潘
 
DieHard: Probabilistic Memory Safety for Unsafe Languages
DieHard: Probabilistic Memory Safety for Unsafe LanguagesDieHard: Probabilistic Memory Safety for Unsafe Languages
DieHard: Probabilistic Memory Safety for Unsafe LanguagesEmery Berger
 
The Pharo Programming Language
The Pharo Programming LanguageThe Pharo Programming Language
The Pharo Programming Languagebergel
 
Pharo tutorial at ECOOP 2013
Pharo tutorial at ECOOP 2013Pharo tutorial at ECOOP 2013
Pharo tutorial at ECOOP 2013Pharo
 
Pharo tutorial at ECOOP 2013
Pharo tutorial at ECOOP 2013Pharo tutorial at ECOOP 2013
Pharo tutorial at ECOOP 2013Damien Cassou
 
Game Design and Development Workshop Day 1
Game Design and Development Workshop Day 1Game Design and Development Workshop Day 1
Game Design and Development Workshop Day 1Troy Miles
 
Functional Smalltalk
Functional SmalltalkFunctional Smalltalk
Functional SmalltalkESUG
 
Pharo: Objects at your Fingertips
Pharo: Objects at your FingertipsPharo: Objects at your Fingertips
Pharo: Objects at your FingertipsPharo
 
BASE Meetup: "Analysing Scala Puzzlers: Essential and Accidental Complexity i...
BASE Meetup: "Analysing Scala Puzzlers: Essential and Accidental Complexity i...BASE Meetup: "Analysing Scala Puzzlers: Essential and Accidental Complexity i...
BASE Meetup: "Analysing Scala Puzzlers: Essential and Accidental Complexity i...Andrew Phillips
 
Scala Up North: "Analysing Scala Puzzlers: Essential and Accidental Complexit...
Scala Up North: "Analysing Scala Puzzlers: Essential and Accidental Complexit...Scala Up North: "Analysing Scala Puzzlers: Essential and Accidental Complexit...
Scala Up North: "Analysing Scala Puzzlers: Essential and Accidental Complexit...Andrew Phillips
 
Objective c runtime
Objective c runtimeObjective c runtime
Objective c runtimeInferis
 
JS Fest 2019. Max Koretskiy. A sneak peek into super optimized code in JS fra...
JS Fest 2019. Max Koretskiy. A sneak peek into super optimized code in JS fra...JS Fest 2019. Max Koretskiy. A sneak peek into super optimized code in JS fra...
JS Fest 2019. Max Koretskiy. A sneak peek into super optimized code in JS fra...JSFestUA
 

Ähnlich wie Pharo, an innovative and open-source Smalltalk (20)

Pharo: Syntax in a Nutshell
Pharo: Syntax in a NutshellPharo: Syntax in a Nutshell
Pharo: Syntax in a Nutshell
 
Go &lt;-> Ruby
Go &lt;-> RubyGo &lt;-> Ruby
Go &lt;-> Ruby
 
Ruby — An introduction
Ruby — An introductionRuby — An introduction
Ruby — An introduction
 
Talk: Pharo at JM2L 2009
Talk: Pharo at JM2L 2009Talk: Pharo at JM2L 2009
Talk: Pharo at JM2L 2009
 
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
 
The Ring programming language version 1.2 book - Part 5 of 84
The Ring programming language version 1.2 book - Part 5 of 84The Ring programming language version 1.2 book - Part 5 of 84
The Ring programming language version 1.2 book - Part 5 of 84
 
Pharo: Objects at your Fingertips
Pharo: Objects at your FingertipsPharo: Objects at your Fingertips
Pharo: Objects at your Fingertips
 
A tour on ruby and friends
A tour on ruby and friendsA tour on ruby and friends
A tour on ruby and friends
 
Dynamic Python
Dynamic PythonDynamic Python
Dynamic Python
 
DieHard: Probabilistic Memory Safety for Unsafe Languages
DieHard: Probabilistic Memory Safety for Unsafe LanguagesDieHard: Probabilistic Memory Safety for Unsafe Languages
DieHard: Probabilistic Memory Safety for Unsafe Languages
 
The Pharo Programming Language
The Pharo Programming LanguageThe Pharo Programming Language
The Pharo Programming Language
 
Pharo tutorial at ECOOP 2013
Pharo tutorial at ECOOP 2013Pharo tutorial at ECOOP 2013
Pharo tutorial at ECOOP 2013
 
Pharo tutorial at ECOOP 2013
Pharo tutorial at ECOOP 2013Pharo tutorial at ECOOP 2013
Pharo tutorial at ECOOP 2013
 
Game Design and Development Workshop Day 1
Game Design and Development Workshop Day 1Game Design and Development Workshop Day 1
Game Design and Development Workshop Day 1
 
Functional Smalltalk
Functional SmalltalkFunctional Smalltalk
Functional Smalltalk
 
Pharo: Objects at your Fingertips
Pharo: Objects at your FingertipsPharo: Objects at your Fingertips
Pharo: Objects at your Fingertips
 
BASE Meetup: "Analysing Scala Puzzlers: Essential and Accidental Complexity i...
BASE Meetup: "Analysing Scala Puzzlers: Essential and Accidental Complexity i...BASE Meetup: "Analysing Scala Puzzlers: Essential and Accidental Complexity i...
BASE Meetup: "Analysing Scala Puzzlers: Essential and Accidental Complexity i...
 
Scala Up North: "Analysing Scala Puzzlers: Essential and Accidental Complexit...
Scala Up North: "Analysing Scala Puzzlers: Essential and Accidental Complexit...Scala Up North: "Analysing Scala Puzzlers: Essential and Accidental Complexit...
Scala Up North: "Analysing Scala Puzzlers: Essential and Accidental Complexit...
 
Objective c runtime
Objective c runtimeObjective c runtime
Objective c runtime
 
JS Fest 2019. Max Koretskiy. A sneak peek into super optimized code in JS fra...
JS Fest 2019. Max Koretskiy. A sneak peek into super optimized code in JS fra...JS Fest 2019. Max Koretskiy. A sneak peek into super optimized code in JS fra...
JS Fest 2019. Max Koretskiy. A sneak peek into super optimized code in JS fra...
 

Mehr von Serge Stinckwich

Pure Coordination Using the Coordinator-Configurator Pattern
Pure Coordination Using the Coordinator-Configurator PatternPure Coordination Using the Coordinator-Configurator Pattern
Pure Coordination Using the Coordinator-Configurator PatternSerge Stinckwich
 
A Graphical Language for Real-Time Critical Robot Commands
A Graphical Language for Real-Time Critical Robot CommandsA Graphical Language for Real-Time Critical Robot Commands
A Graphical Language for Real-Time Critical Robot CommandsSerge Stinckwich
 
Dealing with Run-Time Variability in Service Robotics: Towards a DSL for Non-...
Dealing with Run-Time Variability in Service Robotics: Towards a DSL for Non-...Dealing with Run-Time Variability in Service Robotics: Towards a DSL for Non-...
Dealing with Run-Time Variability in Service Robotics: Towards a DSL for Non-...Serge Stinckwich
 
Introduction to DYROS'10 Workshop
Introduction to DYROS'10 WorkshopIntroduction to DYROS'10 Workshop
Introduction to DYROS'10 WorkshopSerge Stinckwich
 
A DSL for the visualization of Multi-Robot Systems
A DSL for the visualization of Multi-Robot SystemsA DSL for the visualization of Multi-Robot Systems
A DSL for the visualization of Multi-Robot SystemsSerge Stinckwich
 
Using Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systemsUsing Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systemsSerge Stinckwich
 
Visit to Vung Vieng Village - OLPC Vietnam
Visit to Vung Vieng Village - OLPC VietnamVisit to Vung Vieng Village - OLPC Vietnam
Visit to Vung Vieng Village - OLPC VietnamSerge Stinckwich
 
Smalltalk合同勉強会@名古屋 talk: Pharo introduction
Smalltalk合同勉強会@名古屋 talk: Pharo introductionSmalltalk合同勉強会@名古屋 talk: Pharo introduction
Smalltalk合同勉強会@名古屋 talk: Pharo introductionSerge Stinckwich
 
Smalltalk合同勉強会@名古屋 talk : ESUG Introduction
Smalltalk合同勉強会@名古屋 talk : ESUG IntroductionSmalltalk合同勉強会@名古屋 talk : ESUG Introduction
Smalltalk合同勉強会@名古屋 talk : ESUG IntroductionSerge Stinckwich
 
An instrument whose music is ideas
An instrument whose music is ideasAn instrument whose music is ideas
An instrument whose music is ideasSerge Stinckwich
 
Smalltalk Bar Camp Hanoi 2009
Smalltalk  Bar Camp Hanoi 2009Smalltalk  Bar Camp Hanoi 2009
Smalltalk Bar Camp Hanoi 2009Serge Stinckwich
 

Mehr von Serge Stinckwich (11)

Pure Coordination Using the Coordinator-Configurator Pattern
Pure Coordination Using the Coordinator-Configurator PatternPure Coordination Using the Coordinator-Configurator Pattern
Pure Coordination Using the Coordinator-Configurator Pattern
 
A Graphical Language for Real-Time Critical Robot Commands
A Graphical Language for Real-Time Critical Robot CommandsA Graphical Language for Real-Time Critical Robot Commands
A Graphical Language for Real-Time Critical Robot Commands
 
Dealing with Run-Time Variability in Service Robotics: Towards a DSL for Non-...
Dealing with Run-Time Variability in Service Robotics: Towards a DSL for Non-...Dealing with Run-Time Variability in Service Robotics: Towards a DSL for Non-...
Dealing with Run-Time Variability in Service Robotics: Towards a DSL for Non-...
 
Introduction to DYROS'10 Workshop
Introduction to DYROS'10 WorkshopIntroduction to DYROS'10 Workshop
Introduction to DYROS'10 Workshop
 
A DSL for the visualization of Multi-Robot Systems
A DSL for the visualization of Multi-Robot SystemsA DSL for the visualization of Multi-Robot Systems
A DSL for the visualization of Multi-Robot Systems
 
Using Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systemsUsing Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systems
 
Visit to Vung Vieng Village - OLPC Vietnam
Visit to Vung Vieng Village - OLPC VietnamVisit to Vung Vieng Village - OLPC Vietnam
Visit to Vung Vieng Village - OLPC Vietnam
 
Smalltalk合同勉強会@名古屋 talk: Pharo introduction
Smalltalk合同勉強会@名古屋 talk: Pharo introductionSmalltalk合同勉強会@名古屋 talk: Pharo introduction
Smalltalk合同勉強会@名古屋 talk: Pharo introduction
 
Smalltalk合同勉強会@名古屋 talk : ESUG Introduction
Smalltalk合同勉強会@名古屋 talk : ESUG IntroductionSmalltalk合同勉強会@名古屋 talk : ESUG Introduction
Smalltalk合同勉強会@名古屋 talk : ESUG Introduction
 
An instrument whose music is ideas
An instrument whose music is ideasAn instrument whose music is ideas
An instrument whose music is ideas
 
Smalltalk Bar Camp Hanoi 2009
Smalltalk  Bar Camp Hanoi 2009Smalltalk  Bar Camp Hanoi 2009
Smalltalk Bar Camp Hanoi 2009
 

Kürzlich hochgeladen

GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSGRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSJoshuaGantuangco2
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPCeline George
 
ROLES IN A STAGE PRODUCTION in arts.pptx
ROLES IN A STAGE PRODUCTION in arts.pptxROLES IN A STAGE PRODUCTION in arts.pptx
ROLES IN A STAGE PRODUCTION in arts.pptxVanesaIglesias10
 
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfErwinPantujan2
 
ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4MiaBumagat1
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxHumphrey A Beña
 
Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Seán Kennedy
 
Active Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdfActive Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdfPatidar M
 
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptxAUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptxiammrhaywood
 
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17Celine George
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)lakshayb543
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxAnupkumar Sharma
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfJemuel Francisco
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Celine George
 
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxQ4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxlancelewisportillo
 
ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...
ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...
ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...JojoEDelaCruz
 

Kürzlich hochgeladen (20)

GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSGRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERP
 
ROLES IN A STAGE PRODUCTION in arts.pptx
ROLES IN A STAGE PRODUCTION in arts.pptxROLES IN A STAGE PRODUCTION in arts.pptx
ROLES IN A STAGE PRODUCTION in arts.pptx
 
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
 
ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
 
Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...
 
Active Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdfActive Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdf
 
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptxFINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
 
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptxYOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
 
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptxAUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
 
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
 
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptxLEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
 
YOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptx
YOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptxYOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptx
YOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptx
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17
 
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxQ4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
 
ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...
ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...
ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...
 

Pharo, an innovative and open-source Smalltalk

Hinweis der Redaktion

  1. Preferences setDemoFonts