Scala (programspråk)
| Scala | |
| Paradigm | multi-paradigm: funktionell, objektorienterad, imperativ |
|---|---|
| Gavs ut | 2003 |
| Skapat av | Martin Odersky |
| Utvecklare | Programming Methods Laboratory of EPFL |
| Senaste version | 2.9.2 (Mall:Release date[1]) |
| Datatypsdisciplin | static, strong, inferred, structural |
| Influerat av | Java, Pizza,[2] Haskell, Erlang, Standard ML, Objective Caml, Smalltalk, Scheme |
| Influerat | Fantom, Ceylon |
| OS | JVM, CLR |
| Licens | BSD |
| Webbplats | www.scala-lang.org |
Scala är ett programspråk som förenar funktionell programmering med objektorientering. Namnet står för skalbart språk (eng. scalable language), i betydelsen att språket är avsett att kunna växa med användarnas behov. Den främsta fördelen är att källkoden i allmänhet blir kompakt - ungefär hälften mot motsvarande Javaprogram.
Programmen kompileras till bytekod som exekveras på Javas virtuella maskin. Ett Scalaprogram kan därför anropa Javabibliotek, vilket gör det möjligt att gradvis övergå från Java till Scala. Det är också med smärre begränsningar möjligt för Javaprogram att använda Scalaklasser. Interoperabiliteten gör att Scalas bytekod kan dekompileras så att den blir läsbar Javakod, med undantag för några konstruktoroperationer, och att Scalakoden kör ett eller flera extra runtime-bibliotek till exempel scala-library.jar.
Utvecklingen av Scala påbörjades av Martin Odersky 2001, och språket släpptes 2003 eller tidigt 2004 på Javaplattformen. En version för .NET-plattformen släpptes 2004, men den har inte uppdaterats. Version 2.0 släpptes mars 2006.
Det som utmärker Scala är:
- Öppen källkod - kompilatorer och bibliotek är släppta under BSD-licens.
- Rent objektorienterat språk - varje värde är ett objekt och varje datatyp en klass. Språket innefattar arv.
- Traits och object composition ökar möjligheterna att återanvända kod. På så sätt kan man kompensera för att den underliggande JVM-plattformen saknar multipelt arv.
- Funktionell programmering - innefattande anonyma funktioner, högre ordningens funktioner (där funktioner kan vara argument och/eller resultat), closures, currying
- Ett kraftfullt typsystem, med statisk och stark typning, samt typ-inferens
- Mönsterigenkänning (Pattern matching)
- Överlagrade operatorer
- Fullt stöd för XML i Scala-koden
- Lift - ett kraftfullt webbapplikationsramverk. På samma sätt som att Ruby on Rails-applikationer är skrivna i språket Ruby, så är Lift-applikationer skrivna i Scala.
- Ett actors-bibliotek som liknar det i det funktionella språket Erlang
- Prestanda som ofta står sig väl i jämförelse med Java
Scala lämpar sig dessutom väl för att skapa domänspecifika språk (DSL). De vanligaste datastrukturerna är oföränderliga (immutable) vilket är en fördel för flertrådiga program.
Noter [redigera]
- ^ ”Scala 2.9.2 final”. 2012-04-13. http://www.scala-lang.org/node/12603. Läst 14 juli 2012.
- ^ Martin Odersky et al., An Overview of the Scala Programming Language, 2nd Edition
Externa länkar [redigera]
- Den officiella webben för Scala
- En mycket bra jämförelse mellan hur man gör i Scala jämfört med Java
- Ted Newards artiklar om Scala på IBM developerWorks
- Den officiella aggregeringen av bloggar om Scala
Böcker om Scala [redigera]
- Suereth, Joshua D. (Spring, 2011). Scala in Depth. Manning Publications. Sid. 225. ISBN 9781935182702. http://www.manning.com/suereth/
- Meredith, Gregory (?, 2011), Monadic Design Patterns for the Web (utgåva 1st), ?, s. 300, ISBN X, http://github.com/leithaus/XTrace/blob/monadic/src/main/book/content/monadic.pdf
- Raychaudhuri, Nilanjan (Spring 2010), Scala in Action (utgåva 1st), [Manning, s. 525, ISBN 9781935182757, http://www.manning.com/raychaudhuri/
- Wampler, Dean; Payne, Alex (September 15, 2009), Programming Scala: Scalability = Functional Programming + Objects (utgåva 1st), O'Reilly Media, s. 448, ISBN 0596155956, http://oreilly.com/catalog/9780596155957/
- Odersky, Martin; Spoon, Lex; Venners, Bill (November 26, 2008), Programming in Scala: A Comprehensive Step-by-step Guide (utgåva 1st), Artima Inc, s. 776, ISBN 0981531601, http://www.artima.com/shop/programming_in_scala
- Pollak, David (May 25, 2009), Beginning Scala (utgåva 1st), Apress, s. 776, ISBN 1430219890, http://www.apress.com/book/view/9781430219897/
- Perrett, Tim (April 2010), Lift in Action (utgåva 1st), Manning, s. 450, ISBN 9781935182801, http://www.manning.com/perrett/
- Loverdos, Christos; Syropoulos, Apostolos (September 2010), Steps in Scala: An Introduction to Object-Functional Programming (utgåva 1st), Cambridge University Press, s. xviii + 485, ISBN 9780521747585, http://www.cambridge.org/gb/knowledge/isbn/item2713441/?site_locale=en_GB
- Subramaniam, Venkat (July 28, 2009), Programming Scala: Tackle Multi-Core Complexity on the Java Virtual Machine (utgåva 1st), Pragmatic Bookshelf, s. 250, ISBN 193435631X, http://www.pragprog.com/titles/vsscala/programming-scala
- Payne, Alex; Wampler, Dean (2009), Programming Scala, Sebastopol, CA: O'Reilly Media, Inc, ISBN 0-596-15595-6, http://programming-scala.labs.oreilly.com/
- Kullberg, Olle; Klang, Viktor; Lundberg, Örjan (2011), Ett första steg i Scala, Stockholm, Sweden: Studentlitteratur AB, ISBN 9789144068084, http://www.studentlitteratur.se/o.o.i.s?id=2474&artnr=33847-01&csid=66&mp=4918
- Odersky, Martin; Spoon, Lex; Venners, Bill (December 8, 2010), Programming in Scala: A Comprehensive Step-by-step Guide (utgåva 2nd), Artima Inc, s. 852, ISBN 0981531601, http://www.artima.com/shop/programming_in_scala
- Haller, Philipp; Sommers, Frank (2011), Actors in Scala, Walnut Creek, California: Artima Inc, ISBN 9780981531656, http://www.artima.com/shop/actors_in_scala