Upload
alic-semir
View
236
Download
1
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