the pharo smalltalkbergel.eu/pharo.pdfpharo in a nutshell pharo = language + ide + update mechanism...

21
The Pharo Smalltalk http://www.pharo-project.org

Upload: others

Post on 02-Jan-2021

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: The Pharo Smalltalkbergel.eu/Pharo.pdfPharo in a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open

The Pharo Smalltalkhttp://www.pharo-project.org

Page 2: The Pharo Smalltalkbergel.eu/Pharo.pdfPharo in a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open

Pharo in a nutshell

Pharo = language + IDE + update mechanism

Pure object-oriented programming language

Dynamically typed and trait-based

Open and flexible environment (OB, Polymorph, Scripting)

Used as the executing platform for Seaside

Page 3: The Pharo Smalltalkbergel.eu/Pharo.pdfPharo in a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open

Getting started with Pharo

Page 4: The Pharo Smalltalkbergel.eu/Pharo.pdfPharo in a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open

Everything is an object

Page 5: The Pharo Smalltalkbergel.eu/Pharo.pdfPharo in a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open

Everything happens by sending messages

Page 6: The Pharo Smalltalkbergel.eu/Pharo.pdfPharo in a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open

Running Pharo

Page 7: The Pharo Smalltalkbergel.eu/Pharo.pdfPharo in a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open

Do it, print it

You can evaluateany expression

anywherein Pharo

Page 8: The Pharo Smalltalkbergel.eu/Pharo.pdfPharo in a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open

Standard development tools

Page 9: The Pharo Smalltalkbergel.eu/Pharo.pdfPharo in a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open

Standard development tools

Page 10: The Pharo Smalltalkbergel.eu/Pharo.pdfPharo in a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open

Debugger, explorer, inspector

Page 11: The Pharo Smalltalkbergel.eu/Pharo.pdfPharo in a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open

Syntax in a nutshell

Page 12: The Pharo Smalltalkbergel.eu/Pharo.pdfPharo in a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open

3 kinds of messages

Unary messages

Binary messages

Keyword messages

5 factorialTranscript cr

3 + 4

3 raisedTo: 10 modulo: 5

Transcript show: 'hello world'

Page 13: The Pharo Smalltalkbergel.eu/Pharo.pdfPharo in a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open

<= aPoint "Answer whether the receiver is neither below nor to the right of aPoint."

^ x <= aPoint x and: [y <= aPoint y]

A typical method in PointMethod name Argument Comment

Return Binary messageKeyword messageInstance variable

Block

(2@3) <= (5@6) true

Page 14: The Pharo Smalltalkbergel.eu/Pharo.pdfPharo in a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open

Statement and cascades

Temporary variablesStatement

Cascade

| p pen |p := [email protected] := Pen new.pen up.pen goto: p; down; goto: p+p

Page 15: The Pharo Smalltalkbergel.eu/Pharo.pdfPharo in a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open

Control structures

Every control structure is realized by message sends

4 timesRepeat: [Beeper beep]

max: aNumber ^ self < aNumber ifTrue: [aNumber] ifFalse: [self]

Page 16: The Pharo Smalltalkbergel.eu/Pharo.pdfPharo in a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open

Control structures

Every control structure is realized by message sends

4 timesRepeat: [Beeper beep]

max: aNumber ^ self < aNumber ifTrue: [aNumber] ifFalse: [self]

ifTrue:ifFalse:

Boolean

ifTrue:ifFalse:

True

ifTrue:ifFalse:

False

ifTrue: t ifFalse: f

^ t value

ifTrue: t ifFalse: f

^ f value

Page 17: The Pharo Smalltalkbergel.eu/Pharo.pdfPharo in a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open

Creating classesSend a message to a class (!)

Number subclass: #Complex instanceVariableNames: 'real imaginary' classVariableNames: '' poolDictionaries: '' category: 'ComplexNumbers'

Page 18: The Pharo Smalltalkbergel.eu/Pharo.pdfPharo in a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open

How to join?

Page 19: The Pharo Smalltalkbergel.eu/Pharo.pdfPharo in a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open

Join Pharo

Strong community

Goal: learning and having fun

We need forces on several topics: graphics programming, compilation, virtual machines

Page 20: The Pharo Smalltalkbergel.eu/Pharo.pdfPharo in a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open

Links

Download: http://code.google.com/p/pharo

Mailing list: http://gforge.inria.fr/mail/?group_id=1299

Page 21: The Pharo Smalltalkbergel.eu/Pharo.pdfPharo in a nutshell Pharo = language + IDE + update mechanism Pure object-oriented programming language Dynamically typed and trait-based Open