Your SlideShare is downloading. ×
0
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Scala - A Scalable Language
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Scala - A Scalable Language

6,453

Published on

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

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

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  1. Scala - A Scalable Language Sven Pfleiderer HdM Stuttgart, Medieninformatik 18. Mai 2010
  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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 6. Anwendungsgebiete Anwendungsgebiete Webentwicklung Verteilte Systeme Mobile Applikationen Twitter: Backend Webservices Foursquare: Lift Framework Java Ersatz? Sven Pfleiderer Scala - A Scalable Language
  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. 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. 7. Wrap Up Fragen? Sven Pfleiderer Scala - A Scalable Language

×