Scala Seminarski Rad Semir Alić

Embed Size (px)

DESCRIPTION

Scala Seminarski Rad Semir AlićScala Seminarski Rad Semir AlićScala Seminarski Rad Semir AlićScala Seminarski Rad Semir AlićScala Seminarski Rad Semir Alić

Citation preview

SVEUILITE/ UNIVERZITET VITEZ U TRAVNIKUFAKULTET POSLOVNE EKONOMIJE TRAVNIK

STATISTIKA ANALIZA AMP INFO d.o.o.ESEJ

TRAVNIK, 2011.

3

SVEUILITE/ UNIVERZITET VITEZ U TRAVNIKUFAKULTET POSLOVNE EKONOMIJE TRAVNIK

STATISTIKA ANALIZA FINANSIJAESEJ

Predmet: STATISTIKA U EKONOMIJI I MENADMENTUProfesor: Prof.dr uro MikiAsistent:Ibrahim ObhoaStudent:Semir AliBroj indeksa: 0335/14-DIT

Sadraj

1. Scala......................................................................................................42. Kratka povijest......................................................................................43. Martin Odersky.....................................................................................54. Prihvacenost jezika................................................................................55. Poboljsanje u odnosu na javu................................................................66. Strukture podataka : kreiranje................................................................67. Strukture podataka : koristenje..............................................................78. Case klase..............................................................................................79. Konkurentno programiranje...................................................................710. Finansijsko programiranje......................................................................811. Teorija....................................................................................................912. Uporedba sa cistim funkcijskim jezicima..............................................913. Osnove sintakse......................................................................................1014. Komentari...............................................................................................1115. Uvijetni izraz If-Then-Else.....................................................................1116. Petlja while..............................................................................................1217. For komprehenzija...................................................................................1218. Scala i Scalac...........................................................................................1319. Simple Build Tool....................................................................................1420. Literatura.................................................................................................15

Scalata je to scala?

Moderan satisticko tipizairan programski jezik sa snaznom podrskom za objektno orijentirano,funkcijsko i konkurentno programiranje Baziran na javnom virtualnom stroju (JVM), kompatibilan s Javom i ostalim JVM jezicima (postoji i verzija namijenjena .NET platformi) Namjenjen pisanju i kratkih skripti i ogromnih aplikacija (scalable) Moguce koristiti za programiranje na platformi Android

Kratka povijest2001. do 2013. Razvoj je zapoceo Martin Odersky 2001. Na EPFL-u Jezik Pizza (2001-2002.) pokusaj dodavanja FP mogucnosti Javi 2003. Izlazi prva verzija, 2006. Verzija 2.0 2010. Izlazi prva moderna verzija, 2.8 Poboljsanja jezika u svakoj novoj verziji uz zadrzavanje kompatibilnosti s proslim verzijama 2010. i 2011. Krece sve sire opce prihvacanje jezika Danas je aktuelna verzija 2.10 (izasla u januaru 2013.) Uskoro dolazi i 2.11 Verzije Scale su uglavnom neovisne verziji Javinog VM-a

Martin OderskyAutor jezika

Roen 1958. u Njemackoj Profesor na Swiss Federal Institute of Technology in Lausanne (EPFL) u Svicarskoj. Voditelj Programming Methods Group (LAMP) Dodao genericke tipove Javi 1.5, radio na prevoditelju javac 2011. Osnovao Typesafe , tvrtku koja stoji iza Scale 2012. Pokrece tecaj Functional Programming Principles in Scala na Courseri.

Prihvacenost jezika

Prije 2008. Jezike je uglavnom bio prihvacen u akademskim krugovima 2008 i 2009 pocinje se siriti u komercijalni sektor Danas programeri mnogih poznatih firmi razvijaju biblioteke otvorenog koda za Scalu (npr. Twitter) Neke firme koje koriste Scalu: Autodesk LinkedlnSoundCloud Credit Suisse NASA The Guardian Cisco System New York TimesTumbrl eBay NovellTomTom Foursquare QuoraTwitter HSBC SAPWalmart Gawker SimensXerox IBM Intel

Poboljsanja u odnosu na Javu

Algebarski tipovi podataka, anonimne (lambda) funkcije, apstraktni tipovi, case klase, currying, delimited continuations, dinamike klase, funkcije, implicitne metode i klase, inferencija tipova, interpolacija stringova, izostanak podrke za provjerene (checked) iznimke, konkurentnost, komprehenzije listi, kovarijantnost i kontravarijantnost generikih tipova, linearizacija nasljeivanja, macro sustav, mutable i immutable verzije struktura podataka, n-torke (tuples), singleton objekti, opcionalna lijena (lazy) evaluacija, opcionalni i imenovani parametri, opcionalni toka-zarezi, paralelne i konkurentne kolekcije, parcijalne funkcije, podudaranje uzoraka (pattern matching), podrka za pisanje istih (pure) metoda i funkcija bez popratnih efekata, reifikacija generikih tipova, repna rekurzija i trampoliranje, snaan naglasak na imutabilnost (immutability), strukturni tipovi (duck typing), tipovi vieg reda, traitovi, unificirani objektni tipski sustav, unifikacija imena metoda i operatora (operator overloading), vrijednosne (value) klase . . .

Strukture podataka : kreiranje

Strukture podataka : koristenje

Case klase

Konkurentno programiranje

Financijsko programiranje

TeorijaUsporedba s dinamickim jezicima

Python, Ruby, Groovy na prvi pogled predstavljaju puno bolje rijesenje od Jave. Zasto ipak koristiti Scalu ?

Staticki tipski sustav: Lakse odrzavanje velikih aplikacija, manja potreba za iscrpnim testovima, sve dobre strane OO sustava. Kompatibilnost: postojeci Java kod se moze trivijalno koristiti u Scali (npr. Javine kolekcije se mogu Scalazirati i obrnuto) Slicna sintaksa: Postojeci iskusni Java programer moze relativno brzo nauciti osnove Scale te poceti primjenjivati mogucnosti kako ih uci. Drugi jezici cesto imaju velike razlike u sintaksi i kljucnim konceptima Biblioteke : moguce je koristiti svaku postojecu JVM biblioteku Iz Jave se moze koristiti veliki broj korisnih biblioteka napisanih o Scali.

Usporedba s cistim funkcijskim jezicima

Haskell je sve popularniji cisto funkcijski (purley functional) jezik.Zasto bi htio necisti funkcijski jezik i OO sustav?

Interoperabilnost s postojecim kodom : postojeci (Java) kod obicno zahtijeva koristenje popratnih efekata, koje po potrebi mozemo kontrolisati npr. Cisto-funkcijskim omotacem koji djeluje kao sucelje prema postojecem necistocom (non-pure) kodu. Lokalno promjenjljivo stanje radi preformansi ili ostalih razloga moguce je koristit necisti kod na lokalnoj razini, tako da je izvana taj kod referencijski transparent. Napredni OO sustav obogucuje modularizaciju koda, obogacivanje postojecih tipova novom funkcionalnoscu, kompoziciju funkiconalnosti ( ne samo na razini funkcije) i ostalo.

Read-Evalute-Print-Loop

Interaktivna konzola koja omogucuje slijedno izvrsavanje naredbi Radi slicno kao REPL konzole u modernim programskim jezicima (npr. Python, Clojure, Hskell , Ruby ) Pokretanje iz operacijskog sustava : Scala Pomoc : help Izlaz : quit ( ili exit ) Ostale korisne naredbe : paste, :reset, :type

Osnove sintakse

Sve je izraz: svaki blok koda ima povratnu vrijednost Sve je objekt, ne postoje primitivni tipovi Svaki operator je poziv metode Metoda == zove equals metodu, eq usporedjuje reference Var ime : Tip = izraz varijabla Var ime: Tip = izraz nepromjenjiva varijabla, vrijednost Def ime (parametar: TipParametra ) : Tip = . . . definicija metode Lazy val : vrijednost ciji se sadrzaj evaluira prilikom prvog pristupa ??? metoda koja predstavlja neimplementiranu metodu

Komentari

Identicni kao u Javi i C++-u // komentar definira komentar do kraja reda /* komentar */ - definira obican komentar izmedju zagrada /** komentar */ - definira ScalaDoc komentar izdmedju zagrada

Uvijetni izraz if-then-elseApstrakcija naredbe jump if . . .

If ( booleanIzraz ) { UvijetJeIstinit } else { UvijetJeLazan } Cijelokupni izraz ima povratnu vrijednost ( i tip )

Petlja whileApstrakcija naredbe goto

While ( booleanIzraz ) { tijelo } Ponavlja tijelo izraza dok je uvijet istinit Izraz ima povratnu vrijednost tipa Unit Nije u duhu funkcijskog programiranja radi obaveznog koristenja promjenjivog stanja i beskorisne povratne vrijednosti Uglavnom se koristi radi ubrzavanja koda

For-komprehenzijaFor-comprehension

Sluzi za iteraciju po nekoj strukturi podataka ili kreiranje nove strukture podataka iz postojece Blok naredbi unutar for-komperhenzije koristi vrijednost iz iteracije Vrijednosti iz iteracije su nepromjenjive unutar bloka naredbi

Scala i scalac

Naredba scalac Analogna naredbi javac Prevodi datoteke koje sadrze izvorni kod upisan u Scali (.scala) u datoteke koje sadrze bytecode Javine virtualne masine (.class)

Naredba scala :

Slicna naredbi java

Izvrsava prevedene Scala klase (jednako kao naredba java uz cp. ;scala-library . jar)

Prevodi i odmah zavrsava nepravedene Scala skripte i programe

Podrzava sve napredne opcije koje podrzava i scalac

Ako je pokrenuta bez zadanih datoteka pokrece Read-Evaluate-Print-Loop ( REPL) konzolu.

Simple Build Tool

Autor : Mark Harrah Rjesenje za upravljanje i izgradu cijelokupnog projekta Slivcan Mavenu Automatski dohvaca biblioteke (dependencies) preko interneta Podrzava Ivy i Maven repozitorije Omogucuje jednostavno pokretanje i testiranje projekta Podrzava podprojekte i medjuzavisnosti izmedju njih Ne zahtjeva instalacij,sastoje se od 1 (malog) JARa Jednostavno pakiranje uz projekt Automatski dohvaca odgovarajucu verziju Scale Podrzava 3 nacina definiranja projekta Bez ikakvih definicija, convention over configuration Jednostavne .sbt datoteke koje koriste mini-DSL Pune projektne .scala datoteke pisane u Scali.

Literatura :https://www.fer.unizg.hr/_download/repository/opjs201304.pdf