Scala (programlingvo)

El Vikipedio, la libera enciklopedio
Temas pri... Ĉi tiu artikolo temas pri la programlingvo Scala. Por aliaj signifoj vidu la artikolon Scala.
Scala
Logobildo de Scala
Logobildo de 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 programadoobjektema programado
Aperis en: 2003[1]
Aŭtoro(j): Martin Odersky, nun ĉe Svisa Federacia Instituto pri Teknologio Laŭzano
Aktuala versio: 2.11.2[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
vdr

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.

Objektema Programado

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.

Funkcia programado

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.

Ekzemplo

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

Versioj

  • Scala 1 (2001): la baza lingvo
  • Scala 2 ĝis Scala 2.7
  • Scala 2.8 (2010): granda reformo kaj plibonigo de la lingvo, meritus nomiĝi Scala 3.
    • biblioteko kun multaj malgrandaj hokoj por aliri la Scala-tradukilon por uzado ene de IDE-oj
    • nomitaj parametroj
  • Scala 2.9 (2011): kelkaj novaj eblecoj aldonitaj al bibliotekoj kaj ilaro, sed la bazo de la lingvo ne ŝanĝas kompare al versio 2.8.1.[3]
    • paralelaj kolektoj
    • trajto App - pli sekura kaj pli potenca alternativo al trajto Application, kiu estos forigita
    • trajto DelayedInit
    • plibonigita interaga interpretilo (REPL)
    • plifaciligita startigago de programoj skribitaj en Scala
    • plibonigita intertrakteblo kun Java
    • multaj aliaj plibonigoj kaj cimoriparoj
  • Scala 2.9.1 (2011): multaj plibonigoj kaj cimoriparoj.[4]

Fontoj

  1. angle Scala's Prehistory
  2. angle Aktuala versio de Scala
  3. angle Scala 2.9.0 final
  4. angle Scala 2.9.1 final

Eksteraj ligiloj