Proseduraalinen ohjelmointi - Procedural programming

Proseduraalinen ohjelmointi on ohjelmointi paradigma , johdettu välttämätöntä ohjelmointia , joka perustuu käsitteeseen proseduurikutsua . Toimenpiteet (eräänlainen rutiini tai aliohjelma ) sisältävät yksinkertaisesti joukon suoritettavia laskentavaiheita. Mikä tahansa menettely voidaan kutsua milloin tahansa ohjelman suorittamisen aikana, mukaan lukien muut menettelyt tai itse. Ensimmäiset suuret ohjelmointikielet ilmestyivät noin vuosina 1957–1964, mukaan lukien Fortran , ALGOL , COBOL , PL/I ja BASIC . Pascal ja C julkaistiin noin 1970–1972.

Tietokoneprosessorit tarjoavat laitteistotukea prosessiohjelmointiin pinorekisterin ja ohjeiden avulla, joilla soitetaan ja palautetaan. Laitteistotuki muille ohjelmointityypeille on mahdollista, mutta mikään yritys ei onnistunut kaupallisesti (esimerkiksi Lisp -koneet tai Java -prosessorit ).

Menettelyt ja modulaarisuus

Modulaarisuus on yleensä toivottavaa, etenkin suurissa ja monimutkaisissa ohjelmissa. Tulot määritetään yleensä syntaktisesti argumenttien muodossa ja tuotokset toimitetaan palautusarvoina .

Scoping on toinen tekniikka, joka auttaa pitämään menettelyt modulaarisina. Se estää menettelyä pääsemästä muiden menettelyjen muuttujiin (ja päinvastoin), mukaan lukien itsensä aiemmat esiintymät, ilman nimenomaista lupaa.

Vähemmän modulaarinen menettelyjä, usein pieniä ja nopeasti kirjallisten ohjelmien, yleensä vuorovaikutuksessa useita muuttujia suorittamisessa ympäristössä , jonka muut menettelyt saattaa muuttaa.

Koska kyky määrittää yksinkertainen käyttöliittymä, olla itsenäinen ja käyttää uudelleen, menettelyt ovat kätevä väline eri ihmisten tai eri ryhmien kirjoittamien koodipalojen tekemiseen, myös ohjelmointikirjastojen kautta .

Vertailu muihin ohjelmointimalleihin

Pakollinen ohjelmointi

Proseduuriset ohjelmointikielet ovat myös välttämättömiä kieliä, koska ne viittaavat nimenomaisesti suoritusympäristön tilaan. Tämä voi olla mitä tahansa muuttujista (jotka saattavat vastata prosessorirekistereistä ) jotain "kilpikonnan" asentoon logon ohjelmointikielellä .

Usein termejä "menettelyllinen ohjelmointi" ja "pakollinen ohjelmointi" käytetään synonyymeinä. Prosessuaalinen ohjelmointi perustuu kuitenkin suurelta osin lohkoihin ja soveltamisalaan , kun taas pakollisella ohjelmoinnilla voi olla tai ei olla tällaisia ​​ominaisuuksia. Sinänsä oikeudenkäyntikielet yleensä käyttävät varattuja sanoja, jotka vaikuttavat lohkot, kuten if, whileja forpanemaan täytäntöön kontrollivuo , kun taas ei-strukturoituja välttämätöntä kielissä käytetään goto lausunnot ja haara taulukoita samaan tarkoitukseen.

Olio-ohjelmointi

Proseduraalisen ohjelmoinnin painopiste on jakaa ohjelmointitehtävä muuttujien , tietorakenteiden ja aliohjelmien kokoelmaan , kun taas olio-ohjelmoinnissa se on hajotettava ohjelmointitehtävä käyttäytymistä (menetelmiä) ja dataa (jäseniä) paljastaviksi objekteiksi tai määritteet) käyttämällä rajapintoja. Tärkein ero on se, että vaikka prosessiohjelmointi käyttää menettelyjä tietorakenteiden käyttämiseen, olio-ohjelmointi niputtaa nämä kaksi yhteen, joten "objekti", joka on luokan esiintymä , toimii "omalla" tietorakenteellaan.

Nimikkeistö vaihtelee näiden kahden välillä, vaikka niillä on samanlainen semantiikka:

Menettely Objektiivinen
Menettely Menetelmä
Ennätys Esine
Moduuli Luokka
Menettelykutsu Viesti

Toiminnallinen ohjelmointi

Modulaarisuuden ja koodin uudelleenkäytön periaatteet käytännön toiminnallisilla kielillä ovat pohjimmiltaan samat kuin menettelykielillä, koska ne molemmat johtuvat jäsennellystä ohjelmoinnista . Joten esimerkiksi:

  • Toimenpiteet vastaavat toimintoja. Molemmat mahdollistavat saman koodin uudelleenkäytön ohjelmien eri osissa ja sen eri kohdissa.
  • Samaan tapaan menettelykutsut vastaavat funktiosovellusta.
  • Funktiot ja niiden modulaarisesti erotettu toisistaan ​​samalla tavalla käyttämällä funktioargumentteja, palautusarvoja ja muuttujien laajuuksia.

Suurin ero tyylien välillä on se, että toiminnalliset ohjelmointikielet poistavat tai ainakin korostavat menettelytapojen ohjelmoinnin pakottavia elementtejä. Toiminnallisten kielten ominaisuusjoukko on siksi suunniteltu tukemaan kirjoitusohjelmia mahdollisimman paljon puhtaiden toimintojen kannalta :

  • Kun prosessikielet mallinnavat ohjelman suorittamisen pakollisten komentojen sarjana, jotka voivat implisiittisesti muuttaa jaettua tilaa, toiminnalliset ohjelmointikielet mallinnavat suorituksen monimutkaisten lausekkeiden arviointina, jotka riippuvat vain toisistaan ​​argumenttien ja palautusarvojen suhteen. Tästä syystä toiminnallisilla ohjelmilla voi olla ilmainen koodin suoritusjärjestys, ja kielet voivat hallita vain vähän ohjelman eri osien suoritusjärjestystä. (Esimerkiksi menettelyn kutsumiseen liittyvät argumentit järjestelmässä suoritetaan mielivaltaisessa järjestyksessä.)
  • Toiminnalliset ohjelmointikielet tukevat (ja käyttävät paljon) ensiluokkaisia ​​toimintoja , nimettömiä toimintoja ja sulkemisia , vaikka nämä käsitteet sisällytetään uudempiin menettelykieliin.
  • Toiminnalliset ohjelmointikielet luottavat yleensä hätäkutsun optimointiin ja korkeamman tason toimintoihin pakollisten silmukkarakenteiden sijasta.

Monet toiminnalliset kielet ovat kuitenkin itse asiassa epäpuhtaasti toiminnallisia ja tarjoavat pakollisia/menettelyllisiä rakenteita, joiden avulla ohjelmoija voi kirjoittaa ohjelmia menettelytapoihin tai molempien tyylien yhdistelmään. On tavallista, että toiminnallisten kielten tulo-/lähtökoodi kirjoitetaan menettelytapana.

On olemassa muutamia esoteerisia funktionaalisia kieliä (kuten Unlambda ), jotka välttävät strukturoituja ohjelmointikäytäntöjä, koska niiden ohjelmointi on vaikeaa (ja siksi haastavaa). Nämä kielet ovat poikkeus menettely- ja funktionaalisten kielten yhteisestä perustasta.

Looginen ohjelmointi

Vuonna logiikkaohjelmointi , ohjelma on joukko tiloja, ja laskenta suoritetaan yrittää todistaa ehdokas lauseet. Tästä näkökulmasta logiikkaohjelmat ovat deklaratiivisia ja keskittyvät ongelmaan sen sijaan, että ratkaisisivat sen.

Kuitenkin taaksepäin suuntautuva päättelytekniikka , jota toteutetaan SLD-resoluutiolla ja jota käytetään ongelmien ratkaisemiseen logiikan ohjelmointikielillä, kuten Prolog , käsittelee ohjelmia tavoitteiden vähentämismenettelyinä. Näin muodon lausekkeet:

H:- B 1 ,…, B n .

on kaksi tulkintaa, sekä menettelyinä

näyttää/ratkaista H , näyttää/ratkaista B 1 ja… ja B n

ja loogisina seurauksina:

B 1 ja… ja B n tarkoittavat H: ta .

Kokeneet logiikkaohjelmoijat käyttävät prosessitulkintaa kirjoittaakseen ohjelmia, jotka ovat tehokkaita ja tehokkaita, ja he käyttävät deklaratiivista tulkintaa varmistaakseen ohjelmien oikeellisuuden.

Katso myös

Viitteet

Ulkoiset linkit