Scala je moderan programski jezik koji spaja više paradigmi, dizajniran da izrazi česte programske šablone kroz precizan, elegantan i tipski bezbjedan način. Scala elegantno objedinjuje mogućnosti objektno orijentisanih i funkcionalnih jezika.
Scala je objektno orijentisana
Scala je čisto objektno orijentisan jezik u smislu da je svaka vrijednost objekt. Tipovi i ponašanja objekata se opisuju kroz klase i trejtove. Klase se proširuju nasljeđivanjem i fleksibilnim mehanizmom kompozicije mixina kao čistom zamjenom za višestruko nasljeđivanje.
Scala je funkcionalna
Scala je također funkcionalni jezik u smislu da je svaka funkcija vrijednost. Scala ima lahku sintaksu za definisanje anonimnih funkcija, i podržava funkcije višeg reda, omogućuje ugnježdavanje funkcija, i podržava curry-jevanje. Scaline case klase i njen mehanizam podudaranja uzoraka modeluju algebarske tipove koji se koriste u dosta funkcionalnih programskih jezika. Singlton objekti omogućuju pogodan način za grupisanje funkcija koje nisu članovi klase.
Nadalje, Scalin mehanizam podudaranja uzoraka (pattern-matching) prirodno podržava procesiranje XML podataka pomoću desno-ignorišućih uzoraka sekvenci, i generalnim proširivanjem s ekstraktor objektima. U ovom kontekstu, komprehensije sekvenci su korisne za izražavanje upita (query). Ove mogućnosti čine Scalu idealnom za razvijanje aplikacija kao što su web servisi.
Scala je statički tipizirana (statically typed)
Scala je opremljena ekspresivnim sistemom tipova koji primorava da se apstrakcije koriste na bezbjedan i smislen način. Konkretno, sistem tipova podržava sljedeće:
- generičke klase
- anotacije varijanse
- gornje i donje granice tipa,
- unutarnje klase i apstraktne tipove kao članove objekta
- složene tipove
- eksplicitno tipizirane samo-reference
- implicitne parametre i konverzije
- polimorfne metode
Mehanizam za lokalno zaključivanje tipova se brine da korisnik ne mora pisati tipove varijabli više nego što je potrebno. U kombinaciji, ove mogućnosti su jaka podloga za bezbjedno ponovno iskorištenje programskih apstrakcija i za tipski bezbjedno proširenje softvera.
Scala je proširiva
U praksi, razvijanje domenski specifičnih aplikacija često zahtijeva i domenski specifične ekstenzije jezika. Scala omogućuje jedinstvenu kombinaciju mehanizama jezika koji olakšavaju elegantno dodavanje novih jezičkih konstrukcija u formi biblioteka.
Zajedničkom upotrebom obje mogućnosti olakšava definisanje novih izraza bez proširenja sintakse samog Scala jezika i bez korištenja olakšica u vidu macro-a ili meta-programiranja.
Scala je dizajnirana za interoperabilnost s popularnim Java Runtime Environment (JRE). Konkretno, interakcija s popularnim objektno orijentisanim Java programskim jezikom je prirodna. Novije mogućnosti Jave kao anotacije i Javini generički tipovi imaju direktnu analogiju u Scali. Scaline mogućnosti bez analogija u Javi, kao što su podrazumijevani i imenovani parametri, se kompajliraju što približnije Javi. Scala ima isti kompilacijski model (posebno kompajliranje, dinamičko učitavanje klasa) kao Java i time omogućuje pristupanje hiljadama postojećih visoko kvalitetnih biblioteka.
Molimo nastavite sa sljedećom stranicom za više informacija.
Contributors to this page:
Contents
- Uvod
- Osnove
- Sjedinjeni tipovi
- Klase
- Podrazumijevane vrijednosti parametara
- Imenovani parametri
- Trejtovi
- Tuples
- Kompozicija mixin klasa
- Funkcije višeg reda
- Ugniježdene metode
- Curry-jevanje
- Case klase
- Podudaranje uzoraka (pattern matching)
- Singlton objekti
- Regularni izrazi
- Ekstraktor objekti
- For komprehensije
- Generičke klase
- Varijanse
- Gornja granica tipa
- Donja granica tipa
- Unutarnje klase
- Apstraktni tipovi
- Složeni tipovi
- Self-tipovi
- Implicitni parametri
- Implicitne konverzije
- Polimorfne metode
- Lokalno zaključivanje tipova (type inference)
- Operatori
- By-name parametri
- Anotacije
- Packages and Imports
- Package Objects