Scala (programspråk)
programspråk Från Wikipedia, den fria encyklopedin
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.
Scala | |
Paradigm | multi-paradigm: funktionell, objektorienterad, imperativ |
---|---|
Gavs ut | 2003 |
Skapat av | Martin Odersky vid Tekniska högskolan i Lausanne |
Utvecklare | Programming Methods Laboratory of EPFL |
Senaste version | 3.3.1 (9 september 2023[1]) |
Datatypsdisciplin | static, strong, inferred, structural |
Influerat av | Java, Pizza,[2] Haskell, Erlang, Standard ML, Objective Caml, Smalltalk, Scheme |
Influerat | Fantom, Ceylon |
Plattform | JVM, CLR |
Licens | BSD |
Webbplats | www.scala-lang.org |
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.
Kodexempel
Ett program som skriver ut "Hello, world!",
object halsning {
def main(args: Array[String]) {
println("Hello, world!")
}
}
Noter
Externa länkar
Böcker om Scala
Wikiwand - on
Seamless Wikipedia browsing. On steroids.