Nuo Java link Scala, I
Funkcinis programavimas
Funkcinis (deklaratyvus) programavimas nėra nauja sąvoką ar idėja, jos formavimasis prasidėjo apie 1940-tuosius metus. Ji vis dar nėra tokia populiari kaip objektinis programavimas ar kitos imperatyvaus programavimo formos.
Scala ir JVM
Didelis Scala kalbos privalumas, kad ji veikia Java virtulioje mašinoje (JVM), taip užtikrinamas interpretavimo palaikymas daugelyje platformų, tuo pačiu ir lengvas startas, norintiems ją išmėginti.
Scala stengiasi sujungti OP ir FP. Jeigu paklaustumėte gryno funkcinio programuotojo, tai sukeltų neigiamą reakciją, tačiau Scala ir nesistengia būti geriausiu abiejuose pusėse.
Scala yra griežtai tipizuota kalba, tai reiškia, kad tipai ir jų suderinamumas yra tikrinamas kompiliavimo metu. Tai leidžia sumažinti tiek klaidų tikimybę, tiek lengviau refaktorinti kodą ateityje.
Kas yra funkcinis programavimas?
FP yra programavimo paradigma, kuri teigia, kad visi skaičiavimai yra paremti matematinėmis funkcijomis ir vengiama būsenos ir mutuojančių duomenų.
Išskirtinės savybes:
- uždariniai, tipų sistema, monadai, galinė resursija, struktūrų atitikimai…
Bruožai:
- funkcijos,o ne objektai, klasės ar procedūros yra pagrindinis veikėjas
- aukštesnės eilės funkcijos priima funkcijas kaip argumentus ir/arba grąžina funkcijas, jos leidžia rašyti gerokai trumpesnį kodą.
- grynos funkcijos rezultatas priklauso tik nuo įėjimo duomenų, IO ar atmintis negali turėti jokio šalutinio poveikio. Kviečiant funkciją su tais pačiais duomenimis, visada bus grąžintas toks pat rezultatas. Tai gerokai palengvina jų testuojamumą ir leidžia jas supaprastinti.
- nekeičiamumas (immutability) — priskyrus reikšmę, jos keisti negalima, jeigu norima pakeisti objekto būną, reikia sukurti naują objektą. Tai svarbu dėl keleto priežasčių. Sukūrus objektą, juo galima naudotis ir jis negali būti pakeistas. Nekeičiami objektai yra apsaugoti nuo keitimo skirtingose gijose.