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

Scala - A Scalable Language

on

  • 7,165 views

 

Statistics

Views

Total Views
7,165
Views on SlideShare
3,569
Embed Views
3,596

Actions

Likes
1
Downloads
29
Comments
0

21 Embeds 3,596

http://blog.roothausen.de 1971
http://roothausen.de 1447
http://www.roothausen.de 100
https://blog.roothausen.de 40
http://www.slideshare.net 17
http://theoldreader.com 2
http://www.copyscape.com 2
http://dschool.co 2
http://webcache.googleusercontent.com 2
https://www.roothausen.de 2
http://translate.googleusercontent.com 1
http://www.newsblur.com 1
http://www.netvibes.com 1
http://www.ustart.org 1
http://www.blog.roothausen.de 1
http://ranksit.com 1
https://esukram.org 1
http://wonder-tonic.com 1
https://roothausen.de 1
http://cache.baidu.com 1
http://cache.baidu.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Scala - A Scalable Language Scala - A Scalable Language Presentation Transcript

  • 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 in Scala 6 Anwendungsgebiete 7 Wrap Up Sven Pfleiderer 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 6. Anwendungsgebiete Anwendungsgebiete Webentwicklung Verteilte Systeme Mobile Applikationen Twitter: Backend Webservices Foursquare: Lift Framework Java Ersatz? Sven Pfleiderer 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
  • 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
  • 7. Wrap Up Fragen? Sven Pfleiderer Scala - A Scalable Language