Функціонально-орієнтоване програмування
Функціонально-орієнтоване програмування (англ. Feature-oriented programming) — загальна парадигма компонування програм у ряд програмних продуктів.
Функціонально-орієнтоване програмування виникло з шарового дизайну та рівнів абстракції в мережевих протоколах і розширюваних баз даних в кінці 1980-х років. Програму було представлено стосом шарів. Кожен шар додавав функціональність до попередніх, а різне комбінування цих шарів давало на виході різні програми. Не дивно, що постала потреба у створенні компактної мови для вираження таких проектів. Елементарна алгебра було саме те, що треба: кожен шар був функцією (перетворення програми), який додавав код в наявну програму для створення нової, дизайн програми було модельовано виразом, наприклад, компонуванням перетворень (шарів).
Згодом ідею шарів було узагальнено в функціональності, коли функціональність є приріст у розвитку або корисності програми. Парадигму для проектування та компонування програм було визнано узагальненням оптимізації реляційних запитів, де програми оцінювання запитів були означені, як вирази реляційної алгебри, а оптимізації запитів — оцінювання виразів. Ряд програмних продуктів — це родина програм, де кожну програму сформульовано унікальним набором функціональності, і будь-які дві програми з родини не мають однаковою комбінації. З того часу функціонально-орієнтоване програмування перетворився в дослідження модульності функціональностей, інструментів, аналізу та технологій дизайну для підтримки компонування функціонально-орієнтованих програм.
Подальший прогрес у ФОП пов'язано з визнанням наступних фактів: кожна програма має декілька представлень (наприклад, сирці, файли збирання Makefile, документація і т.д.) і додавання функціональності в програму може торкнутися кожного з цих представлень, щоб в кінці процесу всі вони були узгоджені. Крім того, деякі з цих представлень можуть бути походити від інших представлень.
Прикладом математик останніх поколінь ФОП можуть слугувати GenVoca, AHEAD і FOMDD.
Цю статтю потрібно повністю переписати відповідно до стандартів якості Вікіпедії. (січень 2016) |
Ця стаття не містить посилань на джерела. (січень 2016) |
Це незавершена стаття про програмування. Ви можете допомогти проєкту, виправивши або дописавши її. |