eStudent Logo
Functional & Reactive Programming – a match made in heaven?

Functional & Reactive Programming – a match made in heaven?

Autor: Tena Žuger, 29. 04. 2021.

U ponedjeljak, 26. travnja, održana je online radionica putem Zoom platforme na temu „Uvod u Functional Reactive Programming“ u organizaciji LUMEN Development tima. Radionicu je vodio je Jeton Fejza, Senior iOS Developer, zaposlenik Undabota.

Functional i Reactive programming

Functional programming je programiranje temeljeno na čistim funkcijama (tzv. pure functions) koje ne mijenjaju stanje sustava te za iste zadane argumente produciraju uvijek isti rezultat.

Reactive programming je programiranje temeljeno na slanju signala i reakcija na iste. Signal može biti bilo koji događaj u sustavu, poput „korisnik je upisao slovo“ ili „poziv na mrežu je završen“. Programer mora definirati kod koji će se izvršiti kada primi signal. Odašiljači signala nazivaju se Observable, a primatelj koji ih obrađuje Observer.

Kako bi se ispravno izrazilo što se događa u sustavu potrebno je znati više vrsta signala poput: onNext, onError, onCompleted i onDisposed.

Prije obrade možda će biti potrebno izvesti neke operacije nad signalima. Kako bi objasnio, Jeton ih je prikazao pomoću dva primjera:

1.     Korisnik upisuje tekst, a programer želi samo znati je li taj tekst prazan (potrebno mapiranje String → Bool).

2.     Korisnik upisuje email i lozinku, a programer želi samo znati jesu li oba ispravna kako bi omogućio interakciju s login gumbom (potrebno mapiranje String → Bool i  spajanje Bool & Bool → Bool).

Sami operatori dijele se na unarne i binarne. Unarni sadržavaju funkcije Map (mapira svaku vrijednost signala u neku drugu prikladniju obradu), Distinct (filtrira samo signale koji se još nisu pojavili) i Skip, skipUntil, skipWhile (preskače signale ovisno o nekom uvjetu). Binarni sadržavaju funkcije CombineLatest (vraća kombiniranu vrijednost oba signala kada bilo koji generira onNext), Merge (prosljeđuje sve vrijednosti oba signala kao da je jedan signal) i Concat (nakon završavanja prvog odašiljača signala ponavlja sve vrijednosti drugog).

 U Functional Reactive programmingu operacije nad signalima postaju čiste funkcije koje uzimaju signale kao argumente i pretvaraju ih u druge signale. Za razliku od Declarative Programminga koji daje naredbe koje se trebaju izvršiti u istom redoslijedu koje su napisane, Reactive Programming daje generator signala i kod s kojim se signali obrađuju.

RxSwift

Jeton je objasnio kako funkcionira RxSwift open-source library te da je za njega zaslužan hrvatskih programer Krunoslav Zaher. Prednosti RxSwifta jesu da olakšava i skraćuje kod u situacijama kada treba pratiti više uvjeta u stvarnom vremenu, omogućuje matematičko modeliranje sustava, ima fleksibilan pristup te se cijeni njegovo znanje na tržištu. Naravno, postoje i neki nedostatci poput faze „uhodavanja“ koja može biti malo teža, „pretjerivanjem“ može doći do nečitkog koda te u nekim situacijama ako se dogodi bug može biti teško odgonetnuti problem.

Jeton je podijelio i nekoliko savjeta: Koristite ovakav pristup jedino ako će vam to skratiti i uljepšati kod, ili pojednostaviti problem, ne ubaciti samo  jer je cool. Nemojte pretjerivati, ako vidite da se teško snalazite među tim svim signalima, vrlo vjerojatno će se teško i netko drugi snaći.“

Na kraju radionice slijedio je kviz o operatorima i njihovim funkcijama.

Završnu riječ održao je član organizacijskog tima Igor Aradski i zahvalio Jetonu na zanimljivoj radionici.

Više informacija o eSTUDENTu, LUMEN Developmentu i budućim radionicama možeš saznati na našoj web stranici, Instagramu, Facebooku i LinkedInu.  Zaprati LUMEN Development na službenoj Facebook stranici LUMEN Development.  Sve novosti vezane uz rad udruge saznaj prijavom na newsletter.

Ostale objave

23. 09. 2021.

Proširi vidike i izaberi eSTUDENT - počinju prijave za novu akademsku godinu

Početak akademske godine opasno je pred vratima, a to znači samo jedna stvar. Od danas su otvoreno i prijave za novu eSTUDENT godi...

21. 09. 2021.

Dobrobit sudjelovanja u studentskim udrugama

Početak nove akademske godine sa sobom nosi i regrutacije za brojne studentske udruge. U nastavku slijede sve dobrobiti sudjelovan...

17. 09. 2021.

Motivacija za početak nove akademske godine

eSTUDENT je za tebe pripremio nekoliko savjeta za što uspješniju akademsku godinu pred nama

07. 09. 2021.

Otvorenje prijava poduzeća za Career Speed Dating 2021.

Od 6. do 24.9. poduzeća se mogu prijaviti za Career Speed Dating i među studentima pronaći potencijalne zaposlenike i praktikante ...

Postani članom Udruge putem pristupnog procesa koji se odvija jednom godišnje!

Prijavi se na naš newsletter i među prvima saznaj za studentska natjecanja, projekte i ostale studentske pogodnosti :)

Strateški partneri