Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

10-lekciya_paradigma_qq

.pdf
Скачиваний:
0
Добавлен:
18.01.2026
Размер:
263.29 Кб
Скачать

10-lekciya. Funkcionallıq programmalastırıw. Iteraciya hám konveyerler.

Jobası:

1.Imperativ hám Funkcionallıq iteraciya: Sırtqı hám ishki iteraciya túsinikleri.

2.Rekursiya: Cikllerdiń funkcionallıq alternativası retinde.

3.Konveyerler (Pipelines): Funkciyalar kompoziciyası hám maǵlıwmatlar aǵımı.

4.Map, Filter, Reduce: Joqarı tártipli funkciyalar arqalı maǵlıwmatlardı qayta islew.

Iteraciyaǵa bolǵan funkcionallıq kózqaras

Dástúrli imperativ programmalastırıwda (C, Pascal, Java) maǵlıwmatlar jıyındısı (massiv, dizim) menen islesiw ushın biz ádette for yamasa while cikllerinen paydalanamız. Bul process "Sırtqı iteraciya" (External Iteration) dep ataladı, sebebi programmist elementlerdi qalay alıwdı, cikl esaplaǵıshın (i++) qalay ózgertiwdi hám qashan toqtawdı ózi qol menen basqaradı. Biraq, funkcionallıq programmalastırıwda (FP) bunday usıl qollanılmaydı, sebebi ol ózgeriwshilerdiń mánisin turaqlı ózgertiwdi (mutability) talap etedi. FP paradigması iteraciyanı basqasha, yaǵnıy "Ishki iteraciya" (Internal Iteration) yamasa rekursiya arqalı ámelge asırıwdı usınıs etedi. Funkcionallıq programmalastırıwda iteraciya procesi maǵlıwmatlar strukturasınıń ishine jasırılǵan boladı. Biz kompyuterge "dizimniń basınan baslap, hárbir elementti al, indeksti birge asır" dep aytıwdıń ornına, "usı dizimniń hárbir elementine mına funkciyanı qollan" degen deklarativ buyrıqtı beremiz. Bul jerde iteraciyanıń mexanikası (qalay isleniwi) programmistten jasırılǵan, programmist tek nátiyjege itibar qaratadı. Bul usıl kodtıń kólemin qısqartadı hám "indeksten shıǵıp ketiw" (Index Out of Bounds) sıyaqlı tipik qátelerdiń aldın aladı.

Cikllerdiń ornına FP-da tiykarǵı iteraciya mexanizmi retinde "Rekursiya" qollanıladı. Rekursiya – bul funkciyanıń máseleni sheshiw ushın ózin-ózi shaqırıwı. Mısalı, dizimniń elementlerin qosıw ushın cikl ashıwdıń ornına, funkciya dizimniń birinshi elementin aladı hám onı dizimniń qalǵan bóleginiń qosındısına qosadı. Bul process dizim bosap qalǵansha dawam etedi. Rekursiya matematikalıq indukciyaǵa tiykarlanǵan bolıp, ol ózgeriwshilerdiń mánisin ózgertpesten (immutable), jańa mánislerdi funkciya parametrlari arqalı uzatıwǵa imkaniyat beredi.

Degen menen, ápiwayı rekursiya yad (stack) resursların kóp talap etiwi múmkin, sol sebepli zamanagóy funkcionallıq tiller "Aqırǵı rekursiya" (Tail Recursion) optimizaciyasın qollanadı. Eger rekursiv shaqırıw funkciyanıń eń sońǵı háreketi bolsa, kompilyator onı avtomat túrde ciklge aylandırıp, yadtı únemleydi. Usılayınsha, funkcionallıq programmalastırıwda biz dástúrli cikllerdi jazbasaq ta, rekursiya hám ishki iteraciya mexanizmleri arqalı hár qanday quramalı iterativ processlerdi effektiv hám qáwipsiz túrde ámelge asıra alamız.

Konveyerler (Pipelines) hám funkciyalar kompoziciyası

Funkcionallıq programmalastırıwdıń eń kúshli hám kórkem quralı – bul "Konveyerler" (Pipelines) yamasa funkciyalar dizbegi. Sanaattaǵı konveyerlentada ónim bir jumısshıdan ekinshisine ótip, hár basqıshta qayta islengeni sıyaqlı, programmalastırıwda da maǵlıwmatlar bir funkciyadan ekinshisine aǵıp ótedi. Konveyer – bul quramalı operaciyanı kishi, ǵárezsiz hám ápiwayı funkciyalarǵa bóliw hám olardı izbe-iz jalǵaw usılı. Bul process maǵlıwmatlardıń bir basqıshtan ekinshi basqıshqa transformaciyalanıwın (túrleniwin) anıq kórsetip beredi.

Konveyerler "Funkciyalar kompoziciyası" (Function Composition) matematikalıq principine tiykarlanǵan. Matematikada h(x)=g(f(x))h(x) = (f(x))h(x)=g(f(x))degen ańlatpa, x mánisine dáslep f funkciyasın, sońınan shıqqan nátiyjege g funkciyasın qollanıwdı bildiredi. Programmalastırıwda bul kodtı ońnan-shepke qaray oqıwdı talap etedi, bul insanǵa qolaysız bolıwı múmkin. Sol sebepli, kóp ǵana funkcionallıq tiller (Elixir, F#, JavaScript-tiń jańa standartları) "Pipe operatorı"n (|>) usınıs etedi. Bul operator maǵlıwmatlardı shepten-ońǵa qaray, tábiyiy oqılıw tártibinde uzatıwǵa imkaniyat beredi: maǵlıwmat |> f |> g.

Konveyerlerdiń eń úlken artıqmashılıǵı – bul kodtıń oqılıwın (readability) arttırıwı. Imperativ kodta biz kóbinese aralıq ózgeriwshilerdi (temporary variables) jaratıwǵa májbúr bolamız, mısalı: temp1 = filter(data); temp2 = map(temp1); result = reduce(temp2). Konveyer usılında bolsa, bul aralıq ózgeriwshiler kerek emes. Kod bir pútin aǵım sıyaqlı kórinedi: data.filter().map().reduce(). Bul kodtaǵı "shawqım"dı (noise) azaytıwǵa hám logikanıń tiykarǵı mánisine itibar qaratıwǵa járdem beredi. Bunnan tısqarı, konveyerler funkciyalardıń qayta qollanılıwın (reusability) támiyinleydi. Konveyerdegi hárbir funkciya kishi hám universal bolǵanlıqtan (mısalı, tek sannıń kvadratın tabıwshı yamasa tek jup sanlardı tańlawshı), olardı basqa konveyerlerde de erkin qollana beriwge boladı. Bul "Lego" principine uqsas: bizde kishkene tayın bloklar bar hám biz olardı hár túrli tártipte biriktirip, quramalı programmalar dúze alamız. Konveyerdiń buzılıwı da ańsat anıqlanadı, sebebi qáte qaysı basqıshta ketkenin tekseriw jeńil.

Map, Filter, Reduce – Iteraciyanıń úsh tiykarı

Funkcionallıq konveyerlerdiń hám iteraciyanıń tiykarın "Joqarı tártipli funkciyalar" (Higher-Order Functions) quraydı. Olardıń ishinde eń ataqlı hám eń kóp qollanılatuǵın úshewi: Map (Sáykeslendiriw), Filter (Saralaw/Filtrlew) hám Reduce (Qısqartıw/Jıynaw). Bul úsh funkciya derlik barlıq iterativ máselelerdi sheshiwge jetkilikli hám olar zamanagóy tillerdiń (Python, Java streams, JavaScript, Haskell) barlıǵında bar. Map funkciyası kollekciyanıń hárbir elementine belgili bir funkciyanı qollanadı hám uzınlıǵı birdey bolǵan jańa kollekciyanı qaytaradı (N -> N transformaciyası).

Filter funkciyası bolsa, kollekciyadan belgili bir shártke (predikatqa) juwap beretuǵın elementlerdi ǵana tańlap aladı. Ol elementlerdi ózgertpeydi, tek saralaydı. Nátiyjede payda bolǵan jańa kollekciyanıń uzınlıǵı dáslepki

kollekciyadan kishi yamasa oǵan teń bolıwı múmkin (N -> M, bunda M <= N). Mısalı, 100 studenttiń arasınan tek "5" bahasına oqıytuǵınların tańlap alıw – bul filtrlew procesi. Bul imperativ if shártli operatorınıń cikl ishinde qollanılıwınıń funkcionallıq analogı bolıp tabıladı. Reduce (yamasa Fold) – bul eń kúshli hám universal funkciya. Ol pútkil bir kollekciyanı (dizimdi) jalǵız bir mániske (skalyarǵa) aylandıradı. Mısalı, sanlardıń qosındısın tabıw, eń úlken sandı tabıw yamasa bir neshe qatarlardı biriktiriw – olardıń barlıǵı Reduce operaciyası. Reduce funkciyası "akkumulyator" (jıynawshı) túsinigin qollanadı, ol hárbir qádemdegi nátiyjeni saqlap baradı hám aqırında juwmaqlawshı nátiyjeni qaytaradı. Kóp jaǵdaylarda Map hám Filter operaciyaların da Reduce arqalı ámelge asırıwǵa boladı.

Bul processlerdiń effektivligin arttırıw ushın funkcionallıq tiller "Jalqaw esaplaw" (Lazy Evaluation) usılınan paydalanadı. Konveyerde Map hám Filter izbe-iz kelgende, kompyuter dizimdi bir neshe márte tolıq aylanıp shıqpawı múmkin. Onıń ornına, ol elementlerdi birme-bir konveyerden ótkizedi. Yaǵnıy, birinshi element map-tan ótip, birden filter-ge baradı. Eger element kerekli nátiyjege erte jetse (mısalı, findFirst - birinshisin tabıw kerek bolsa), qalǵan elementler ulıwma esaplanbaydı. Bul úlken kólemdegi maǵlıwmatlar (Big Data) menen isleskende oǵada joqarı ónimlilikti támiyinleydi.

BAQLAW SORAWLARÍ:

1.Imperativ programmalastırıwdaǵı "Sırtqı iteraciya" menen funkcionallıq programmalastırıwdaǵı "Ishki iteraciya"nıń ayırmashılıǵı nede?

2.Funkcionallıq programmalastırıwda ne ushın cikller (for, while) ornına rekursiya qollanıladı?

3.Konveyer (Pipeline) túsinigine anıqlama beriń hám onıń kodtıń oqılıwına tásirin túsindiriń.

4.Map, Filter hám Reduce funkciyalarınıń wazıypaları hám olar arasındaǵı ayırmashılıqlar qanday?

5."Jalqaw esaplaw" (Lazy Evaluation) iterativ processlerde qanday artıqmashılıq beredi?

Соседние файлы в предмете Programmalastiriw paradigmalari