2-lekciya_paradigma_qq
.pdf2-lekciya. Programmalastırıw paradigmalarınıń payda bolıwı hám rawajlanıw basqıshları.
Jobası:
1.Dáslepki dáwir: Mashina kodlarınan baslap birinshi joqarı dárejeli tillerge shekemgi jol.
2.Programmalıq krizis hám strukturalıq programmalastırıw paradigmasınıń qáliplesiwi.
3.Obyektke baǵdarlanǵan programmalastırıwdıń (OBP) qáliplesiwi hám onıń ústemligi.
4.Zamanagóy basqısh: Deklarativ, funkcionallıq hám multiparadigmalıq usıllardıń rawajlanıwı.
Dáslepki dáwir hám imperativ tildiń tamırları
Programmalastırıw paradigmalarınıń tariyxı 1940-1950-jıllardan baslanadı. Bul dáwirde programmalastırıw tek ǵana mashina kodlarında, yaǵnıy noller hám birler dizbegi (binar kod) arqalı ámelge asırılatuǵın edi. Bul basqıshta "paradigma" degen túsiniktiń ózi ámelde joq edi, sebebi programmistlerdiń tiykarǵı maqseti logikalıq strukturanı qurıw emes, al apparatlıq támiynat (processor hám yad) penen tikkeley baylanısıw boldı. Hárbir buyrıq processordıń registrlerin basqarıwǵa qaratılǵan bolıp, bul proces júdá kóp waqıttı talap etetuǵın hám qáte jiberiw qáwipi joqarı bolǵan jumıs edi. Bul jerdegi "usıl" – taza imperativ xarakterge iye bolıp, mashinanıń fizikalıq dúzilisine tolıq ǵárezli boldı.
Keyinirek, assembler tilleriniń payda bolıwı menen programmalastırıw sál jeńillesti. Binar kodlardıń ornına mnemonikalıq belgiler (MOV, ADD, JMP) qollanıla basladı, biraq bul da mashinaǵa baǵdarlanǵan tásil edi. 1950-jıllardıń ortalarına kelip, ilimiy hám injenerlik esaplawlardıń quramalısıwı nátiyjesinde birinshi joqarı dárejeli tiller: Fortran (Formula Translation) hám COBOL (Common Business-Oriented Language) jaratıldı. Bul tiller programmalastırıw tariyxındaǵı birinshi úlken burılıs noqatı boldı, sebebi olar matematikalıq formulalardı adamǵa túsinikli formada jazıw imkaniyatın berdi. Bul "proceduralıq" paradigmanıń dáslepki kórinisi edi.
Bul dáslepki tillerdegi tiykarǵı mashqala – kodtıń tártipsizligi edi. Programmanıń basqarıw aǵımı GOTO (belgili bir qatarǵa ótiw) buyrıǵı arqalı ámelge asırılatuǵın edi. Programma kólemi úlkeygen sayın, bunday ótiwlerdiń sanı artıp, kodtıń logikasın qadaǵalaw múmkin bolmay qaldı. Bul qubılıs tariyxta "Spagetti kod" dep ataldı, yaǵnıy bası hám ayaǵı tabılmaytuǵın shiyelenisken makaron sıyaqlı kodlar payda boldı. Sol waqıttaǵı paradigma tek ǵana "kodtıń
islewin" talap etti, biraq onıń strukturasına yamasa keleshekte ońlanıwına itibar qaratpadı.
Usı dáwirde, 1958-jılı LISP tiliniń jaratılıwı menen, imperativ usılǵa qarama-qarsı bolǵan "Funkcionallıq paradigma"nıń da dáslepki tuqımları sewildi. Lisp matematikalıq lambda-esaplawlarǵa tiykarlanǵan bolıp, ol maǵlıwmatlardı hám kodtı dizim (list) retinde qabılladı. Biraq, ol dáwirdegi kompyuterlerdiń quwatı jetkiliksiz bolǵanlıqtan hám imperativ usıl (Fortran) keń tarqalǵanlıqtan, funkcionallıq programmalastırıw tek akademiyalıq ortalıqta qalıp qoydı. Sonda da, bul basqısh programmalastırıw tilleri tek buyrıq beriw emes, al esaplaw modellerin súwretlew quralı ekenin kórsetip berdi.
Programmalıq krizis hám strukturalıq, obyektli paradigmalar
1960-jıllardıń sońına kelip, dúnya júzi "Programmalıq támiynat krizisi"ne (Software Crisis) ushıradı. Apparatlıq támiynat kúsheyip, programma talapları quramalasqan sayın, eski usıl menen jazılǵan proektlerdi basqarıw qoldan kelmey qaldı. Proektler byudjetten asıp ketti, mápler buzıldı hám kodlarda qáteler júdá kóp boldı. 1968-jılı belgili alım Edsger Deykstra "Go To Statement Considered Harmful" (GOTO operatorı zıyanlı dep esaplanadı) atlı ataqlı maqalasın jariyadı. Bul waqıya "Strukturalıq programmalastırıw" paradigmasınıń rásmiy túrde qáliplesiwi hám rawajlanıwınıń baslanıwı boldı.
Strukturalıq paradigma programmanı úsh tiykarǵı basqarıw konstrukciyasına (izbe-iz orınlaw, shártli ótiw hám cikller) hám de funkciyalarǵa (proceduralarǵa) bólip islewdi usınıs etti. Algol, Pascal hám C tilleri bul paradigmanıń eń jarqın mısalları boldı. Bul tásil "top-down" (joqarıdan-tómen) proektlestiriw usılın alıp keldi, yaǵnıy úlken mashqala kishi funkciyalarǵa bóliniw arqalı sheshildi. Strukturalıq programmalastırıw kodtıń oqılıwın hám isenimliligin oǵada arttırdı, bul bolsa operaciyalıq sistemalar (mısalı, UNIX) sıyaqlı úlken sistemalardı jaratıwǵa imkaniyat berdi.
Biraq, waqıt ótiwi menen strukturalıq programmalastırıwdıń da kemshilikleri biline basladı. Maǵlıwmatlar (data) hám olardı qayta isleytuǵın funkciyalar (code) bir-birinen bólek saqlanatuǵın edi. Programma quramalasıp, maǵlıwmat túrleri kóbeygen sayın, global maǵlıwmatlardı basqarıw qıyınlastı. Usı mashqalanı sheshiw ushın 1970-80-jılları "Obyektke baǵdarlanǵan programmalastırıw" (OBP) paradigması saxnaǵa shıqtı. Simula 67 hám Smalltalk tilleri klasslar, obyektler, miyrasxorlıq hám polimorfizm túsiniklerin alıp keldi. Bul paradigma maǵlıwmat penen onı isleytuǵın kodtı bir "kapsula"ǵa (obyektke) biriktiriwdi usınıs etti.
OBP paradigmasınıń "altın dáwiri" 1990-jıllarǵa tuwrı keledi. C++ tili strukturalıq C tiliniń tezligin hám obyektli usıldıń qolaylılıǵın birlestirdi. Keyinirek payda bolǵan Java tili bolsa, yadtı avtomat basqarıw hám platformaǵa ǵárezsizlik ideyaların qosıp, OBP-nı sanaattaǵı standartqa aylandırdı. Bul dáwirde baǵdarlamashılar endi tek algoritmler haqqında emes, al real dúnya obyektleriniń modellerin qurıw (modellestiriw) haqqında oylay basladı. OBP úlken komandalarda kodtı bólistirip islewdi hám kodtı qayta qollanıwdı (reusability) eń joqarı dárejege kóterdi.
Zamanagóy basqısh hám paradigmalar sintezi
XXI ásirdiń baslarında internettiń jedel rawajlanıwı "Skriptli programmalastırıw" paradigmasınıń kúsheyiwine alıp keldi. Perl, Python, PHP, JavaScript sıyaqlı tiller kodtıń orınlanıw tezliginen góre, onı jazıw tezligine (rapid development) kóbirek itibar qarattı. Bul tiller dinamikalıq tiplestiriwge tiykarlanǵan bolıp, olar qatallıqtan góre iykemlilikti aldıńǵı orınǵa qoydı. Bul basqıshta veb-programmalastırıw hám maǵlıwmatlardı qayta islew zárúrligi artqanlıqtan, kodtıń tez ózgeriwsheńligi hám integraciyası áhmiyetli boldı.
Keyingi úlken ózgeris 2005-jıllardan baslap processorlardıń bir yadro sheginen shıǵıp, kóp yadrolı (multi-core) arxitekturaǵa ótiwi menen baylanıslı. Dástúrli OBP hám imperativ tiller parallel processlerdegi maǵlıwmatlar qáwipsizligin (thread safety) támiyinlewde qıyınshılıqlarǵa ushıradı. Bul jaǵday "Funkcionallıq programmalastırıw" (FP) paradigmasınıń qaytadan oyanıwına sebep boldı. Haskell, Scala, F# sıyaqlı tiller hám JavaScript, Java (Stream API) ishinde funkcionallıq elementlerdiń payda bolıwı, ózgermeytuǵın maǵlıwmatlar (immutability) hám taza funkciyalar (pure functions) arqalı parallel esaplawlardı ańsatlastırdı.
Búgingi kúngi eń sońǵı basqısh – bul "Multiparadigmalar" (kóp paradigmalıq) dáwiri. Zamanagóy tiller (Python, Swift, Rust, C#, Kotlin) tek bir paradigma menen sheklenbeydi. Olar imperativ, obyektli hám funkcionallıq usıllardıń eń jaqsı táreplerin ózinde birlestirgen. Programmist endi qaysı tildi tańlawdan góre, sol tildiń ishinde qaysı usıldı qollanıw kerekligin tańlaydı. Mısalı, interfeys ushın OBP qollanılsa, maǵlıwmatlardı qayta islew ushın funkcionallıq usıl qollanılıwı múmkin.
Juwmaqlap aytqanda, programmalastırıw paradigmalarınıń rawajlanıwı spiral tárizli bolıp tabıladı. Biz tómen dárejeli kodtan joqarı abstrakciyaǵa, strukturasızlıqtan strukturaǵa, onnan obyektlerge hám endi qaytadan matematikalıq funkciyalarǵa, biraq jańa sapada qaytıp atırmız. Bul rawajlanıwdıń
háreketlendiriwshi kúshi – insan miynetiniń ónimliligin arttırıw hám barǵan sayın quramalasıp baratırǵan sistemalardı basqarıwǵa bolǵan talpınıs bolıp esaplanadı. Keleshekte kvant kompyuterleriniń rawajlanıwı menen, bálkim, pútkilley jańa paradigmalar payda bolıwı múmkin.
BAQLAW SORAWLARÍ:
1."Spagetti kod" túsinigi neni ańlatadı hám ol qaysı dáwirge tán mashqala edi?
2.Edsger Deykstranıń "Strukturalıq programmalastırıw"ǵa qosqan
úlesi nede?
3.Obyektke baǵdarlanǵan programmalastırıw (OBP) paradigması qanday tiykarǵı mashqalanı sheshiw ushın payda boldı?
4.Ne sebepten XXI ásirde funkcionallıq programmalastırıw paradigması qaytadan aktual bolıp basladı?
5.Multiparadigmalı tillerdiń zamanagóy programmalastırıwdaǵı áhmiyeti qanday?
