Cilj i ishod predmeta
Upoznavanje studenata sa osnovnim konceptima i mehanizmima različitih paradigmi programiranja, kao što su funkcionalno, reaktivno i generičko programiranje i njihova upotreba u razvoju softvera. Student koji uspešno završi kurs poznaje osnovne koncepte funkcionalnog, reaktivnog i generičkog programiranja i ume da ih upotrebi u implementaciji raličitih komponenti softverskog proizvoda.
Teorijska nastava
Dekalartivne paradigme programiranja. Pregled koncepata funkcionalnog programiranja u savremenim progarmskim jezicima: funkcije višeg reda, lambda funkcije, lenja evaluacija, monadske strukture podataka: stream, optional, promise. Pojam reaktivnog programiranja i strimovi podataka. Opservabilne strukture i asinhrona obrada podataka. Pregled bibliteka za reaktivno programiranje u savremenim programskim jezicima. Marbl dijagrami. Pojam generičkog programiranja. Parametrizovane strukture podataka i algoritmi. Generalizacija operatora. Koncepti, tipovi (klase) i instance. Iteratori (Regular, Successor, Dereference). Kategorije iteratora (Input, Forward, Bidirectional, Random-access, Output, Linked, Segmented). Poluotvoreni i zatvoreni opsezi. Linearno i binarno pretraživanje. Permutacije i transpozicije. Opsezi razmene (swapping ranges). Rotacija. Upotreba ciklusa. Reverse algoritam. Memorijski-adaptivni algoritmi.
Praktična nastava
Zadaci koji koriste koncepte funkcionalnog programiranja u jeziku Java – Stream, Optional. Lambda funkcije i reference na metode u Javi. Korišćenje funkcionalnog programiranja u JavaSkriptu – funkicije višeg reda map, reduce, filter, čiste funkcije, karing, promise. Proširenje JavaSkripta za reaktivno programiranje – RxJS. Ilustrativni primeri za reaktivno programiranje. Generičko programiranje na jeziku C++: templejti funkcija, preklapanje (overload) generičkih funkcija, templejti klasa, specijalizacija templejta klasa (delimična i potpuna). Statički polimorfizam: prednosti, nedostaci i kombinovanje sa dinamičkim. Pojam templejt meta-programiranja.
1 thought on “Paradigme programiranja”
Comments are closed.