Scala (programspråk)

Från Wikipedia
Hoppa till: navigering, sö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
Platform 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 exekverasJavas 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 | redigera wikitext]

  1. ^ ”Scala 2.9.2 final”. 2012-04-13. http://www.scala-lang.org/node/12603. Läst 14 juli 2012. 
  2. ^ Martin Odersky et al., An Overview of the Scala Programming Language, 2nd Edition

Externa länkar[redigera | redigera wikitext]

Böcker om Scala[redigera | redigera wikitext]