Scala je moderen programski jezik, ki je v zadnjih letih
doživela veliko popularnost in postaja zelo pomembna tehnologija
predvsem v kritičnih aplikacijah in aplikacijah z zelo veliko
obremenitvijo. Zrelost tega jezika nakazuje dejstvo, da je glavna
razvojna platforma v podjetjih kot so Twitter, LinkedIn in Foursquare.
Tudi v Sloveniji številna podjetja že posegajo po tej tehnologiji, npr.
podjetja XLAb in Celtra. Scala združuje objektno usmerjeno programiranje
s funkcijskim programiranjem, ki je v zadnjih nekaj letih postalo
nepogrešljiv del vseh modernih programskih jezikov. Celo starejši
programski jeziki kot sta Java in C++ z novimi verzijami dobivata
funkcijske konstrukte, kar nakazuje, da je znanje funkcijskega
programiranja nujno potrebno za vsakega inženirja. Poleg funkcijskih
konstruktov Scala nudi še številne konstrukte, ki so izšli iz
znanstvenih raziskav programskih jezikov zadnjega desetletja (predvsem
iz bolj akademskega jezika Haskell).
Predmet bo
razdeljen na štiri sklope. Prvi sklop bo uvodni, kjer se bomo spoznali z
osnovnimi sintaksnimi konstrukti Scale. Poudarek bo dan predvsem na
enostavnem prehodu Java programerjev na drugačen način razmišljanja.
Drugi sklop bo namenjen funkcijskemu programiranju v Scali. Definirali
bomo temeljne ideje funkcijskega programiranja in skozi številne
primere spoznali različne vzorce programiranja v tej paradigmi. Tretji
sklop predmeta bo namenjen objektno usmerjenemu programiranju in
močnemu sistemu tipov. Poleg osnovnih načinov defnicije razredov in
objektov, ki jih študentje že poznajo iz Jave, si bomo ogledali bolj
napredne konstrukte in predvsem zelo močan sistem tipov, ki pa jih v
starejših jezikih ne najdemo. Zadnji sklop bo namenjen bolj naprednim
temam iz programskega jezika Scala in se bo oblikoval delno tudi na
preference študentov. Scala je pogosto tudi poligon za vpeljavo povsem
novih idej iz teorije programskih jezikov v industrijski jezik. Nekaj
takih tem bo najprej predstavljenih študentom in glede na želje in
potrebe se bomo eni od teh tem posvetili bolj podrobno. Nekatere izmed
teh tem so: leni seznami, implicitne vrednosti, programiranje na nivoju
tipov in makroji v Scali.