Scala - A Scalable Language

         Sven Pfleiderer

   HdM Stuttgart, Medieninformatik


          18. Mai 2010
0.


Gliederung

1   Scala im Überblick

2   Scala und Java

3   Syntax

4   OOP in Scala

5   Funktionale Programmierung ...
1. Scala im Überblick


Gliederung

1   Scala im Überblick

2   Scala und Java

3   Syntax

4   OOP in Scala

5   Funktion...
1. Scala im Überblick    Geschichte


Geschichte




   Entwickelt von Martin Odersky
   Erste Version: 2003
   Wahrnehmba...
1. Scala im Überblick    Konzepte


Konzepte



   Hybridsprache die OOP und funktionale Programmierung kombiniert
   Sowo...
2. Scala und Java


Gliederung

1   Scala im Überblick

2   Scala und Java

3   Syntax

4   OOP in Scala

5   Funktionale ...
2. Scala und Java     Gemeinsamkeiten


Gemeinsamkeiten




   Entwickelt für Virtuelle Maschinen
   Lauffähig in der Java-...
2. Scala und Java       Unterschiede


Unterschiede



   Syntax
   Funktionale Sprache
   “Alles ist ein Objekt”
   Keine...
3. Syntax


Gliederung

1   Scala im Überblick

2   Scala und Java

3   Syntax

4   OOP in Scala

5   Funktionale Programm...
3. Syntax      Hallo Welt


    Hallo Welt


                                Listing 1: HelloWorld.scala
1   o b j e c t H...
3. Syntax      Variablen und Wertzuweisung


     Variablen und Wertzuweisung

                                    Listing...
3. Syntax      Variablen und Wertzuweisung


     Klassen und Methodendefinition

                                    Listi...
4. OOP in Scala


Gliederung

1   Scala im Überblick

2   Scala und Java

3   Syntax

4   OOP in Scala

5   Funktionale Pr...
4. OOP in Scala     Allgemeines


Allgemeines




   Parametrisierte Klassen
   “Mix-in” von Traits
   Erweitertes Paketsy...
4. OOP in Scala     Vererbung in Scala


     Vererbung in Scala

                                Listing 4: Inheritance.s...
4. OOP in Scala     Verwendung von Traits


     Verwendung von Traits

                                    Listing 5: Tra...
4. OOP in Scala     Singleton Objects


Singleton Objects




   Alternative zu statischen Members
   Wird gewöhnlich als ...
5. Funktionale Programmierung in Scala


Gliederung

1   Scala im Überblick

2   Scala und Java

3   Syntax

4   OOP in Sc...
5. Funktionale Programmierung in Scala     Function Literals


Function Literals




    Funktionen sind selbst Werte und ...
5. Funktionale Programmierung in Scala     Function Literals


     Einfache DSL mit Function Literals


                 ...
5. Funktionale Programmierung in Scala     Function Literals


     Einfache DSL mit Function Literals


                 ...
6. Anwendungsgebiete


Gliederung

1   Scala im Überblick

2   Scala und Java

3   Syntax

4   OOP in Scala

5   Funktiona...
6. Anwendungsgebiete


Anwendungsgebiete




   Webentwicklung
   Verteilte Systeme
   Mobile Applikationen
   Twitter: Ba...
7. Wrap Up


Gliederung

1   Scala im Überblick

2   Scala und Java

3   Syntax

4   OOP in Scala

5   Funktionale Program...
7. Wrap Up


Referenzen




   http://www.scala-lang.org/
   http://www.scala-lang.org/node/1658
   Programming in Scala I...
7. Wrap Up


Fragen?




          Sven Pfleiderer   Scala - A Scalable Language
Upcoming SlideShare
Loading in...5
×

Scala - A Scalable Language

6,468

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,468
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
30
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Scala - A Scalable Language

  1. 1. Scala - A Scalable Language Sven Pfleiderer HdM Stuttgart, Medieninformatik 18. Mai 2010
  2. 2. 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
  3. 3. 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
  4. 4. 1. Scala im Überblick Geschichte Geschichte Entwickelt von Martin Odersky Erste Version: 2003 Wahrnehmbare Verbreitung seit 2006 mit Version 2.0 Beeinflusst von Java, Pizza, Haskell, Erlang, ML, Smalltalk, Scheme Aktuelle Versionen: 2.7.7, 2.8 RC2 Sven Pfleiderer Scala - A Scalable Language
  5. 5. 1. Scala im Überblick Konzepte Konzepte Hybridsprache die OOP und funktionale Programmierung kombiniert Sowohl kompiliert als auch interpretiert ausführbar Kleiner Sprachkern APIs/DSLs, die sich wie native Syntax verhalten Interoperabel mit Java Type Inference Ausdrucksstarke Sprachkonstrukte -> Weniger Code “Statically typed dynamic language” Sven Pfleiderer Scala - A Scalable Language
  6. 6. 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
  7. 7. 2. Scala und Java Gemeinsamkeiten Gemeinsamkeiten Entwickelt für Virtuelle Maschinen Lauffähig in der Java-VM Statisch typisiert Benutzt Java Klassenbibliothek Benutzt Java Datentypen Sven Pfleiderer Scala - A Scalable Language
  8. 8. 2. Scala und Java Unterschiede Unterschiede Syntax Funktionale Sprache “Alles ist ein Objekt” Keine statischen Methoden oder Variablen Methoden und Variablen im selben Namespace Keine Operatoren sondern Methodenaufrufe Traits statt Interfaces Dateinamen müssen nicht mit Klassennamen übereinstimmen Sven Pfleiderer Scala - A Scalable Language
  9. 9. 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
  10. 10. 3. Syntax Hallo Welt Hallo Welt Listing 1: HelloWorld.scala 1 o b j e c t H e l l o W o r l d { // S i n g l e t o n O b j e c t 2 def main ( a r g s : A r r a y [ S t r i n g ] ) { 3 var i : Int = 3; 4 i = i + 2 5 var x : I n t = 1.+(3) 6 p r i n t l n ( " Hello , world ! " ) 7 p r i n t l n ( " i="+i+" , x="+x ) 8 } 9 } Sven Pfleiderer Scala - A Scalable Language
  11. 11. 3. Syntax Variablen und Wertzuweisung Variablen und Wertzuweisung Listing 2: Vars.scala 1 var x = 5 2 x = x + 1 3 4 v a r y : I n t = 42 5 6 val foo = " I n f e r e d String " 7 f o o = "New S t r i n g " //won ’ t c o m p i l e 8 9 l a z y v a l myPair : P a i r [ I n t , S t r i n g ] = 10 new P a 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 P a i r ( 1 , " s c a l a " ) Sven Pfleiderer Scala - A Scalable Language
  12. 12. 3. Syntax Variablen und Wertzuweisung Klassen und Methodendefinition Listing 3: Class.scala 1 // p a r a m e t e r s p r i v a t e 2 c l a s s I t e m ( v a l name : S t r i n g , p r i c e : Double ) { 3 p r i v a t e var i q u a n t i t y = 0 4 5 def q u a n t i t y : I n t = i q u a n t i t y 6 def o t h e r M e t h o d : S t r i n g = { " H e l l o Method " } 7 def d o N o t h i n g : U n i t = { /∗ N o t h i n g ∗/ } 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 + toAdd 11 // i m p l i c i t r e t u r n t h e c u r r e n t q u a n t i t y 12 quantity 13 } 14 } Sven Pfleiderer Scala - A Scalable Language
  13. 13. 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
  14. 14. 4. OOP in Scala Allgemeines Allgemeines Parametrisierte Klassen “Mix-in” von Traits Erweitertes Paketsystem public/private/protected Members public ist Standard Kein "package local" Sven Pfleiderer Scala - A Scalable Language
  15. 15. 4. OOP in Scala Vererbung in Scala Vererbung in Scala Listing 4: Inheritance.scala 1 c l a s s Person ( v a l firstName : String , 2 v a l l a s t N a m e : S t r i n g , 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 t N a m e+" . . . " 4 def doSomething = {} // w a i t . . . what ? 5 } 6 7 c l a s s Student ( f i r s t N a m e : S t r i n g , lastName : S t r i n g , 8 age : I n t ) e x t e n d s P e r s o n ( f i r s t N a m e , lastName , age ) 9 { 10 o v e r r i d e def doSomething = { 11 System . o u t . p r i n t l n ( " I ’m s t u d y i n g h a r d . " ) 12 } 13 } Sven Pfleiderer Scala - A Scalable Language
  16. 16. 4. OOP in Scala Verwendung von Traits Verwendung von Traits Listing 5: Traits.scala 1 trait Similarity { 2 def i s S i m i l a r ( x : Any ) : B o o l e a n 3 def i s N o t S i m i l a r ( x : Any ) : B o o l e a n = ! i s S i m i l a r ( x ) 4 } 5 6 class TestClass extends 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 class TestClass extends OtherClass with S i m i l a r i t y { 12 ... 13 } Sven Pfleiderer Scala - A Scalable Language
  17. 17. 4. OOP in Scala Singleton Objects Singleton Objects Alternative zu statischen Members Wird gewöhnlich als “Companion-Object” verwendet Kein Zugriff auf Instanzvariablen Keine Parameter Wird eingeleitet durch Schlüsselwort object Syntax: object Objectname { def hello = "hello"} Sven Pfleiderer Scala - A Scalable Language
  18. 18. 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
  19. 19. 5. Funktionale Programmierung in Scala Function Literals Function Literals Funktionen sind selbst Werte und werden als solche behandelt Können anderen Funktionen übergeben werden Können von anderen Funktionen zurück gegeben werden Können Variablen zugewiesen werden Syntax: (parameter: String) => { println(parameter) } Sven Pfleiderer Scala - A Scalable Language
  20. 20. 5. Funktionale Programmierung in Scala Function Literals Einfache DSL mit Function Literals Listing 6: DSL.scala 1 dont { 2 p r i n t l n ( " H e l l o ? Can anyone h e a 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 t h a n 1 . " ) 7 } unless (2 > 1) 8 9 dont { 10 p r i n t l n ( " Done c o u n t i n g t o 5 ! " ) 11 } u n t i l ( nextNumber ( ) == 5 ) Sven Pfleiderer Scala - A Scalable Language
  21. 21. 5. Funktionale Programmierung in Scala Function Literals Einfache DSL mit Function Literals Listing 7: Dont.scala 1 def d o n t ( code : => U n i t ) = new DontCommand ( code ) 2 3 c l a s s DontCommand ( code : => U n i t ) { 4 def u n l e s s ( c o n d i t i o n : => B o o l e a n ) = 5 i f ( c o n d i t i o n ) code 6 7 def u n t i l ( c o n d i t i o n : => B o o l e a n ) = { 8 w h i l e ( ! c o n d i t i o n ) {} 9 code 10 } 11 } Sven Pfleiderer Scala - A Scalable Language
  22. 22. 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
  23. 23. 6. Anwendungsgebiete Anwendungsgebiete Webentwicklung Verteilte Systeme Mobile Applikationen Twitter: Backend Webservices Foursquare: Lift Framework Java Ersatz? Sven Pfleiderer Scala - A Scalable Language
  24. 24. 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
  25. 25. 7. Wrap Up Referenzen http://www.scala-lang.org/ http://www.scala-lang.org/node/1658 Programming in Scala ISBN: 0981531601 http://www.artima.com/scalazine http://liftweb.net http://lexandera.com/2009/11/dont-in-scala/ Sven Pfleiderer Scala - A Scalable Language
  26. 26. 7. Wrap Up Fragen? Sven Pfleiderer Scala - A Scalable Language
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×