Парадигме програмирања

Циљ и исход предмета

Упознавање студената са основним концептима и механизмима различитих парадигми програмирања, као што су функционално, реактивно и генеричко програмирање и њихова употреба у развоју софтвера. Студент који успешно заврши курс познаје основне концепте функционалног, реактивног и генеричког програмирања и уме да их употреби у имплементацији раличитих компоненти софтверског производа.

Теоријска настава

Декалартивне парадигме програмирања. Преглед концепата функционалног програмирања у савременим прогармским језицима: функције вишег реда, ламбда функције, лења евалуација, монадске структуре података: stream, optional, promisе. Појам реактивног програмирања и стримови података. Опсервабилне структуре и асинхрона обрада података. Преглед библитека за реактивно програмирање у савременим програмским језицима. Марбл дијаграми. Појам генеричког програмирања. Параметризоване структуре података и алгоритми. Генерализација оператора. Концепти, типови (класе) и инстанце. Итератори (Regular, Successor, Dereference). Категорије итератора (Input, Forward, Bidirectional, Random-access, Output, Linked, Segmented). Полуотворени и затворени опсези. Линеарно и бинарно претраживање. Пермутације и транспозиције. Опсези размене (swapping ranges). Ротација. Употреба циклуса. Reverse алгоритам. Меморијски-адаптивни алгоритми.

Практична настава

Задаци који користе концепте функционалног програмирања у језику Јава – Stream, Optional. Ламбда функције и референце на методе у Јави. Коришћење функционалног програмирања у ЈаваСкрипту – функиције вишег реда map, reduce, filter, чисте функције, каринг, promise. Проширење ЈаваСкрипта за реактивно програмирање – RxJS. Илустративни примери за реактивно програмирање. Генеричко програмирање на језику C++: темплејти функција, преклапање (overload) генеричких функција, темплејти класа, специјализација темплејта класа (делимична и потпуна). Статички полиморфизам: предности, недостаци и комбиновање са динамичким. Појам темплејт мета-програмирања.

1 thought on “Парадигме програмирања”

Comments are closed.