scala: object-oriented and functional programming combined · scala: object-oriented and functional...
TRANSCRIPT
Scala: Object-oriented and functional programming combined
INF3110 - Eivind Barstad Waaler 14.11.2011
Eivind B. Waaler
Fagsjef Java
Systemutvikler og teknoideolog i BEKK. Høgskoleingeniør fra 1998. Master i informatikk UiO 2010.
Today – Scala
INF3110-Scala Side 4
§ What?
§ How!
§ Why?
What?
INF3110-Scala Side 5
§ OO + FP
§ 2001 à 2003 à 2006 à 2011
JVM – The Java Platform
INF3110-Scala Side 6
Java example
INF3110-Scala Side 7
ML example
INF3110-Scala Side 8
Scala basics
INF3110-Scala Side 9
§ No semicolons
§ val/var
§ Type after name
§ Type inference
§ Pure OO
§ REPL
<Demo>
Scala basics
INF3110-Scala Side 10
Functional Programming in Scala
INF3110-Scala Side 11
§ Higher-order functions
§ Anonymous functions
§ Pattern matching
§ For-comprehensions
§ Immutable values
§ Currying
<Demo>
Pattern Matching
INF3110-Scala Side 12
For-comprehensions
INF3110-Scala Side 13
<Demo>
Performance – for vs. while
INF3110-Scala Side 14
§ 1000 x 1000 matrix
– for with yield – 8090 ms
– for without yield – 3507 ms
– while – 1865 ms
Object-oriented Programming in Scala
INF3110-Scala Side 15
§ Classes
§ Singleton objects – like static in Java
§ Traits
– Interface with implementation
– Multiple inheritance
Classes, objects & traits
INF3110-Scala Side 16
<Demo>
Example – Image processing blur filter
INF3110-Scala Side 17
§ Structuring element – se (here 3 x 3 matrix)
§ New point is average of area covered by se
Combining FP + OO
INF3110-Scala Side 18
Need for functions in Java?
INF3110-Scala Side 19
Conclusion
INF3110-Scala Side 20
§ OO + FP combined
§ Statically typed and compiled
§ JVM leverage
§ High complexity?
§ Performance vs. conciseness
§ The new Java?
Questions and more info
INF3110-Scala Side 21
§ Questions?
§ Scala: http://www.scala-lang.org/
§ Embedding Efficient DSLs on the JVM – Eivind B Waaler
– DUO: http://www.duo.uio.no/sok/work.html?WORKID=102094
BEKK CONSULTING AS SKUR 39, VIPPETANGEN. P.O. BOX 134 SENTRUM, 0102 OSLO, NORWAY. WWW.BEKK.NO
Eivind Barstad Waaler Fagsjef
98219322 [email protected]
Fargekode Farge Vekting (veiledende) Kommentar
RGB: 255, 255, 255 Hvit Hovedfarge. Sikrer at foilene i størst mulig grad er oversiktlig og luftige.
RGB: 0, 0, 0 Sort Fontfarge (tekstfarge). Sikrer høy kontrast og god lesbarhet.
RGB: 50, 38, 26 Mørk brun Identitetsfarge. Brukes i illustrasjoner og modeller som alternativ til sort.
RGB: 133, 115, 98 Brun Identitetsfarge. Brukes som overskrift til foiler og i illustrasjoner og modeller etc.
RGB: 203, 192, 183 Lys brun Identitetsfarge. Brukes i illustrasjoner og modeller etc.
RGB: 16, 100, 112 Mørk blå Støttefarge. Brukes forsiktig i illustrasjoner og modeller etc.
RGB: 130, 174, 182 Blå Identitetsfarge. Brukes i illustrasjoner og modeller etc.
RGB: 162, 199, 202 Mellomblå Støttefarge. Brukes i illustrasjoner og modeller etc.
RGB: 194, 216, 215 Lys blå Støttefarge. Brukes i illustrasjoner og modeller etc.
RGB: 240, 78, 82 Rød Spotfarge. Brukes forsiktig for å understreke detaljer i illustrasjoner og modeller etc.
40 %
5 %
15 %
5 %
5 %
15 %
5 %
2,5 %
2,5 %
2,5 %
Fargepalett