a. course overview b.introduction to reflection and …cop/material/02... · 2020. 5. 28. ·...
TRANSCRIPT
![Page 1: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/1.jpg)
Today’s Schedule
A. Course OverviewB. Introduction to Reflection
and MetaprogrammingC. Introduction to SmalltalkD. Principles of Reflection
![Page 2: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/2.jpg)
Introduction to Smalltalk*
* slides created with the help of Johan Brichau and Kris Gybels
![Page 3: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/3.jpg)
Smalltalk in a nutshell (1) 3
Pure object-oriented language :– Everything is an object– Objects communicate only by message passing
Class-based language :– Every object is an instance of a class– All classes have a (single) parent class– Object is the root class
Uniform & simple syntax– Forces one to think object-oriented– Syntax fits on a single sheet of paper– Statements read almost like English phrases– Originally designed as a learning environment for children
Dynamically typed Fully reflective language– IDE entirely written (and modifiable) in Smalltalk itself
![Page 4: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/4.jpg)
Smalltalk in a nutshell (2) 4
Platform independent– A runtime environment based on VM technology
Encourages exploratory programming Memory management (garbage collection) A large set of reusable classes
– basic data structures, GUI classes, DB access, internet, graphics, …
Powerful development tools– browsers, GUI builders, inspectors, change management tools, crash
recovery tools, project management tools, unit testing, refactoring, …
Team working environment– releasing, versioning, deploying
Source of inspiration to many other languages and environments– environment, collections, debugger, reflective features
and many development tools
![Page 5: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/5.jpg)
Smalltalk run-time architecture 5
A byte-code interpreter:the virtual machine interpretes the image
IMAGE2.IMIMAGE2.CHA
Standard SOURCES
Shared by everybody
IMAGE1.IMIMAGE1.CHA
All the objects of the systemat a moment in time
One per user
+
Virtual Machine + Image + Changes and Sources
Image = bytecode Sources and changes = code (text)
![Page 6: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/6.jpg)
Smalltalk is a “pure” OO language 6
Pointx, y
Classes
a Pointa Pointxy
a SmallInteger5
a SmallInteger10
Objects
add: a SmallInteger
15Messages
add: extra x := x + extra. y := y + extra.
Methods
![Page 7: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/7.jpg)
Everything is an object 7
a Persona Personname
address
a ByteString‘Kim Mens’
an Addressan Addressstreet
nr
a ByteString‘Pl. Sainte Barbe’
a SmallInteger2
Objects have state
![Page 8: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/8.jpg)
Everything is an object 8
Workspaces, windows, text editors, scrollbars, ... are all objects. ‘hello word’ is an object: it is an instance of String. #show: is a Symbol that is also an object. Numbers are instances of classes: 1 is instance of Integer Booleans are instances of their class: true is instance of class
True The parser, compiler and garbage collector are objects. Even classes are objects themselves Smalltalk is a consistent, uniform world written in itself. You can
learn how it is implemented, you can extend it or even modify it. All the code is available and readable.
– Smalltalk is a fully reflective language
![Page 9: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/9.jpg)
Basic Smalltalk Expressions 9
Literals
Variable Reference
Message Expressions
Return Expressions
Block Expressions
1234
someObject
someObject doSomethingWith: 1234
^ someObject print: ‘Johan’
$a #Johan ‘Kim’ #(#a #b)
a GlobalVariable
[ :x :y | x + y ]
1 + 2 ‘Kim’ , ‘Mens’ #(#a #b) first
![Page 10: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/10.jpg)
Literal Expressions 10
a ByteString‘Pleinlaan’
a SmallInteger42
a ByteSymbol#Brussels
a Character$a
‘Pleinlaan’!
= = = =
42! #Brussels! $a!
#(1 #a $c)
!
an Arrayan Array123
= a SmallInteger1
a Character$c
a ByteSymbol
#a
![Page 11: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/11.jpg)
Time to get your hands dirty ... 11
Exercise session “Introduction to Smalltalk” Exercise 1
predict the result of some basic Smalltalk expressions and evaluate them
![Page 12: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/12.jpg)
Objects communicate using message sending 12
a SmallInteger
15
add:
Objects can besent messages ...
add: extra x := x + extra. y := y + extra.
... and reply byexecuting a method
!+
a SmallInteger
5
a SmallInteger
10
a Pointa Pointxy
a SmallInteger
25
+
a SmallInteger
20
![Page 13: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/13.jpg)
Objects communicate using message sending 13
A message is a request to an object to do something
A method is piece of source code belonging to a class
Transcript show: ‘hello world’
The above expression is a message
– Transcript is a global variable containing a Stream object that represents a “console” window.
– show: ‘hello world’ is a message sent to a Stream object
• The stream object (value of Transcript) is the receiver of the message
• #show: is the selector of the message
• the string ‘hello world’ is the (actual) argument of the message
![Page 14: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/14.jpg)
Objects communicate using message sending 14
An object executes a method when it receives a message.
‘hello world’ reverse
– Object ‘hello world’ receives a request to reverse itself
– Method reverse is defined on the class String
– Executing this method returns a new string ‘dlrow olleh’
Transcript show: ‘hello world’
– Object Transcript receives a request to show a string and results in the string being printed on the transcript window.
Message passing or sending a message is similar to – invoking a method in Java or C++
– calling a procedure in procedural languages
– applying a function in functional languages
![Page 15: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/15.jpg)
Try it... 15
![Page 16: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/16.jpg)
Three kinds of messages 16
a SomeObjecta SomeObjectsomeVar
+ add: with:
a Number42
a Number100
printYourself
![Page 17: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/17.jpg)
Unary messages
printString an Assistantan Assistantname
a ByteString‘Johan Brichau’
=a ByteString‘Brichau J.’
selector is alphabetic nameno arguments
selector is printString
![Page 18: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/18.jpg)
Unary messages
42 cos
!
cos a SmallInteger
42
=
a Float
-0.399985
=
![Page 19: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/19.jpg)
Binary messages 19
a SmallInteger10
+
a SmallInteger42
selector is one or two special charactersexactly one argument (and one receiver)
![Page 20: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/20.jpg)
a ByteStringBoo’
Keyword messages
a SomeObjecta SomeObjectsomeVar
add: with: andPrint:
a SmallInteger42
a SmallInteger100
Selector is sequence of names (keywords)ending in colonOne argument for each keyword
selector is add:with:andPrint:
![Page 21: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/21.jpg)
Time to get your hands dirty ... 21
Exercise session “Introduction to Smalltalk” Exercises 2–5
evaluate some message expressions and indicate the receiver, selector, arguments, message and result
![Page 22: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/22.jpg)
Unary message expressions
42 cos sin=cos a SmallInteger
42
a Float -0.399985
!
sin
=a Float
-0.389405
![Page 23: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/23.jpg)
Binary message expressions 23
1 + 2 cos 1 + (2 cos)=
1 + 2 cos - 3 (1 + (2 cos)) - 3=
1 + 2 cos + 3 (1 + (2 cos)) +3=
1 + 2 * 3 + 4 ((1 + 2) * 3) + 4=
1 + 2 * 3 + 4 1 + (2 * 3) + 4=!
![Page 24: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/24.jpg)
Keyword message expressions 24
Time readFrom: (ReadStream on: ‘1:30:00 pm’)
Time readFrom: ReadStream on: ‘1:30:00 pm’=
![Page 25: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/25.jpg)
Precedence rules 25
2 negated raisedTo: 3 + 2 * 5
is equivalent with
(2 negated) raisedTo: ((3 + 2) * 5)
Unary message >> binary message >> keyword message
Evaluation from left to right There are no specific precedence rules for the
arithmetic or logic operators
![Page 26: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/26.jpg)
Time to get your hands dirty ... 26
Exercise session “Introduction to Smalltalk” Exercises 6–8
on message precedence rules
![Page 27: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/27.jpg)
More exercises ... 27
Exercise session “Introduction to Smalltalk” Exercises 9–15
on symbols, strings and comparisons
![Page 28: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/28.jpg)
Blocks 28
[ :foo :bar |foo + bar ]
! a BlockClosurea BlockClosure=
value: value:
Blocks are “delayed” expressions
Blocks can be sent messages to evaluate the body of the block
[ :foo :bar |foo + bar ] value: 4 value: 2!
= a SmallInteger6
a BlockClosurea BlockClosure
![Page 29: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/29.jpg)
Block expressions 29
[ Transcript show: 'Boo!'] value
ablock := [ :someName | someName asUppercase ].ablock value: 'Kim'
[ :a :b| a + b ] valueWithArguments: (Array with: 1 with: 2)
![Page 30: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/30.jpg)
Hands on ... 30
Exercise session “Introduction to Smalltalk” Exercises 16–19
on Smalltalk code blocks
![Page 31: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/31.jpg)
Control structures
In Java different predefined syntactic constructs like >>, if, for, while, … are hard-coded into the language grammar
In Smalltalk, they are just defined on objects, e.g. :
(>>) bitShift: is just a message sent to numbers
10 bitShift: 2
(if) ifTrue: is just messages sent to a boolean
(1> x) ifTrue: [ … ]
(for) do:, to:do: are just messages to collections or numbers
#(a b c d) do: [:each | Transcript show: each ; cr]
1 to: 10 do: [:each | Transcript show: each printString ]
Advantages :
– Language is extensible (very easy to add “new syntax”)
– Simplicity & orthogonality (uniform language design)
![Page 32: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/32.jpg)
Blocks example: if then else 32
a TrueifTrue: ifFalse:
a BlockClosurea BlockClosure a BlockClosurea BlockClosure
value
![Page 33: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/33.jpg)
Blocks example: if then else 33
a FalseifTrue: ifFalse:
a BlockClosurea BlockClosure a BlockClosurea BlockClosure
value
![Page 34: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/34.jpg)
Blocks 34
true ifTrue: [ Transcript show: ‘yes’ ] ifFalse: [ Transcript show: ‘no’ ]
(a < b ) ifTrue: [ Transcript show: ‘a smaller’ ] ifFalse: [ Transcript show: ‘a not smaller’ ]
Transcript show: ((a < b) ifTrue: [ ‘a’ ] ifFalse: [‘a not’ ]) , ‘ smaller’
![Page 35: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/35.jpg)
Hands on ... 35
Visit the Boolean classes True and False try to understand how the logic operators and, not, or
are implemented try to understand how ifTrue:ifFalse: is implemented
Exercise session “Introduction to Smalltalk” Exercises 20–24
on conditionals and iteration with Smalltalk blocks
![Page 36: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/36.jpg)
Power & Simplicity : Syntax on a Postcard 36
A method that illustrates every part of Smalltalk method syntax except primitives.
uselessMethod: x
|y|
true & false not & (nil isNil)
ifFalse: [self halt].
y := self size + super size.
#($a #a ’a’ 1 1.0)
do: [:each | Transcript
show: (each class name);
show: (each printString);
show: ’ ’].
^ x < y
![Page 37: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/37.jpg)
Power & Simplicity : Syntax on a Postcard 37
This (useless) method illustrates the entire Smalltalk syntax
– messages• unary, binary, and key word messages
• cascaded messages
– variables• arguments and temporaries (local variables) ; no block temporaries
• global variables
• accessing and assigning a variable
• pseudo variables (true, false, nil, self, super)
– instructions• sequence of instructions (.)
• return statement (^)
– blocks (both zero argument and one argument block)
– literals (array, character, symbol, string, integer, float)
![Page 38: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/38.jpg)
Smalltalk Syntax (1) 38
“a comment”
$c $t $e $r $# $@
‘a string’ ‘lulu’ ‘l’’idiot’
#mac #+
#(1 2 3 (1 3) $a 4)
1, 2r101
1.5, 6.03e-34,4, 2.4e7
1/33
true, false
10@120
<primitive: …>
( … )
comment character string symbol array integer (r = radix) real (e = exponent) fraction boolean point VM primitive call parenthesis (precedence)
2r101 = 5 in binary representation
![Page 39: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/39.jpg)
Smalltalk Syntax (2) 39
var := aValue
[:var | |tmp| expr...]
|tmp|
:var
receiver selector
receiver selector arg
receiver kw1: arg1 kw2: arg2
message ; selector; …
message . message
^ message
assignment a block local variable (method / block) block variable unary message binary message keyword message cascading of messages
= sending several messages to the same instance
sequence of instructions return statement
![Page 40: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/40.jpg)
Smalltalk versus Java 40
Smalltalk JavaSyntax Simple Complex
Control structures Defined by the programmer Predefined
Typing Dynamic Static (primitive types, type casts)
Reflection Full reflection Mainly introspection
Garbage collection Yes Yes
Virtual machine Yes Yes
Concurrency Processes Threads
Visibility of variables Protected Public, protected, private
Visibility of methods Public Public, protected, private
Interfaces No Yes
![Page 41: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/41.jpg)
Smalltalk versus Java
Java and C++ have a (too) complex syntax– The constructs for expressing conditionnals, iteration,
arithmetic and so on are predefined in the syntax
– Conditionnals•if (BooleanExpression) { /* do something */ }
•if (BooleanExpression) { /* do something */ }else { /* something else */ }
•case ...
– Iteration•for (i=1; i<length; i++) { /* do something */ }
•while (BooleanExpression) { /* do something */ }
– Arithmetic•2 + 4
•3 * 7
•10 << 2 (bitshift)
![Page 42: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/42.jpg)
Smalltalk versus Java
Smalltalk has a much more simple and uniform syntax– Everything is a message, even
• Conditionnals
• Boolean operators
• Arithmetic operators
• Iteration
– The language is extensible• Define your own language constructs
![Page 43: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/43.jpg)
Hands on ... 43
Finish exercise session “Introduction to Smalltalk” Exercises 25–27
creating a Smalltalk class
![Page 44: A. Course Overview B.Introduction to Reflection and …cop/material/02... · 2020. 5. 28. · Smalltalk in a nutshell (1) 3 Pure object-oriented language : – Everything is an object](https://reader033.vdocuments.site/reader033/viewer/2022052102/603d0090ef303d26b8712f61/html5/thumbnails/44.jpg)
Licence 44
creativecommons.org/licenses/by-nc-sa/3.0