Programavimo

Programavimo paradigmos - tai būdas sugrupuoti programavimo kalbas pagal tai, ką jos daro. Kalbos gali priklausyti daugiau nei vienai paradigmai.

Kai kuriose paradigmose atsižvelgiama į kodo vykdymo būdą, pavyzdžiui, ar leidžiami šalutiniai efektai, ar veiksmai turi būti atliekami tam tikra tvarka. Kitose paradigmose atsižvelgiama į tai, kaip kodas grupuojamas, pvz., kaip kodą suskirstyti į vieną ar dvi dalis (arba daug mažų dalių). Kai kurios kitos paradigmos nagrinėja tvarką ir dalis, dėl kurių programa yra tokia, kokia ji yra.

Skiriamos dvi pagrindinės paradigmų grupės: imperatyvioji ir deklaratyvioji. Kalba gali būti ir viena, ir kita.

Turinys

·         1 Imperatyvus programavimas

·         2 Deklaratyvinis programavimas

·         3 Kitos paradigmos

·         4 Apžvalga

·         5 Paradigmų problemos

·         6 Istorija

o    6.1 Mašininis kodas

o    6.2 Procedūrinės kalbos

o    6.3 Objektinis programavimas

o    6.4 Deklaratyvinės paradigmos

·         7 Susiję puslapiai

·         8 Nuorodos

·         9 Kitos svetainės

Imperatyvusis programavimas

Imperatyviosiose programose programuotojai pateikia kompiuteriui tam tikrų veiksmų, kuriuos reikia atlikti norint ką nors padaryti, rinkinį. Jei kas nors norėtų, kad kompiuteris nupieštų katės veidą, galėtų duoti tokius nurodymus: "Nupiešk čia apskritimą, ten nupiešk du mažesnius apskritimus, ant viršaus nupiešk du trikampius" ir pan. Imperatyvios programos kartais turi daug šalutinių poveikių.

Yra dvi pagrindinės imperatyvų paradigmos, ir daugeliu atvejų kalba turi abi:

  • Struktūrinis - kompiuteriui duodami nurodymai, kurie visada pateikiami tam tikra tvarka. Tokie žingsniai kaip "grįžk į 3 žingsnį" (vadinamieji "goto" teiginiai) neleidžiami.
    • Procedūrinis - programa leidžia programuotojui suteikti pavadinimą užsakymų sąrašui, todėl šie užsakymai tampa "procedūra", kurią galima naudoti vėliau. Dauguma struktūrinių kalbų taip pat yra procedūrinės.
  • Objektinė - idėjos kompiuteriui paaiškinamos naudojant objektus - kodo dalis, kurioms galima suteikti tam tikrą tvarką ir tam tikrą informaciją apie jas.

Deklaratyvinis programavimas

Deklaratyvinėse paradigmose programuotojas nurodo kompiuteriui, daryti, o ne kaip tai daryti. Jei norima, kad kompiuteris nupieštų katės veidą, galima duoti tokius nurodymus: "Nupieškite veidą, nupieškite dvi akis, dvi ausis ir burną".

Geriausiai žinomos deklaratyvinės paradigmos:

  • Funkcinis - didžiąją darbo dalį atlieka funkcijos, neturinčios šalutinio poveikio.
  • Logika - nurodomi tam tikri faktai, tada užduodamas vienas ar keli klausimai.
  • Įvykiais valdomas - kodo dalys nustatomos taip, kad būtų paleistos, kai įvyksta tam tikri dalykai (pvz., įjungiamas kompiuteris).

Kitos paradigmos

Kai kurias paradigmas galima rasti ir imperatyviosiose, ir deklaratyviosiose kalbose. Šios paradigmos paprastai sutinkamos kartu su viena iš pirmiau minėtų paradigmų, o ne atskirai.

Apžvalga

Programavimo kalbos grupuojamos pagal paradigmas taip pat, kaip mašinos gali būti grupuojamos pagal tai, kam jos naudojamos.

Kelios kalbos atitinka tik vieną pagrindinę paradigmą, pvz:

  • Smalltalk (orientuotas į objektus)
  • Asamblėja (imperatyvinė, bet ne struktūrizuota ar objektinė)
  • Haskell (funkcinis)
  • Prologas (logika)

Tačiau dauguma kalbų yra daugiau nei vienos paradigmos. Kai kurios iš jų išsiskiria tuo, kad jų yra daugiau nei viena:

  • Scala (objektinė, funkcinė, lygiagrečioji)
  • "Visual Basic" (įvykių valdomas, objektinis)
  • Common Lisp (procedūrinis, funkcinis, objektinis, meta)
  • Schema (funkcinė, procedūrinė, meta)
  • Perl (funkcinė, procedūrinė, meta, objektinė, į įvykius orientuota)
  • Python (funkcinis, objektinis, procedūrinis)
  • Ruby (funkcinis, objektinis, procedūrinis)
  • Wolfram Language (funkcinė, procedūrinė, paprastai deklaratyvi)
  • Oz (loginis, funkcinis, imperatyvinis, objektinis)
  • F# (funkcinė, imperatyvioji, objektinė, meta)

Turėti daugiau paradigmų ne visada yra gerai. Vienas iš atvejų, kai mažiau paradigmų gali būti geras dalykas, yra tik funkcinė kalba. Vienos iš tokių kalbų funkcija kartais atlieka mažiau darbo (pavyzdžiui, aplanko tik tas grupės dalykų dalis, kurių jai iš tikrųjų reikia), nei galėtų atlikti, jei kalba būtų procedūrinė.

Daugelis programavimo paradigmų yra žinomos tiek dėl dalykų, kurių neleidžia žmonėms daryti, tiek dėl tų, kuriuos leidžia daryti. Vienas iš tokių atvejų yra funkcinės kalbos. Kai funkcinė kalba yra tik arba daugiausia funkcinė, ji paprastai neleidžia šalutinių efektų. Kitas atvejis, kai tai tiesa, yra struktūrinis programavimas: jis skiriasi nuo įprastų imperatyvinių kalbų, nes neleidžia programuotojams naudoti "goto teiginių" (teiginių, nurodančių programai pereiti prie ankstesnio žingsnio). Dėl šios ir kitų priežasčių žmonės kartais mano, kad naujosios paradigmos neleidžia pakankamai dalykų. Vis dėlto kartais gerai, kad kompiuteris neleidžia žmonėms daryti tam tikrų dalykų: tai gali padėti žmonėms išvengti jų kodo problemų ir leisti kompiuteriui daryti spėjimus, kad jis galėtų greičiau paleisti kodą, arba net patikrinti kodą, ar jame nėra problemų prieš jam paleidžiant!

Įvairių programavimo paradigmų apžvalga pagal Peter Van RoyZoom
Įvairių programavimo paradigmų apžvalga pagal Peter Van Roy

Paradigmų problemos

Kai kuriems programavimo kalbas tyrinėjantiems žmonėms, pavyzdžiui, Harperiui ir Krishnamurthi, nepatinka, kad programavimo kalboms grupuoti naudojamos paradigmos. Šie žmonės sako, kad daugelio programavimo kalbų negalima tiesiog sugrupuoti į paradigmas, nes kalbos skolinasi dalykus ir idėjas iš daugelio paradigmų.

Istorija

Laikui bėgant buvo sukurtos naujos paradigmos, į kurias žmonės atkreipė dėmesį tuo metu arba žvelgdami atgal. Viena pirmųjų paradigmų, kuri buvo pripažinta kaip naujas programavimo būdas, buvo struktūrinis programavimas 1960-aisiais. "Programavimo paradigmos" idėja atsirado 1978 m., jei ne anksčiau, kai Robertas W. Floydas ją naudojo dėstydamas. Žodį "paradigma" taip, kaip jį suprato Robertas, pirmą kartą pavartojo Thomas Kuhnas knygoje "Mokslinių revoliucijų struktūra" (1962 m.).

Mašininis kodas

Žemiausio lygio (artimiausia tam, kaip kompiuteris mėgsta suprasti dalykus) ir seniausia programavimo paradigma yra mašininis kodas - imperatyvinė paradigma. Mašininio kodo nurodymai yra tik tam tikra tvarka išdėstytų skaičių rinkinys. Asemblerio kalba yra šiek tiek žemesnio lygio (ir šiek tiek mažiau sena). Asemblerio kalboje kompiuterio nurodymams suteikiami mnemoniniai pavadinimai (lengviau įsimenami pavadinimai), o atminties adresams (nurodymams, kaip kompiuteryje rasti informacijos dalį) gali būti suteikti pavadinimai. Šios kalbos kartais vadinamos pirmosios ir antrosios kartos kalbomis.

Septintajame dešimtmetyje asemblerio kalbos buvo patobulintos pridedant naujų dalykų, pavyzdžiui, bibliotekos COPY, makrokomandų (specialaus kodo dalys, kurios prieš pradedant vykdyti programą paverčiamos įprastu kodu), paleidžiamų procedūrų (nurodymų rinkiniai, kuriems suteikiamas pavadinimas ir kurie išsaugomi vėlesniam laikui) ir kintamųjų (elementai, kuriems suteikiami pavadinimai ir kurie išsaugomi vėlesniam laikui), esančių už programos ribų. Tai leido žmonėms naudoti tam tikrą kodą daugiau nei viename projekte ir nesijaudinti dėl specifinių aparatinės įrangos problemų (problemų, kurios būdingos tik vienos rūšies kompiuteriams), nes buvo naudojamos tokios komandos (krypčių pavadinimai) kaip READ/WRITE/GET/PUT.

Asembleris buvo ir kartais vis dar yra naudojamas sistemose, kuriose svarbu, kad kodas būtų greitas, taip pat jis daug naudojamas įterptosiose sistemose, nes leidžia naudotojui tiksliai kontroliuoti, ką daro mašina.

Procedūrinės kalbos

XX a. septintojo dešimtmečio pabaigoje žmonės pradėjo kurti procedūrines kalbas. Šios trečiosios kartos kalbos (kelios pirmosios kalbos, kurias dabar vadiname aukšto lygio kalbomis) turėjo žodžius, susijusius su tuo, ką jomis buvo bandoma išspręsti. Pavyzdžiui,

  • COBOL (angl. COmmon Business Oriented Language) - joje vartojami tokie žodžiai kaip failas, perkelti ir kopijuoti.
  • FORMULINIS PERSPĖJIMAS (FORTRAN) - naudojami matematiniai žodžiai ir simboliai (formos, naudojamos rašant ir spausdinant). Ji buvo sukurta daugiausia gamtos mokslams ir inžinerijai.
  • ALGOrithmic Language (ALGOL) - skirta algoritmams (veiksmų rinkiniams, nurodantiems kompiuteriui, ką daryti) rašyti. Joje, kaip ir FORTRAN, naudojami matematiniai žodžiai ir simboliai.
  • "Programavimo kalba 1" (PL/I) - turėjo būti naudinga visiems.
  • Pradedantiesiems skirtas universalus simbolinių instrukcijų kodas (BASIC) - sukurtas siekiant padėti pradedantiesiems programuoti.
  • C - programavimo kalba, skirta daugeliui dalykų atlikti. Dennisas Ritchie 1969-1973 m. ją kūrė AT&T Bell Labs.

Į objektus orientuotas programavimas

Daugeliui žmonių pradėjus naudoti procedūrines kalbas, buvo išrastos į objektus orientuotos programavimo kalbos. Šiose kalbose duomenys ir jų "metodai" (manipuliavimo duomenimis būdai) yra sudėti į vieną "objektą". Kai kurie programuotojai, pavyzdžiui, Ričardas Stalmanas (Richard Stallman), nesutinka, kad į objektus orientuotos kalbos geriau nei procedūrinės kalbos padeda paaiškinti idėjas kompiuteriui.

Kadangi į objektus orientuotas programavimas yra paradigma, o ne kalba, žmonės sukūrė į objektus orientuotas asemblerio kalbas, pavyzdžiui, HLA (High Level Assembly).

Deklaratyvinės paradigmos

Tuo pat metu kai kurie žmonės kūrė deklaratyviąsias programavimo kalbas. Gerai žinoma deklaratyvioji kalba yra SQL (kalba, skirta lentelių papildymui ir pašalinimui).

Susiję puslapiai

  • Mąstysena
  • Tipo sistema
  • Tiuringo išbaigtumas

Klausimai ir atsakymai

K: Kas yra programavimo paradigma?


A: Programavimo paradigma - tai programavimo kalbų grupavimas pagal tai, kaip jos veikia.

K: Kokios yra dvi pagrindinės paradigmų grupės?


A: Dvi pagrindinės paradigmų grupės yra imperatyvioji ir deklaratyvioji.

K: Kuo skiriasi imperatyvinė ir deklaratyvinė paradigmos?


A: Imperatyviosios paradigmos atsižvelgia į kodo vykdymo būdą, pavyzdžiui, leidžia šalutinius efektus arba reikalauja atlikti veiksmus tam tikra tvarka, o deklaratyviosios paradigmos atsižvelgia į kodo grupavimo būdą, pavyzdžiui, kodą suskirstyti į vieną ar dvi dalis (arba daug mažų dalių).

Klausimas: Ar kalba gali būti ir imperatyvioji, ir deklaratyvioji paradigma?


A: Taip, kalba gali būti ir imperatyvinė, ir deklaratyvinė paradigma.

K: Kaip programavimo paradigma grupuoja kalbas?


A: Programavimo paradigmos grupuoja kalbas pagal tai, ką jos daro. Jos atsižvelgia į tai, kaip vykdomas kodas, kaip jis sugrupuotas ir kokia tvarka bei dalimis sudaryta programa.

K: Ar yra kitų programavimo paradigmų tipų, be imperatyviosios ir deklaratyviosios?


A: Taip, be imperatyviosios ir deklaratyviosios, yra ir kitų programavimo paradigmų tipų. Pavyzdžiui, vieni žiūri į tai, kaip kodas paleidžiamas (pvz., leidžiami šalutiniai efektai), o kiti žiūri į tai, kaip kodas sugrupuojamas (pvz., kodas suskirstomas į vieną ar dvi dalis).

Klausimas: Ar kiekviena kalba priklauso tik vienam programavimo paradigmos tipui?


A: Ne, ne kiekviena kalba priklauso tik vienam programavimo paradigmos tipui; kai kurios kalbos gali priklausyti daugiau nei vienam paradigmos tipui.

AlegsaOnline.com - 2020 / 2023 - License CC3