Scala (programmeerimiskeel)

Scala on üldotstarbeline platvormist sõltumatu objektorienteeritud programmeerimiskeel, mis toetab funktsionaalset programmeerimist ja tugevat staatilist tüübisüsteemi. Scala on disainitud olema kompaktne ja selle eesmärk on parandada Java probleemseid omadusi. Scala lähtekood kompileeritakse Java baitkoodiks, mis tähendab, et Scala käivitamisel käitatakse seda Java virtuaalmasinas. Sarnaselt Javaga on ka Scala objektorienteeritud ning kasutab loogeliste sulgude süntaksit, mis pärinevad C-programmeerimiskeelest, kuigi Scala 3 toetab ka Pythoni-stiilis taandepõhist süntaksi. Scala eristub Javast teatud eriomaduste tõttu, mis on pärit teistest funktsionaalprogrammeerimiskeeltest, sh Scheme, Standard ML ja Haskell. Nendeks funktsionaalsusteks on karrimine ehk funktsiooni osaline rakendamine (ingl k currying), tüübijäreldus (ingl k type inference), muutmatud objektid (ingl k immutability), laisk väärtustamine (ingl k lazy evalutation) ja mustrisobitus (ingl k pattern matching). Scala väldib teatud vastuolulisi Java omadusi, näiteks erandite kohustuslik töötlus, kuigi Scala 3 puhul on see valikuliselt saadaval. Nimi Scala on kohversõna sõnadest "skaleeritav" (ingl k scalable) ja "keel" (ingl k language), mis viitab, et see on disainitud kasutajate vajadustele vastavalt kohanduma ja kasvama. Martin Odersky alustas Scala väljatöötamist 2001. aastal Lausanne'is Šveitsi föderaalses tehnoloogiainstituudis (École Polytechnique Fédérale de Lausanne ehk EPFL). See arendati välja programmeerimiskeelest Funnel, mis sisaldas funktsionaalset lähenemist Petri võrkudele. Scala avalikustati Java platvormi jaoks 2004. aasta esimeses pooles. Selle teine versioon tuli välja 2006. aasta märtsis. 17. jaanuaril 2011 võitis Scala arendusmeeskond Euroopa Teadusnõukogult teadustöö grandi viieks aastaks koguväärtuses üle 2,3 miljoni euro. 12. mail 2011 lõi Odersky koos oma kaastöötajatega ettevõtte Typesafe Inc., mille eesmärgiks oli Scala majanduslik toetamine ning edasiõppe ja teenuste võimaldamine. Samal aastal tegi ettevõte Greylock Partners Typesafe'i 3 miljoni dollari suuruse investeeringu. Hiljem sai firma nimeks Lightbend Inc. Kuulsat Hello World programmi saab Scalas kirjutada järgmiselt: object HelloWorld extends App { println("Hello, World!") } Võrreldes Java Hello World programmiga, puudub Scalas selle programmi kirjutamiseks klassi deklareerimise vajadus ning samuti pole antud koodis märgitud midagi staatiliseks, vaid selle asemel on kasutatud ühekordset objekti, mis luuakse märksõnaga object. Kui programm on salvestatud faili HelloWorld.scala, saab selle käsurealt kompileerida järgmise käsuga: $ scalac HelloWorld.scala Käivitada saab selle programmi, kui käitada käsurealt käsku $ scala HelloWorld Scala kompileerimine ja käivitamine on analoogne Javaga, kusjuures Scala kompileerimise ja kasutamise mudel on identne Java omale, mis tähendab, et Scala ühildub Java kompileerimistööriistadega (näiteks Apache Ant). println("Hello, World!") Scala toetab interaktiivset käsureaprotsessorit ja skriptimist. Kui ülalmainitud koodirida salvestada faili HelloWorld2.scala, siis saab seda käsurealt käitada ilma mingisuguse eelneva kompileerimiseta käsuga $ scala HelloWorld2.scala Skripte saab sisestada ka otse käsureale, lisades käsule parameetri –e: $ scala –e 'println("Hello, World!")' Potvin, Pascal; Bonja, Mario (24 September 2015). An IMS DSL Developed at Ericsson. Lecture Notes in Computer Science. 7916. Martin Odersky et al., An Overview of the Scala Programming Language, 2nd Edition "Scala 3 Syntax Summary". docs.scala-lang.org. Vaadatud 17. jaanuaril 2024. Apinis, Kalmer (2018). "Scala" (PDF). Tartu Ülikool. Vaadatud 10. detsember 2023. Friesen, Jeff (16 November 2016). "Are checked exceptions good or bad?". JavaWorld. Retrieved 28 August 2018. "Capture Checking". docs.scala-lang.org. Vaadatud 17. jaanuaril 2024. Loverdo, Christos (2010). Steps in Scala: An Introduction to Object-Functional Programming. Cambridge University Press. p. xiii. ISBN 9781139490948. Retrieved 31 July 2014. Martin Odersky, "A Brief History of Scala", Artima.com weblogs, 9 June 2006 Odersky, M.; Rompf, T. (2014). "Unifying functional and object-oriented programming with Scala". Communications of the ACM. 57 (4): 76. doi:10.1145/2591013. Martin Odersky, "The Scala Language Specification Version 2.7" "Scala Team Wins ERC Grant". Retrieved 4 July 2015. "Commercial Support for Scala". 2011-05-12. Retrieved 2011-08-18. "Why We Invested in Typesafe: Modern Applications Demand Modern Tools". 2011-05-12. Retrieved 2018-05-08. "Open-source Scala gains commercial backing". 2011-05-12. Retrieved 2011-10-09. "Cloud computing pioneer Martin Odersky takes wraps off his new company Typesafe". 2011-05-12. Retrieved 2011-08-24. "Getting Started with Scala". scala-lang.org. 15 July 2008. Retrieved 31 July2014.