Junior — Middle
Оё метавонед асосҳои принсипҳо ва муносибатҳои барномасозии функсионалӣ-ро шарҳ диҳед?
sobes.tech AI
Ҷавоб аз AI
Функционал програмигӣ (FP) — ин парадигмаи барномасозӣ мебошад, ки асосан ба истифодаи функсияҳо ҳамчун блокҳои асосии сохтмон ва дар канор гузоштани тағйирёбии ҳолат ва таъсироти тарафайн асос ёфтааст.
Принсипҳо ва муносибатҳои асосии FP:
- Функсияҳои тоза: функсия ҳамеша натиҷаи якхела медиҳад барои маълумоти вурудӣ ва тағйироти беруна намекунад.
- Намояндагӣ (immutability): маълумотҳо пас аз эҷод кардан тағйир намеёбанд, ба ҷои ин нусхаҳои нав бо тағйиротҳо сохта мешаванд.
- Функсияҳои дараҷаи баланд: функсияҳое, ки дигар функсияҳоро ҳамчун аргумент қабул мекунанд ё баргардон мекунанд.
- Рекурсия ба ҷои циклҳо: рекурсия барои такрор кардани амалҳо истифода мешавад.
- Бе таъсири тараф: функсияҳо набояд тағйироти дарунӣ, файлҳо, базаҳои додаҳоро ва ғайраро тағйир диҳанд.
Масалан дар C++ (бо истифода аз функсияҳои lambda):
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> рақамҳо = {1, 2, 3, 4, 5};
// Функсияи дараҷаи баланд: додани lambda ба std::for_each
std::for_each(рақамҳо.begin(), рақамҳо.end(), [](int n) {
std::cout << n * 2 << " ";
});
return 0;
}
Ин ҷо мо векторро тағйир намедиҳем, балки танҳо функсияро ба ҳар як унсур барои намоиш татбиқ мекунем, ки бо идеяҳои муносибати функсионалӣ мувофиқ аст.