Scala (programspråk)

Scala
Paradigmmulti-paradigm: funktionell, objektorienterad, imperativ
Gavs ut2003
Skapat avMartin Odersky vid Tekniska högskolan i Lausanne
UtvecklareProgramming Methods Laboratory of EPFL
Senaste version3.3.1 (9 september 2023[1])
Datatypsdisciplinstatic, strong, inferred, structural
Influerat avJava, Pizza,[2] Haskell, Erlang, Standard ML, Objective Caml, Smalltalk, Scheme
InflueratFantom, Ceylon
PlattformJVM, CLR
LicensBSD
Webbplatswww.scala-lang.org

Scala är ett programspråk som förenar funktionell programmering med objektorientering. Namnet anspelar på att skala, i betydelsen att språket är avsett att kunna växa med användarnas behov.

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.

Kodexempel

Ett program som skriver ut "Hello, world!",

object halsning {
 def main(args: Array[String]) {
  println("Hello, world!")
 }
}

Noter

  1. ^ ”Scala 3.3.1 LTS”. 9 september 2023. https://www.scala-lang.org/download/3.3.1.html. Läst 9 september 2023. 
  2. ^ Martin Odersky et al., An Overview of the Scala Programming Language, 2nd Edition

Externa länkar

Böcker om Scala