Scala (programlingvo)
Scala reprezentas kunigon de vaste aplikataj objektemaj konceptoj kun la ĝis 2002 ĉefe akademie uzataj konceptoj de funkcia programado en statike tipsekura formo.
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 |
Ĝ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
redaktiScala 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
redaktiAldone 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
redaktiJen 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
redakti- 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]