Scala | |
---|---|
objektema programlingvo • funkcia programlingvo • multparadigma programlingvo • programlingvo sur Java Virtuala Maŝino • programlingvo | |
Paradigmo: | Objektema, funkcia, struktura, imperativa |
Paradigmo(j): kunrula komputado • funkcia programado • ordonema programado • objektema programado | |
Aperis en: | 2003[1] |
Aŭtoro(j): | Martin Odersky, nun ĉe Svisa Federacia Instituto pri Teknologio Laŭzano |
Aktuala versio: | 2.11.7[2] |
Tipa sistemo: | Statika, forta, protektita, nominativa, manifest-bazita |
Ĉefaj realigoj: | unu |
Kreita sub la influo de: | Java, Eiffel, Pizza, Ruby, Haskell, ML |
Permesilo(j): | angle BSD-simila permesilo |
Retejo: | angle scala-lang.org |
Scala reprezentas kunigon de vaste aplikataj objektemaj konceptoj kun la ĝis 2002 ĉefe akademie uzataj konceptoj de funkcia programado en statike tipsekura formo.
Ĝi heredis sian sintaksan aspekton pere de Java el C. La stirstrukturoj parte tre similas al Java (if, while, try-catch); la for-ripeto kaj la match-disbranĉiĝo havas multe pli grandan uzeblecon ol siaj respondaĵoj en Java. Ĝi heredis la objektorientitajn konceptojn ĉefe de Java, sed ankaŭ plifleksebligis ilin per kapablo enmiksi trajtojn (parte realigitajn interfacojn). Ĝi heredis la tipsistemon de ML kaj la funkcian programadon kun prokrastita elkalkulado de Haskell.
Scala (prononcu skala) estas mallongigo de "scalable language" (pligrandigebla lingvo).
Ĝi ruliĝas sur Java-virtualmaŝinoj kaj povas komforte voki tradukitajn Java-programojn kaj esti vokitaj de ili. Tial ĝi povas uzi la grandegan kvanton de ekzistantaj Java-bibliotekoj.
Varianto por uzado sur la .NET platformo de Microsoft ekzistas, sed ne havas tiom da adeptoj kiel la JVM-varianto.
Scala estas pura objektema programlingvo, ĉar ĉiu valoro en ĝi estas objekto. Datumtipoj kaj kondutoj de objektoj estas difinitaj en klasoj kaj trajtoj. Klasoj estas etendataj per subklasado kaj per fleksebla kombinado de trajtoj, kiu helpas eviti problemojn de pluropa heredado.
Aldone al objektema programado, Scala subtenas funkcian programadon. La lingvo provizas malpezan sintakson por difinado de sennomaj funkcioj, subtenas funkcioj de pli alta ordo, permesas ingitaj funkcioj, kaj karadon. Per ŝlosilvorto lazy eblas malfruigi pravalorizon de valoro ĝis ĝi estos uzata. Disigitaj daŭrigadoj estas subtenataj de versio 2.8.
Jen tradicia Saluton, mondo! programo en Scala:
object SalutonMondo extends App {
println("Saluton, mondo!")
}
Se la programo estos konservita kiel SalutonMondo.scala
, la sekva komando kompilos la dosieron:
> scalac SalutonMondo.scala
Por startigi:
> scala -classpath . SalutonMondo
Scala programoj ankaŭ povas esti startigitaj kiel skriptoj. Ekzemple, la sekva unulinia skripto donos la saman rezulton, kiel antaŭa ekzemplo:
println("Saluton, mondo!")
Por startigi la skripton (konservitan en SalutonMondo2.scala
):
> scala SalutonMondo2.scala