+ All Categories
Home > Technology > Scala - A Scalable Language

Scala - A Scalable Language

Date post: 17-May-2015
Category:
Upload: pfleidi
View: 6,456 times
Download: 0 times
Share this document with a friend
Popular Tags:
26
Scala - A Scalable Language Sven Pfleiderer HdM Stuttgart, Medieninformatik 18. Mai 2010
Transcript
Page 1: Scala - A Scalable Language

Scala - A Scalable Language

Sven Pfleiderer

HdM Stuttgart, Medieninformatik

18. Mai 2010

Page 2: Scala - A Scalable Language

0.

Gliederung

1 Scala im Überblick

2 Scala und Java

3 Syntax

4 OOP in Scala

5 Funktionale Programmierung in Scala

6 Anwendungsgebiete

7 Wrap Up

Sven Pfleiderer Scala - A Scalable Language

Page 3: Scala - A Scalable Language

1. Scala im Überblick

Gliederung

1 Scala im Überblick

2 Scala und Java

3 Syntax

4 OOP in Scala

5 Funktionale Programmierung in Scala

6 Anwendungsgebiete

7 Wrap Up

Sven Pfleiderer Scala - A Scalable Language

Page 4: Scala - A Scalable Language

1. Scala im Überblick Geschichte

Geschichte

Entwickelt von Martin OderskyErste Version: 2003Wahrnehmbare Verbreitung seit 2006 mit Version 2.0Beeinflusst von Java, Pizza, Haskell, Erlang, ML, Smalltalk, SchemeAktuelle Versionen: 2.7.7, 2.8 RC2

Sven Pfleiderer Scala - A Scalable Language

Page 5: Scala - A Scalable Language

1. Scala im Überblick Konzepte

Konzepte

Hybridsprache die OOP und funktionale Programmierung kombiniertSowohl kompiliert als auch interpretiert ausführbarKleiner SprachkernAPIs/DSLs, die sich wie native Syntax verhaltenInteroperabel mit JavaType InferenceAusdrucksstarke Sprachkonstrukte -> Weniger Code“Statically typed dynamic language”

Sven Pfleiderer Scala - A Scalable Language

Page 6: Scala - A Scalable Language

2. Scala und Java

Gliederung

1 Scala im Überblick

2 Scala und Java

3 Syntax

4 OOP in Scala

5 Funktionale Programmierung in Scala

6 Anwendungsgebiete

7 Wrap Up

Sven Pfleiderer Scala - A Scalable Language

Page 7: Scala - A Scalable Language

2. Scala und Java Gemeinsamkeiten

Gemeinsamkeiten

Entwickelt für Virtuelle MaschinenLauffähig in der Java-VMStatisch typisiertBenutzt Java KlassenbibliothekBenutzt Java Datentypen

Sven Pfleiderer Scala - A Scalable Language

Page 8: Scala - A Scalable Language

2. Scala und Java Unterschiede

Unterschiede

SyntaxFunktionale Sprache“Alles ist ein Objekt”Keine statischen Methoden oder VariablenMethoden und Variablen im selben NamespaceKeine Operatoren sondern MethodenaufrufeTraits statt InterfacesDateinamen müssen nicht mit Klassennamen übereinstimmen

Sven Pfleiderer Scala - A Scalable Language

Page 9: Scala - A Scalable Language

3. Syntax

Gliederung

1 Scala im Überblick

2 Scala und Java

3 Syntax

4 OOP in Scala

5 Funktionale Programmierung in Scala

6 Anwendungsgebiete

7 Wrap Up

Sven Pfleiderer Scala - A Scalable Language

Page 10: Scala - A Scalable Language

3. Syntax Hallo Welt

Hallo Welt

Listing 1: HelloWorld.scala1 ob j e c t He l l oWor ld { // S i n g l e t o n Object2 def main ( a r g s : Ar ray [ S t r i n g ] ) {3 va r i : I n t = 3 ;4 i = i + 25 va r x : I n t = 1.+(3)6 p r i n t l n ( " He l l o , wor ld ! " )7 p r i n t l n ( " i="+i+" , x="+x )8 }9 }

Sven Pfleiderer Scala - A Scalable Language

Page 11: Scala - A Scalable Language

3. Syntax Variablen und Wertzuweisung

Variablen und Wertzuweisung

Listing 2: Vars.scala1 va r x = 52 x = x + 13

4 va r y : I n t = 425

6 v a l foo = " I n f e r e d S t r i n g "7 f oo = "New S t r i n g " //won ’ t comp i l e8

9 l a z y v a l myPair : Pa i r [ I n t , S t r i n g ] =10 new Pa i r [ I n t , S t r i n g ] ( 1 , " s c a l a " )11

12 v a l s h o r t P a i r = new Pa i r (1 , " s c a l a " )

Sven Pfleiderer Scala - A Scalable Language

Page 12: Scala - A Scalable Language

3. Syntax Variablen und Wertzuweisung

Klassen und Methodendefinition

Listing 3: Class.scala1 // pa ramete r s p r i v a t e2 c l a s s I tem ( v a l name : S t r i ng , p r i c e : Double ) {3 p r i v a t e va r i q u a n t i t y = 04

5 def quan t i t y : I n t = i q u a n t i t y6 def otherMethod : S t r i n g = { " He l l o Method" }7 def doNothing : Un i t = { /∗ Nothing ∗/ }8

9 def add ( toAdd : I n t ) = {10 i q u a n t i t y = i q u a n t i t y + toAdd11 // i m p l i c i t return the c u r r e n t q u an t i t y12 quan t i t y13 }14 }

Sven Pfleiderer Scala - A Scalable Language

Page 13: Scala - A Scalable Language

4. OOP in Scala

Gliederung

1 Scala im Überblick

2 Scala und Java

3 Syntax

4 OOP in Scala

5 Funktionale Programmierung in Scala

6 Anwendungsgebiete

7 Wrap Up

Sven Pfleiderer Scala - A Scalable Language

Page 14: Scala - A Scalable Language

4. OOP in Scala Allgemeines

Allgemeines

Parametrisierte Klassen“Mix-in” von TraitsErweitertes Paketsystempublic/private/protected Memberspublic ist StandardKein "package local"

Sven Pfleiderer Scala - A Scalable Language

Page 15: Scala - A Scalable Language

4. OOP in Scala Vererbung in Scala

Vererbung in Scala

Listing 4: Inheritance.scala1 c l a s s Person ( v a l f i r s tName : S t r i ng ,2 v a l lastName : S t r i ng , v a l age : I n t ) {3 o v e r r i d e def t o S t r i n g = " . . . "+f i r s tName+" . . . "4 def doSomething = {} // wa i t . . . what ?5 }6

7 c l a s s Student ( f i r s tName : S t r i ng , lastName : S t r i ng ,8 age : I n t ) e x t end s Person ( f i r s tName , lastName , age )9 {

10 o v e r r i d e def doSomething = {11 System . out . p r i n t l n ( " I ’m s t ud y i n g hard . " )12 }13 }

Sven Pfleiderer Scala - A Scalable Language

Page 16: Scala - A Scalable Language

4. OOP in Scala Verwendung von Traits

Verwendung von Traits

Listing 5: Traits.scala1 t r a i t S i m i l a r i t y {2 def i s S i m i l a r ( x : Any ) : Boolean3 def i s N o t S im i l a r ( x : Any ) : Boolean = ! i s S i m i l a r ( x )4 }5

6 c l a s s Tes tC l a s s e x t end s S i m i l a r i t y {7 . . .8 def i s S i m i l a r . . .9 }

10

11 c l a s s Tes tC l a s s e x t end s Othe rC l a s s w i th S i m i l a r i t y {12 . . .13 }

Sven Pfleiderer Scala - A Scalable Language

Page 17: Scala - A Scalable Language

4. OOP in Scala Singleton Objects

Singleton Objects

Alternative zu statischen MembersWird gewöhnlich als “Companion-Object” verwendetKein Zugriff auf InstanzvariablenKeine ParameterWird eingeleitet durch Schlüsselwort objectSyntax: object Objectname { def hello = "hello"}

Sven Pfleiderer Scala - A Scalable Language

Page 18: Scala - A Scalable Language

5. Funktionale Programmierung in Scala

Gliederung

1 Scala im Überblick

2 Scala und Java

3 Syntax

4 OOP in Scala

5 Funktionale Programmierung in Scala

6 Anwendungsgebiete

7 Wrap Up

Sven Pfleiderer Scala - A Scalable Language

Page 19: Scala - A Scalable Language

5. Funktionale Programmierung in Scala Function Literals

Function Literals

Funktionen sind selbst Werte und werden als solche behandeltKönnen anderen Funktionen übergeben werdenKönnen von anderen Funktionen zurück gegeben werdenKönnen Variablen zugewiesen werdenSyntax: (parameter: String) => { println(parameter) }

Sven Pfleiderer Scala - A Scalable Language

Page 20: Scala - A Scalable Language

5. Funktionale Programmierung in Scala Function Literals

Einfache DSL mit Function Literals

Listing 6: DSL.scala1 dont {2 p r i n t l n ( " He l l o ? Can anyone hea r me? " ) ;3 }4

5 dont {6 p r i n t l n ( "Yep , 2 r e a l l y i s g r e a t e r than 1 . " )7 } un less (2 > 1)8

9 dont {10 p r i n t l n ( "Done coun t i ng to 5 ! " )11 } un t i l ( nextNumber ( ) == 5)

Sven Pfleiderer Scala - A Scalable Language

Page 21: Scala - A Scalable Language

5. Funktionale Programmierung in Scala Function Literals

Einfache DSL mit Function Literals

Listing 7: Dont.scala1 def dont ( code : => Uni t ) = new DontCommand( code )2

3 c l a s s DontCommand( code : => Uni t ) {4 def un less ( c o n d i t i o n : => Boolean ) =5 i f ( c o n d i t i o n ) code6

7 def u n t i l ( c o n d i t i o n : => Boolean ) = {8 whi le ( ! c o n d i t i o n ) {}9 code

10 }11 }

Sven Pfleiderer Scala - A Scalable Language

Page 22: Scala - A Scalable Language

6. Anwendungsgebiete

Gliederung

1 Scala im Überblick

2 Scala und Java

3 Syntax

4 OOP in Scala

5 Funktionale Programmierung in Scala

6 Anwendungsgebiete

7 Wrap Up

Sven Pfleiderer Scala - A Scalable Language

Page 23: Scala - A Scalable Language

6. Anwendungsgebiete

Anwendungsgebiete

WebentwicklungVerteilte SystemeMobile ApplikationenTwitter: Backend WebservicesFoursquare: Lift FrameworkJava Ersatz?

Sven Pfleiderer Scala - A Scalable Language

Page 24: Scala - A Scalable Language

7. Wrap Up

Gliederung

1 Scala im Überblick

2 Scala und Java

3 Syntax

4 OOP in Scala

5 Funktionale Programmierung in Scala

6 Anwendungsgebiete

7 Wrap Up

Sven Pfleiderer Scala - A Scalable Language

Page 25: Scala - A Scalable Language

7. Wrap Up

Referenzen

http://www.scala-lang.org/http://www.scala-lang.org/node/1658Programming in Scala ISBN: 0981531601http://www.artima.com/scalazinehttp://liftweb.nethttp://lexandera.com/2009/11/dont-in-scala/

Sven Pfleiderer Scala - A Scalable Language

Page 26: Scala - A Scalable Language

7. Wrap Up

Fragen?

Sven Pfleiderer Scala - A Scalable Language


Recommended