Naučite kako da razmišljate i pišete kôd kao funkcionalni programer. Uz ovaj praktičan vodič, programeri koji su upoznati sa objektno orijentisanim programiranjem zaroniće u osnovne koncepte funkcionalnog programiranja i naučiti kako da istovremeno koriste mogućnosti funkcionalnog i objektno orijentisanog programiranja u velikim ili složenim softverskim projektima.
Autor Jack Widman koristi uzorke iz Jave, Pythona, C#, Scale i JavaScripta da bi vam pomogao da steknete novi uvid i obezbedio skup alata za upravljanje složenošću problema pred kojim se nalazite. Moći ćete da pišete kôd koji je jednostavniji, kojeg možete ponovo upotrebiti, lakše testirati i modifikovati i koji je uglavnom ispravniji. Ova knjiga vam takođe pokazuje kako da koristite obrasce iz teorije kategorija da biste premostili jaz između objektno orijentisanog i funkcionalnog programiranja.
• Naučite osnove funkcionalnog programiranja i proučite način na koji funkcionalni programeri pristupaju problemima.
• Shvatite kako se funkcionalno programiranje razlikuje od objektno orijentisanog i imperativnog programiranja.
• Koristite skup praktičnih i primenljivih obrazaca dizajna koji modeluju stvarnost na funkcionalan način.
• Naučite kako da ugradite karakteristike funkcionalnog i objektno orijentisanog programiranja u softverske projekte.
• Primenite funkcionalne obrasce dizajna na odgovarajući način i koristite ih za pisanje ispravnog, robusnog i lako promenljivog koda.
Prvo poglavlje – Šta je funkcionalno programiranje? 1
Nepromenljivost 2
Referentna transparentnost 5
Funkcije višeg reda 7
Lenja evaluacija 8
Razmišljajte kao funkcionalni programer 9
Prednosti funkcionalnog programiranja 10
Funkcionalno programiranje može da unapredi produktivnost 11
Funkcionalno programiranje je zabavno! 11
Scala 12
Zaklju�ak 13
Drugo poglavlje – Uvod u matematiku 15
Teorija skupova 15
Funkcije 16
Vrste funkcija 18
Osnove ra�unarskih nauka 20
Anonimne funkcije 20
Funkcije kao objekti prve klase 21
Zaklju�ak 21
Treće poglavlje – Teorija kategorija i obrasci 23
Obrasci zasnovani na teoriji kategorija 25
Kratak istorijat 26
Objekti i morfizmi 26
Primer kategorije 27
Kategorija Scal 31
Funktori 33
Formulisanje funktora u okviru programskog jezika 36
Obrasci 37
Obrazac Functor 38
Monoidi 39
Prirodne transformacije 41
Monade 43
Zaklju�ak 45
ÄŒetvrto poglavlje – Funkcionalne strukture podataka 47
Struktura podataka Option 48
Struktura podataka Try 52
Struktura podataka Either 52
Funkcije višeg reda 54
Monade u for-konstrukcijama u Scali 55
Tradicionalne strukture podataka 57
Nepromenljivost i istorijat 57
Lenjost 58
Zaklju�ak 58
Peto poglavlje – Još nešto o nepromenljivosti 59
Mutabilne i nemutabilne promenljive 59
Rekurzija 60
Primer povezane liste 61
Terminalna (tail) rekurzija 66
Još primera koji pokazuju kakvu moć ima fold u Scali 70
Veza između funkcije fold i monoida 71
Šta još možemo uraditi sa funkcijama višeg reda 74
Od map do flatMap 76
Zaklju�ak 77
Šesto poglavlje – Pitanje konkurentnosti 79
Tokovi 83
Akka tokovi 83
Izvor 83
Protok 84
Izlaz 85
Još nešto o tokovima 85
FS2: Funkcionalni tokovi za Scalu 86
Zaklju�ak 88
Sedmo poglavlje – Kuda ćemo dalje? 89
Ako krenemo �isto funkcionalnim putem 89
Monada IO 91
Ako krenemo srednjim putem 93
Jezici na Javinoj virtuelnoj mašini 93
.NET programski jezici 94
Klase tipova 94
Zaklju�ak 99
Dodatak – Skala 101
Indeks 117
USPEŠNO DODATO U KORPU