scala: object-oriented and functional programming combined · scala: object-oriented and functional...

Post on 04-Jun-2020

16 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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 eivind.waaler@bekk.no

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

top related