Pagrindinės programavimo paradigmos. Programavimo paradigmos samprata Deklaratyvioji ir procedūrinė atmintis


Įvertinimas: / 0
Išsami informacija Peržiūrų skaičius: 3084

Programavimo paradigmos

Kas vis dėlto yra paradigma? Galima sakyti, kad tai tam tikras požiūris į supančio pasaulio reiškinius ir galimų veiksmų su jais idėja. Programavime paradigma paprastai suprantama kaip apibendrinimas apie tai, kaip turėtų būti organizuojamas programos darbas.

Be kita ko, yra tokios programavimo paradigmos kaip direktyvinė (struktūrinė), objektinė ir deklaratyvioji (funkcinė-loginė). Daugelis kalbų palaiko kelias programavimo paradigmas. Kita vertus, yra kalbų, orientuotų tik į vienos paradigmos įgyvendinimą.

Struktūrinis programavimas

Kai kurie atstovai: Fortran, Pascal, C.

Vadovaujantis programa nurodo, kaip pasiekti rezultatą, žingsnis po žingsnio aprašant veiksmus. Todėl tokį programavimą gana lengva suprasti.

Struktūrizuotame programavime komandų vykdymo seka visiškai priklauso nuo įvesties duomenų.

Direktyviniame programavime vienu metu atsirado idėja lokalizuoti dalį kodo į vadinamąsias paprogrames (funkcijas, metodus), o vėliau jas iškvietus iš skirtingų pagrindinės programos vietų. Kai iškviečiama, paprogramė gali būti perduodama bet kokius duomenis argumentų forma; o paprogramė savo ruožtu gali grąžinti rezultatą (tai yra jos vykdymo metu gautus duomenis) į pagrindinę programą.

Funkcinis ir loginis programavimas

Funkcinių kalbų atstovai: List, Haskell.

Loginių kalbų atstovas: Prolog.

Deklaracinė programa nurodo (deklaruoja), ką reikia pasiekti kaip tikslą. Svarbu tiksliai suformuluoti problemą. Programuotojas nenurodo algoritmo, kaip tai išspręsti.

Funkcinis programavimas remiasi matematine funkcijos, kuri nekeičia savo aplinkos, samprata; Tai yra skirtumas tarp funkcinio programavimo ir funkcijų struktūrinėse kalbose. Funkcijų programą sudaro funkcijų apibrėžimų rinkinys, kuris savo ruožtu reiškia iškvietimus į kitas funkcijas ir teiginius, valdančius iškvietimų seką. Kiekviena funkcija grąžina tam tikrą reikšmę ją iškvietusiai funkcijai, kurios vertinimas vėliau tęsiamas; šis procesas kartojamas tol, kol pasiekiamas rezultatas.

Loginiame programavime programos išreiškiamos kaip matematinės logikos formulės, o problemos sprendimas pasiekiamas iš jų išvedant logines pasekmes.

Objektinis programavimas

Objektinių kalbų atstovai: C++, Java, Python.

Ypatingas dėmesys skiriamas duomenims, kurie programoje vaizduojami kaip objektai. Objektai sąveikauja tarpusavyje naudodami pranešimų perdavimo mechanizmą. Programuotojo užduotis yra įgyvendinti objektus taip, kad su jais sąveikaujant būtų galima gauti norimą rezultatą.

OOP skirta sudėtingesnėms ir sudėtingesnėms problemoms spręsti, palyginti su direktyviniu programavimu.

OOP yra pagrįsta tokiomis sąvokomis kaip paveldėjimas, polimorfizmas ir inkapsuliavimas.

Inkapsuliuojant daroma prielaida, kad nesvarbios objekto detalės yra paslėptos. Objektas, gavęs bet kokią komandą, „žino“, kaip jį apdoroti pagal klasę, kuriai jis priklauso.

Visi objektai yra klasių egzemplioriai, kurie vienas kito atžvilgiu gali veikti kaip tėvas-vaikas. Vaikų klasės paveldi tėvų savybes. Tuo atveju, kai nereikia 100% paveldėjimo, į pagalbą ateina vadinamasis polimorfizmas, kuris apima pirminės klasės metodus vaikų klasėse.

Programavimo paradigma – tai idėjų ir sąvokų rinkinys, lemiantis programų rašymo stilių.

Imperatyvioji paradigma aprašo skaičiavimo procesą instrukcijomis, kurios keičia programos būseną. Privalomoji programa yra labai panaši į imperatyvius nurodymus natūraliomis kalbomis, tai yra, tai yra komandų seka, kurią kompiuteris turi vykdyti. Remiantis Turing-Post baigtinio automato modeliu.

Pirmosios privalomos kalbos buvo mašininiai kodai – gimtoji kompiuterio programavimo kalba. Šiomis kalbomis instrukcijos buvo itin paprastos, o tai sumažino kompiuterių apkrovą, tačiau apsunkino didelių programų rašymą. 1954 m. pasirodė pirmoji „žmogiškoji“ programavimo kalba - FORTRAN, vėliau ALGOL, COBOL, BASIC, Pascal, C.

Vienas iš būdingų imperatyvaus programavimo bruožų yra kintamųjų su „destruktyvaus priskyrimo“ operacija. Tai yra, buvo kintamasis A, jo reikšmė X. Algoritmas nurodo kitame žingsnyje kintamajam A priskirti reikšmę Y. Reikšmė, kurią turėjo A, bus „užmiršta amžiams“.

Imperatyvusis programavimas labiausiai tinka mažoms antrinėms užduotims įgyvendinti, kur šiuolaikiniuose kompiuteriuose labai svarbus vykdymo greitis. Be to, darbas su išoriniais įrenginiais paprastai apibūdinamas kaip nuoseklus operacijų vykdymas ("atidarykite čiaupą, ištraukite vandenį"), todėl tokios užduotys yra idealios kandidatams būtiniausiam įgyvendinimui.

Atrodo, kad programavimo pagrindų mokymo imperatyvios paradigmos pagrindų pasirinkimas nekelia abejonių. Tam yra keletas priežasčių:

· imperatyvioji paradigma artimiausia žmogaus prigimčiai ir intuityviai algoritmo sampratai ankstyvosiose mąstymo raidos stadijose (jau pradinėje mokykloje yra teigiama vystomo ugdymo su algoritmizavimo elementais patirtis);

· programavimas imperatyviosios paradigmos rėmuose yra efektyvus atliekant plačią užduočių klasę, iš kurių daugelis patenka į pagrindinės mokyklos vyresniųjų klasių mokinių proksimalinės raidos zoną;

· imperatyvioji paradigma yra arčiausiai kompiuterio prigimties, pagrindinių jo veikimo principų, nes, nepaisant viso šiuolaikinio kompiuterio sudėtingumo, aparatūros lygmeniu jis vis tiek gali būti laikomas tam tikru automatu (procesorius + atmintis + ...) su baigtiniu būsenų (turinio) atminties rinkiniu);

· programinės įrangos produktų, sukurtų išskirtinai deklaratyvaus programavimo paradigmos rėmuose, dalis nedidelė; Paprastai sprendžiant problemas naudojamas paradigmų derinys, iš kurių viena yra būtina;

· didelis programavimo sistemų pasirinkimas nepriklausomos programinės įrangos pavidalu ir į kitas sistemas integruotų posistemių pavidalu, leidžiantis kurti programinius produktus naudojant imperatyviąją paradigmą;


· platus mokomųjų, informacinių ir kitų leidinių apie atitinkamas programavimo sistemas asortimentas popierine ir elektronine forma įvairiose žiniasklaidos priemonėse ir pasauliniame tinkle.

Trūkumas: gryna forma leidžia išspręsti tik labai paprastas problemas.

Įvykiu valdomas programavimas – tai programavimas, kuriame nurodomos programos reakcijos į įvairius įvykius (vartotojo veiksmai). PMS gali būti laikomas imperatyvios paradigmos „palikuonu“. SUP turi 2 poklasius:

1. Lygiagretusis programavimas vaizduoja programą kaip komunikacijos procesų rinkinį, kuris gali būti vykdomas lygiagrečiai. Tokios programos gali būti vykdomos arba viename procesoriuje (kaitant kiekvieno proceso žingsnių vykdymą), arba keliuose.

Lygiagrečioje procesų sistemoje kiekvienas atskiras procesas apdoroja įvykius. Įvykiai gali būti bendri visai sistemai arba individualūs vienam ar keliems procesams. Tokiais terminais gana patogu apibūdinti, pavyzdžiui, grafinės vartotojo sąsajos elementus arba bet kokių realių procesų modeliavimą (pavyzdžiui, eismo kontrolę) – kadangi tokioms užduotims įvykio sąvoka yra natūrali.

2.Objektinis programavimas – tai programavimo technologija, kai programa žiūrima kaip į objektų ir jų sąveikų rinkinį. Kiekvienas programos objektas yra tam tikros klasės egzempliorius; - klasės gali paveldėti savo pirminių klasių atributus ir metodus, kartu pridėdamos savo. Klasių hierarchija leidžia modeliuoti sprendžiamos problemos esmę keliais detalumo lygiais ir tada naudoti klasę, atitinkančią detalumo lygį, reikalingą konkrečiai papildomai užduočiai išspręsti.

Svarbu pabrėžti šias pagrindines objektų savybes:

1.) Kadangi vienas objektas gali paveikti kitą tik siųsdamas pastarajam pranešimus, jis jokiu būdu negali tiesiogiai dirbti su paties „pašnekovo“ duomenimis, todėl negali pažeisti jų vidinio nuoseklumo. Ši savybė (duomenų slėpimas) paprastai vadinama inkapsuliavimu.

2.) Kadangi objektai sąveikauja tik keisdamiesi pranešimais, pašnekovo objektai gali nieko nežinoti apie pranešimų tvarkyklių įgyvendinimą savo atitikmenyje. Sąveika vyksta tik pranešimų / įvykių, kuriuos gana lengva susieti su domenu, atžvilgiu. Ši savybė (sąveikos aprašymas tik pagal domeną) vadinama abstrakcija.

3.) Objektai sąveikauja išskirtinai siųsdami vieni kitiems pranešimus. Todėl, jei bet kuriame objekto sąveikos scenarijuje pakeisite savavališką objektą kitu, galinčiu apdoroti tuos pačius pranešimus, scenarijus taip pat bus įgyvendinamas. Ši savybė (gebėjimas pakeisti objektą kitu panašios klasės struktūros objektu) vadinama polimorfizmu.

Daugelis šiuolaikinių kalbų palaiko OOP, nors ir skirtingu laipsniu: grynai į objektus orientuotos kalbos, tokios kaip Smalltalk ir Ruby, yra skirtos palaikyti ir net įgyvendinti objektinį kūrimo stilių, o nepalaiko kitų programavimo stilių; - daugiausia į objektus orientuotos kalbos, tokios kaip Java, C++ ir Python, pirmiausia skirtos palaikyti OOP, tačiau leidžia naudoti procedūrinio programavimo elementus; - Istoriškai procedūrinės kalbos, pavyzdžiui, Perl ir Fortran 2002, buvo patobulintos ir buvo pridėtas kai kurių OOP elementų palaikymas.

Deklaratyvaus programavimo paradigma apibrėžia skaičiavimo procesą, aprašydamas paties skaičiavimo logiką, o ne programos valdymo logiką.

Deklaratyvus programavimas yra imperatyvaus programavimo priešingybė; pirmasis aprašo, ką reikia padaryti, o antrasis – kaip tai padaryti.

Svarbiausios deklaratyvaus programavimo rūšys yra funkcinis ir loginis (arba reliacinis) programavimas.

1. Funkcinis programavimas yra viena iš imperatyvaus požiūrio alternatyvų. Jis pagrįstas Bažnyčios lambda skaičiavimu. Privalomame programavime algoritmai yra nuosekliai vykdomų operacijų aprašymai. Yra sąvoka „dabartinis vykdymo veiksmas“ (tai yra laikas) ir „dabartinė būsena“, kuri per tą laiką keičiasi.

Funkciniame programavime nėra laiko sąvokos. Programos yra išraiškos; programos vykdymas susideda iš šių išraiškų įvertinimo.

Kadangi posakių vertinimo tvarka neturi reikšmės, funkcinį programavimą galima natūraliai įgyvendinti platformose, kurios palaiko lygiagretumą.

Funkcinis programavimas, kaip ir kiti „nebūtinai“ programavimo modeliai, dažniausiai naudojamas sprendžiant problemas, kurias sunku suformuluoti nuosekliųjų operacijų prasme. Į šią kategoriją patenka beveik visos užduotys, susijusios su dirbtiniu intelektu. Tarp jų verta paminėti vaizdų atpažinimo, bendravimo su vartotoju natūralia kalba, ekspertinių sistemų diegimo, automatizuoto teoremų įrodinėjimo, simbolinių skaičiavimų užduotis. Šios užduotys yra toli nuo tradicinio taikomųjų programų programavimo, todėl informatikos mokymo programose joms neskiriama daug dėmesio.

Loginis programavimas

Funkciniame programavime programos yra išraiškos, o jų vykdymas susideda iš jų vertės apskaičiavimo. Loginiame programavime programa yra teorija (aprašyta gana ribota kalba) ir teiginys, kurį reikia įrodyti. Šio teiginio įrodymas bus programos vykdymas.

Loginis programavimas ir Prolog kalba atsirado natūralios kalbos analizės srityje. Vėliau buvo nustatyta, kad loginis programavimas yra toks pat veiksmingas įgyvendinant kitas dirbtinio intelekto užduotis.

Loginis programavimas leidžia natūraliai lygiagrečiai įgyvendinti.

Paaiškėjo, kad tos paradigmos, kurios anksčiau su prakaitu ir krauju prasiskverbdavo į šviesą per minias tradicinių metodų šalininkų, pamažu pamirštamos. Šios paradigmos atsirado programavimo pradžioje ir kodėl jos atsirado, kokius privalumus suteikė ir kodėl jos vis dar naudojamos, vis dar naudinga žinoti bet kuriam kūrėjui.

GERAI. Įžanga labai smagi, bet tu jos vis tiek neskaitai, tad jei kam įdomu, kviečiame dalyvauti!

Būtinas programavimas



Istoriškai didžioji dauguma mūsų programuojamų kompiuterinių technologijų turi būseną ir yra programuojamos pagal instrukcijas, todėl pirmosios programavimo kalbos daugiausia buvo grynai imperatyvios, t.y. nepalaikė jokių kitų paradigmų, išskyrus imperatyviąją.

Tai apėmė mašininius kodus, surinkimo kalbas ir ankstyvąsias aukšto lygio kalbas, tokias kaip Fortran.

Pagrindiniai klausimai:

Šioje paradigmoje skaičiavimas aprašomas instrukcijomis, kurios žingsnis po žingsnio keičia programos būseną.

Žemo lygio kalbomis (pvz., surinkimo kalba) būsena gali būti atmintis, registrai ir vėliavėlės, o instrukcijos gali būti tos instrukcijos, kurias palaiko tikslinis procesorius.

Aukštesnio lygio (pvz., C) būsena yra tik atmintis; instrukcijos gali būti sudėtingesnės, todėl jų veikimo metu atmintis gali būti paskirstoma ir atlaisvinama.

Labai aukšto lygio programose (pvz., Python, jei ją užprogramuojate būtinai), būsena apsiriboja tik kintamaisiais, o komandos gali būti sudėtingos operacijos, kurioms surinkimo kalba prireiktų šimtų eilučių.

Pagrindinės sąvokos:

- Instrukcijos
- Valstybės

Sugeneruotos sąvokos:

- Užduotis
- Perėjimas
- Atmintis
- Indeksas

Kaip pagrindinis:
- Asamblėjos kalbos
- Fortranas
- Algolis
-Kobolas
- Paskalis
– C
- C++
-Ada
Kaip pagalbinė priemonė:
- Python
- Ruby
- Java
- C#
-PHP
- Haskell (per monadas)

Verta paminėti, kad dauguma šiuolaikinių kalbų vienu ar kitu laipsniu palaiko būtiną programavimą. Net gryna funkcinė kalba Haskell gali būti parašyta imperatyviai.

Struktūrinis programavimas



Struktūrinis programavimas yra programavimo paradigma (dažnai naudojama ir kaip kūrimo metodika), kuri buvo pirmasis didelis žingsnis programavimo kūrimo procese.

Struktūrinio programavimo pradininkai buvo tokie žinomi žmonės kaip E. Dijkstra ir N. Wirth.

Šios paradigmos pradininkės buvo Fortran, Algol ir B kalbos, vėliau jas pakeitė Pascalis ir C.

Pagrindiniai klausimai:

Ši paradigma pristato naujas sąvokas, kurios sujungia dažniausiai naudojamus imperatyvaus kodo rašymo modelius.

Struktūriniame programavime vis dar dirbame su būsena ir instrukcijomis, tačiau įvedama sudėtinės instrukcijos (bloko), šakos ir kilpos nurodymų sąvoka.

Atlikus šiuos paprastus pakeitimus, daugeliu atvejų galima pašalinti goto teiginį ir supaprastinti kodą.

Kartais goto daro kodą lengviau skaitomą, todėl jis vis dar plačiai naudojamas, nepaisant visų oponentų tvirtinimų.

Pagrindinės sąvokos:

- Blokas
- Dviratis
- Šakojantis

Kalbos, palaikančios šią paradigmą:

Kaip pagrindinis:
– C
- Paskalis
– Pagrindinis
Kaip pagalbinė priemonė:
- C#
- Java
- Python
- Ruby
- JavaScript

Iš dalies palaikoma:
- Kai kurie makrokomandų surinkėjai (naudojant makrokomandas)

Vėlgi, dauguma šiuolaikinių kalbų palaiko struktūrinę paradigmą.

Procedūrinis programavimas



Vėlgi, didėjantis programinės įrangos sudėtingumas privertė programuotojus ieškoti kitų būdų, kaip aprašyti skaičiavimus.

Tiesą sakant, vėl buvo pristatytos papildomos sąvokos, kurios leido mums naujai pažvelgti į programavimą.

Ši koncepcija šį kartą buvo procedūra.

Dėl to atsirado nauja programų rašymo metodika, kuri sveikintina iki šiol – pirminė problema išskaidoma į smulkesnes (naudojant procedūras) ir taip vyksta tol, kol visų konkrečių procedūrų sprendimas pasirodo esąs menkas.

Pagrindiniai klausimai:

Procedūra yra nepriklausoma kodo dalis, kuri gali būti vykdoma kaip viena instrukcija.

Šiuolaikiniame programavime procedūra gali turėti kelis išėjimo taškus (grįžimą į C panašiomis kalbomis), kelis įėjimo taškus (naudojant išeigą Python arba statinius vietinius kintamuosius C++), turėti argumentus, grąžinti reikšmę kaip jos vykdymo rezultatą, būti perkrautas skaičiumi, parametrų tipu ir daug daugiau.

Pagrindinės sąvokos:

- Procedūra

Sugeneruotos sąvokos:

- Iššūkis
– Argumentai
- Grįžti
- Rekursija
- Perkrova

Kalbos, palaikančios šią paradigmą:

Kaip pagrindinis:
– C
- C++
- Paskalis
- Objektas Paskalis
Kaip pagalbinė priemonė:
- C#
- Java
- Ruby
- Python
- JavaScript

Iš dalies palaikoma:
- Early Basic

Verta paminėti, kad keli įėjimo taškai iš visų šių kalbų palaikomi tik Python.

Modulinis programavimas



Dar kartą didėjantis programų sudėtingumas privertė kūrėjus dalytis savo kodu. Šį kartą procedūrų nepakako ir šį kartą buvo pristatyta nauja koncepcija – modulis.

Žvelgdamas į ateitį, pasakysiu, kad moduliai taip pat nesugebėjo neįtikėtinu greičiu sutalpinti augančio programinės įrangos sudėtingumo, o vėliau – paketų (tai irgi modulinis programavimas), klasių (tai jau yra OOP) ir šablonų (generalizuotas programavimas). ) pasirodė.

Modulinio programavimo stiliumi aprašyta programa yra modulių rinkinys. Kas yra viduje, klasės, privalomas kodas ar grynos funkcijos, nesvarbu.

Modulių dėka pirmą kartą programuojant atsirado rimta inkapsuliacija – galima naudoti bet kokias esybes modulio viduje, bet nerodyti jų išoriniam pasauliui.

Pagrindiniai klausimai:

Modulis yra atskiras pavadintas programos vienetas, jungiantis kitus panašių funkcijų programos vienetus.

Pavyzdžiui, faile List.mod yra Sąrašo klasė
ir darbo su juo funkcijos – modulis.

Aplankas Geometry, kuriame yra Shape, Stačiakampio ir Trikampio moduliai, taip pat yra modulis, nors kai kurios kalbos atskiria modulio ir paketo sąvokas (tokiomis kalbomis paketas yra modulių ir (arba) kitų elementų rinkinys. paketai).

Modulius galima importuoti (sujungti), kad būtų galima naudoti juose deklaruojamus subjektus.

Pagrindinės sąvokos:

- Modulis
- Importuoti

Sugeneruotos sąvokos:

- Plastikinis maišelis
- Inkapsuliavimas

Kalbos, palaikančios šią paradigmą:

Kaip pagrindinis:
- Haskelas
- Paskalis
- Python
Kaip pagalbinė priemonė:
- Java
- C#
– „ActionScript 3“.

Iš dalies palaikoma:
- C/C++

Kai kurios kalbos įveda atskiras modulių abstrakcijas, o kitose moduliams įgyvendinti gali būti naudojami antraštės failai (C/C++), vardų erdvės, statinės klasės ir (arba) dinaminių nuorodų bibliotekos.

Vietoj išvados

Šiame straipsnyje neaprašiau dabar populiaraus objektinio, bendrojo ir funkcinio programavimo. Tiesiog todėl, kad turiu savo, gana radikalią nuomonę šiuo klausimu ir nenorėjau pradėti holivaro. Bent jau kol kas. Jei tema pasirodys naudinga bendruomenei, planuoju parašyti keletą straipsnių, kuriuose išsamiai apibūdinsiu kiekvienos iš šių paradigmų pagrindus.

Taip pat nieko nerašiau apie egzotiškas paradigmas, tokias kaip automatas, aplikacinis, aspektas/agentas/komponentas orientuotas programavimas. Nenorėjau, kad straipsnis būtų labai didelis, ir vėlgi, jei tema bus paklausi, parašysiu apie šias paradigmas, galbūt išsamiau ir su kodų pavyzdžiais.

(ALGORITMIZAVIMO IR PROGRAMAVIMO PAGRINDAI)
  • Programavimo paradigmos ir technologijos
    1 skyriaus uždaviniai. Išstudijuoti „programavimo paradigmos“, „programavimo technologijos“ sąvokas. 2. Įgyti bendrą supratimą apie šiuolaikines programinės įrangos kūrimo technologijas. 3. Išstudijuoti struktūrinės programos kūrimo etapus. 4. Susipažinkite su programinės įrangos kūrimo gyvavimo ciklo modeliais...
  • SE programavimo paradigmos
    SWEBOK apima daugybę programavimo paradigmų Žr.: Lavrishcheva E. M. Assembly-type programing paradigms in software engineering // UKRProg-2014. Nr.2-3. 121-133 p. . Jo programavimo įkrovos stovyklose yra: procedūrinis programavimas(kursas CS1011 „Programavimo pagrindai“),...
    (PROGRAMINĖS ĮRANGOS INŽINERIJOS IR TECHNOLOGIJOS SUDĖTINĖMS SISTEMoms PROGRAMUOTI)
  • PROGRAMAVIMO PARADIGMOS
    MODULINIS PROGRAMAVIMAS. PAGRINDINĖS SĄVOKOS Viena iš pagrindinių šiuolaikinio programavimo problemų yra pakartotinis modulių ir komponentų (KPI) naudojimas. Tai gali būti programos, paprogramės, algoritmai, specifikacijos ir pan., tinkami naudoti kuriant naują, sudėtingesnę programinę įrangą....
    (PROGRAMINĖS ĮRANGOS INŽINERIJA. PARADIGMOS, TECHNOLOGIJOS IR CASE ĮRANKIAI)
  • Procedūrinė paradigma
    Procedūrinė paradigma buvo chronologiškai pirmoji ir vyravo ilgą laiką. Šiuo metu ji pamažu užleidžia vietą objektinei paradigmai, nors vis dar užima apie pusę programinės įrangos kūrimo rinkos. Jis taikomas visuose programinės įrangos kūrimo lygiuose...
    (ALGORITMIZAVIMAS IR PROGRAMAVIMAS)
  • Deklaratyvioji ir procedūrinė atmintis
    Kitas savarankiškas, nuo kitų nepriklausomas, funkcinio atminties organizavimo būdas yra jos padalijimas į deklaratyvus Ir procedūrinis.Šie du atminties organizavimo būdai turi visiškai suprantamą funkcinį pagrindą. Deklaracinės atminties forma yra skirta palaikyti psichinę...
    (Psichologija ir pedagogika)
  • Pačioje kompiuterių programavimo eros pradžioje atsiradusios bendrosios programavimo paradigmos, įskaitant taikomojo, teorinio ir funkcinio programavimo paradigmas, yra stabiliausios.

    Taikomajam programavimui būdinga probleminė orientacija, atspindinti informacijos kompiuterizavimą ir skaitinio apdorojimo skaičiavimo procesus, tyrinėtą dar gerokai prieš kompiuterių atsiradimą. Čia greitai pasirodė aiškus praktinis rezultatas. Natūralu, kad tokiose srityse programavimas mažai kuo skiriasi nuo kodavimo, jam paprastai pakanka operatoriaus veiksmų vaizdavimo stiliaus. Taikomojo programavimo praktikoje įprasta pasitikėti patikrintais šablonais ir procedūrų bibliotekomis ir vengti rizikingų eksperimentų. Vertinamas mokslinių skaičiavimų tikslumas ir stabilumas. Fortran kalba, programų programavimo veteranė, šioje srityje palaipsniui pradėjo šiek tiek pasiduoti Pascal, C, o superkompiuteriuose - lygiagrečioms programavimo kalboms, tokioms kaip Sisal.

    Teorinis programavimas vadovaujasi publikavimo orientacija, kuria siekiama palyginti mokslinių eksperimentų programavimo ir informatikos srityse rezultatus. Programavimas bando išreikšti savo formalius modelius, parodyti jų reikšmę ir esminį pobūdį. Šie modeliai paveldėjo pagrindines susijusių matematinių sąvokų ypatybes ir įsitvirtino kaip algoritminis metodas kompiuterių moksle. Konstrukcijų įrodymų troškimas ir jų efektyvumo, tikimumo, teisingumo, teisingumo ir kitų formalizuotų ryšių įvertinimas programų diagramose ir tekstuose buvo pagrindas struktūriniam programavimui ir kitiems patikimumo pasiekimo metodams programos kūrimo procese, pavyzdžiui, kompetentingam programavimui. . Standartiniai Algol ir Pascal pogrupiai, kurie buvo programavimo teorijos darbo medžiaga, buvo pakeisti patogesnėmis taikomosiomis kalbomis eksperimentams, tokioms kaip ML, Miranda, Scheme, Haskell ir kt. Dabar prie jų prisijungia C ir Java naujovės.

    Funkcinis programavimas susiformavo kaip duoklė matematinei orientacijai dirbtinio intelekto tyrimuose ir plėtroje bei naujų horizontų kūrimui kompiuterių moksle. Abstraktus požiūris į informacijos pateikimą, lakoniškas, universalus funkcijų konstravimo stilius, skirtingų funkcijų kategorijų vykdymo aplinkos aiškumas, rekursinių konstrukcijų laisvė, pasitikėjimas matematiko ir tyrėjo intuicija, išvengimas per anksti naštos. Neprincipingų atminties paskirstymo problemų sprendimas, nepagrįstų apibrėžimų apimties apribojimų atmetimas - visa tai John McCarthy sieja su Lisp kalbos idėja. Pirmųjų Lisp diegimų apgalvotas ir metodinis pagrįstumas leido greitai sukaupti naujų problemų sprendimo patirtį ir paruošti jas taikomajam ir teoriniam programavimui. Šiuo metu yra šimtai funkcinių programavimo kalbų, skirtų skirtingoms užduočių klasėms ir techninių priemonių rūšims.

    Padidėjus sprendžiamų problemų sudėtingumui, pasikeitė pagrindinės programavimo paradigmos. Atsirado programavimo priemonių ir metodų stratifikacija, priklausanti nuo kompiuterinių informacijos apdorojimo procesų organizavimo techninių detalių kūrimo gilumo ir bendrumo. Atsirado įvairių programavimo stilių, iš kurių brandžiausias yra į mašiną orientuotas, sisteminis, loginis, transformacinis ir didelio našumo lygiagretusis programavimas.

    Į mašiną orientuotam programavimui būdingas aparatinis požiūris į kompiuterio veikimo organizavimą, kuriuo siekiama pasiekti bet kokias aparatinės įrangos galimybes. Pagrindinis dėmesys skiriamas aparatinės įrangos konfigūracijai, atminties būsenai, komandoms, valdymo perdavimui, įvykių sekai, išimtims ir netikėtumams, įrenginio atsako laikui ir atsako sėkmei. Asamblėjos kalba kurį laiką buvo nustelbta kaip Pascal ir C pasirinkta vizualinė priemonė, net ir mikroprogramavime, tačiau vartotojo sąsajos patobulinimai gali atgauti savo pozicijas.

    Sistemų programavimas ilgą laiką buvo kuriamas spaudžiant aptarnavimo ir užsakomiesiems darbams. Tokiam darbui būdingas gamybos metodas remiasi pirmenybe atkuriamiems procesams ir stabilioms programoms, skirtoms pakartotiniam naudojimui. Tokioms programoms pateisinama kompiliavimo apdorojimo schema, statinė savybių analizė, automatizuotas optimizavimas ir valdymas. Šioje srityje vyrauja imperatyvus-procedūrinis programavimo stilius, kuris yra tiesioginis taikomojo programavimo operatoriaus stiliaus apibendrinimas. Tai leidžia atlikti tam tikrą standartizavimą ir modulinį programavimą, tačiau įgauna gana sudėtingas struktūras, specifikacijas, testavimo metodus, programų integravimo įrankius ir kt. Griežti efektyvumo ir patikimumo reikalavimai tenkinami kuriant profesionalius įrankius, kuriuose naudojama sudėtinga asociatyvi semantinė euristika kartu su sintaksiniu būdu pagrįsto projektavimo ir programų generavimo metodais. Neabejotinas tokių priemonių potencialas praktikoje ribojamas kūrimo sudėtingumo – atsiranda kvalifikacinis reikalavimas.

    Didelio našumo programavimas yra skirtas pasiekti maksimalų įmanomą našumą sprendžiant ypač svarbias problemas. Natūralus kompiuterio veikimo rezervas yra lygiagrečiai procesai. Jų organizavimui reikia išsamiai apsvarstyti laiko santykius ir neprivalomą veiksmų valdymo stilių. Superkompiuteriams, palaikantiems didelio našumo skaičiavimą, reikėjo specialių sistemų programavimo metodų. Grafinio tinklo požiūris į sistemų ir procesų atvaizdavimą lygiagrečioms architektūroms buvo išreikštas specializuotose lygiagrečios programavimo kalbose ir superkompiliatoriuose, pritaikytuose abstrakčiai užduočių lygio procesų hierarchijai susieti su specifine realios įrangos procesorių erdvine struktūra.

    Loginis programavimas atsirado kaip funkcinio programavimo supaprastinimas matematikams ir kalbininkams, sprendžiantiems simbolių apdorojimo problemas. Ypač patraukli yra galimybė naudoti nedeterminizmą kaip konceptualų pagrindą, kuris išlaisvina mus nuo ankstyvo užsakymo programuojant formulių apdorojimą. Procesų generavimo su grąža gamybos stilius yra pakankamai natūralus lingvistiniam požiūriui į formalizuotas žinias ekspertams patikslinti ir sumažina pradinį barjerą.

    Transformacinis programavimas metodologiškai sujungė programos optimizavimo, makrogeneravimo ir dalinio skaičiavimo technikas. Pagrindinė šios srities sąvoka yra informacijos lygiavertiškumas. Ji pasireiškia apibrėžiant programų ir procesų transformacijas, ieškant transformacijų pritaikomumo kriterijų, pasirenkant jų panaudojimo strategiją. Mišrūs skaičiavimai, atidėti veiksmai, tingus programavimas, uždelsti procesai ir kt. yra naudojami kaip informacijos apdorojimo efektyvumo didinimo metodai tam tikromis papildomai nustatytomis sąlygomis.

    Platus programavimo metodas yra natūralus atsakas į radikalius techninės įrangos ir kompiuterių tinklų veikimo patobulinimus. Vyksta skaičiavimo priemonių perėjimas iš techninių priemonių klasės į buitinės technikos klasę. Atsirado pagrindas atnaujinti požiūrį į programavimą, taip pat galimybę atkurti senas idėjas, kurios buvo menkai išplėtotos dėl žemų technologijų ir kompiuterių našumo. Įdomu formuoti mokslinius, evoliucinius, pažintinius ir adaptacinius programavimo metodus, kurie sukuria realių informacijos išteklių ir kompiuterių potencialo racionalios plėtros perspektyvą.

    Profesionalaus, edukacinio ir mėgėjiško programavimo edukacinio žaidimo stiliaus tyrimo metodas gali duoti impulsą ieškoti išradingumo tobulinant programavimo technologijas, kurios negalėjo susidoroti su krizės reiškiniais ankstesnių elementų pagrindu. Evoliucinis požiūris su mobiliuoju programų tobulinimo stiliumi gana aiškiai matomas objektinio programavimo koncepcijoje, kuri palaipsniui perauga į dalykinį programavimą. Pakartotinis apibrėžimų naudojimas ir objektų savybių paveldėjimas gali pailginti derinamos informacijos aplinkų gyvavimo ciklą, padidinti jų veikimo patikimumą ir naudojimo paprastumą.

    Pažintinis požiūris su sąveikiu atvirų sistemų vaizdinės sąsajos kūrimo stiliumi ir naujų garso ir vaizdo įrankių bei nestandartinių įrenginių naudojimu atveria būdus pagerinti sudėtingos informacijos suvokimą ir supaprastinti tinkamą jos apdorojimą.

    Pritaikomas požiūris su ergonomišku individualizuotų individualizuotų informacinių sistemų projektavimo stiliumi suteikia kompiuterių mokslininkams galimybę kompetentingai programuoti, organizuoti ir palaikyti realiu laiku technologinius procesus, jautrius žmogiškajam faktoriui. Programavimo paradigmos raidos kryptis atspindi besidominčių informacinių sistemų kūrimu ir taikymu rato kaitą. Daug svarbių programavimo praktikai sąvokų, tokių kaip įvykiai, išimtys ir klaidos, potencialas, konstrukcijų hierarchija ir ortogonalumas, ekstrapoliacijos ir programos augimo taškai, kokybės matavimas ir kt. nepasiekė pakankamo abstrakcijos ir formalizavimo lygio. Tai leidžia numatyti programavimo paradigmų raidą ir parinkti mokomąją medžiagą komponentų programavimo ateičiai. Jei tradicinėms daugkartinių komponentų parinkimo priemonėms ir būdams buvo taikomas moduliškumo kriterijus, suprantamas kaip optimalus minimalios sukabinimo su maksimaliu funkcionalumu pasirinkimas, tai moderni elementų bazė leidžia valdyti daugiakontaktius įrenginius, atliekančius nesudėtingas operacijas. Tačiau su visais šiais tipais ir programavimo paradigmomis galime susipažinti net naudodami Vikipediją. Šiuo metu yra labai platus programavimo kūrimo spektras įvairiomis kryptimis.

    Redaktoriaus pasirinkimas
    , Afganistanas, Tadžikistanas, Kirgizija, Kazachstanas, Turkmėnistanas, Rusija, Turkija, Kinija ir kt. Platinimas...

    Gruzijoje gyvena svetingi ir draugiški žmonės, kurie visada padės. Atvykę į šią saulėtą šalį, jūs neturite jaudintis, kad turėsite...

    Įvertinimas: / 0 Detalės Peržiūros: 3084 Programavimo paradigmos Kas apskritai yra paradigma? Galima sakyti, kad tai...

    Armėnų kalba () yra indoeuropiečių kalba, paprastai priskiriama atskirai grupei, rečiau derinama su graikų ir frigų kalbomis....
    GADAS Vienas iš trijų Krono sūnų, dangaus valdovo Dzeuso ir jūrų valdovo Poseidono brolio, dar vadinamo Plutonu („turtas“, t.y....).
    Šiuolaikinio žmogaus kraniometrinių (tai yra susijusių su kaukolės matavimais) rodiklių analizė rodo, kad visi gyvi...
    Lankiausi ir savo akimis pamačiau „pirmąją pasaulyje“ čigonų abėcėlę iš Ukrainos. Pagalvojau, kad pirmoji vieta mano mėgstamiausių knygų sąraše...
    Kiekvienas žmogus bent kartą gyvenime yra patyręs kaltės jausmą. Priežastis gali būti įvairių priežasčių. Viskas priklauso konkrečiai nuo...
    Žaisdamas ant Tunguskos upės kanalo kranto jis rado degtukų dėžutę, užpildytą stearinu, kurios viduje buvo popieriaus lapelis, patamsėjęs...