SlideShare una empresa de Scribd logo
1 de 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.

Más contenido relacionado

La actualidad más candente

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
 

La actualidad más candente (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
 

Destacado

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
 

Destacado (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
 

Similar a 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
 

Similar a 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...
 

Más de 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
 

Más de 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
 

Último

Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfciinovamais
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Celine George
 
PROCESS RECORDING FORMAT.docx
PROCESS      RECORDING        FORMAT.docxPROCESS      RECORDING        FORMAT.docx
PROCESS RECORDING FORMAT.docxPoojaSen20
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxheathfieldcps1
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibitjbellavia9
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfPoh-Sun Goh
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.MaryamAhmad92
 
Food Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-II
Food Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-IIFood Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-II
Food Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-IIShubhangi Sonawane
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhikauryashika82
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDThiyagu K
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfAdmir Softic
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.pptRamjanShidvankar
 
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...Shubhangi Sonawane
 
ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701bronxfugly43
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptxMaritesTamaniVerdade
 
psychiatric nursing HISTORY COLLECTION .docx
psychiatric  nursing HISTORY  COLLECTION  .docxpsychiatric  nursing HISTORY  COLLECTION  .docx
psychiatric nursing HISTORY COLLECTION .docxPoojaSen20
 
Role Of Transgenic Animal In Target Validation-1.pptx
Role Of Transgenic Animal In Target Validation-1.pptxRole Of Transgenic Animal In Target Validation-1.pptx
Role Of Transgenic Animal In Target Validation-1.pptxNikitaBankoti2
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeThiyagu K
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactPECB
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdfQucHHunhnh
 

Último (20)

Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17
 
PROCESS RECORDING FORMAT.docx
PROCESS      RECORDING        FORMAT.docxPROCESS      RECORDING        FORMAT.docx
PROCESS RECORDING FORMAT.docx
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
 
Food Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-II
Food Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-IIFood Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-II
Food Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-II
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SD
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
 
ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
 
psychiatric nursing HISTORY COLLECTION .docx
psychiatric  nursing HISTORY  COLLECTION  .docxpsychiatric  nursing HISTORY  COLLECTION  .docx
psychiatric nursing HISTORY COLLECTION .docx
 
Role Of Transgenic Animal In Target Validation-1.pptx
Role Of Transgenic Animal In Target Validation-1.pptxRole Of Transgenic Animal In Target Validation-1.pptx
Role Of Transgenic Animal In Target Validation-1.pptx
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and Mode
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 

Pharo, an innovative and open-source Smalltalk

Notas del editor

  1. Preferences setDemoFonts