Sobes.tech
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;
}

Ин ҷо мо векторро тағйир намедиҳем, балки танҳо функсияро ба ҳар як унсур барои намоиш татбиқ мекунем, ки бо идеяҳои муносибати функсионалӣ мувофиқ аст.