Proceduralıq programmalastırıw

**Proceduralıq programmalastırıw** — bul imperativ programmalastırıw retinde klassifikaciyalanǵan, kompyuter programmasınıń minez-qulqın bir-birin shaqıratuǵın proceduralar (funkciyalar, kishi programmalar dep te ataladı) retinde ámelge asırıwdı óz ishine alǵan programmalastırıw paradigması. Nátiyjedegi programma óziniń quramına kiretuǵın proceduralarǵa shaqırıwlar ierarxiyasın payda etetuǵın adımlar izbe-izligi bolıp tabıladı.

Birinshi iri proceduralıq programmalastırıw tilleri shama menen 1957–1964-jıllarda payda boldı, olarǵa Fortran, ALGOL, COBOL, PL/I hám BASIC kiredi. Pascal hám C shama menen 1970–1972-jıllarda járiyalandı.

Kompyuter processorları stek registri hám proceduralardı shaqırıw hám olardan qaytıw ushın kórsetpeler arqalı proceduralıq programmalastırıw ushın apparatlıq támiynat qollap-quwatlawın usınadı. Lisp mashinaları yamasa Java processorları sıyaqlı basqa programmalastırıw túrleri ushın apparatlıq támiynat qollap-quwatlawı múmkin, biraq hesh qanday urınıw kommerciyalıq jaqtan tabıslı bolmadı.

## Islep shıǵıw ámeliyatları
Sapanı arttırıw hám islep shıǵıw hámde qollap-quwatlaw shıǵınların tómenletiw maqsetinde proceduralıq programmalastırıw menen birge belgili bir programmalıq támiynattı islep shıǵıw ámeliyatları kóbinese qollanıladı.

### Modullik hám qollanıw sheńberi
Modullik — bul programmanıń proceduraların bólek modullerge shólkemlestiriw — olardıń hárbiri anıq hám túsinikli maqsetke iye.

Ózgeriwshilerdiń hám proceduralardıń qollanıw sheńberin minimallastırıw proceduralar menen modullerdiń kognitiv júklemesin azaytıw arqalı programmalıq támiynat sapasın arttıra aladı.

Modulligi joq yamasa keń qollanıw sheńberi bar programma basqa proceduralardıń da paydalanatuǵın kóp ózgeriwshilerin tutınatuǵın proceduralarǵa iye bolıwǵa beyim. Nátiyjedegi kod salıstırmalı túrde túsinip alıw hám qollap-quwatlaw ushın qıyın.

### Bólisiw
Procedura anıq belgilengen interfeysti kórsete alatuǵınlıqtan hám óz betinshe tolıq bolǵanlıqtan, ol kodtı qayta paydalanıwdı qollap-quwatlaydı — ásirese programmalıq támiynat kitapxanası arqalı.

## Basqa programmalastırıw paradigmaları menen salıstırıw

### Imperativ programmalastırıw
Proceduralıq programmalastırıw imperativ programmalastırıw retinde klassifikaciyalanadı, sebebi ol orınlanıwdı tikkeley basqarıwdı óz ishine aladı.

Proceduralıq, proceduralıq blok hám qollanıw sheńberi túsiniklerin óz ishine alǵanlıqtan, imperativtiń kishi klası bolıp tabıladı, al imperativ bunday ózgesheliklerdi talap etpeytuǵın anaǵurlım ulıwma túsinikti táriyipleydi. Proceduralıq tiller ádette basqarıw aǵımın ámelge asırıw ushın if, while hám for sıyaqlı bloklardı anıqlaytuǵın rezervlengen sózlerdi paydalanadı, al strukturalanbaǵan imperativ tiller (yaǵnıy, assembler tili) usı maqset ushın goto hám tarmaqlanıw kestelerin paydalanadı.

### Obyektke baǵdarlanǵan programmalastırıw
Imperativ retinde de klassifikaciyalanǵan, obyektke baǵdarlanǵan programmalastırıw (OBP) programma implementaciyasın jaqsı anıqlanǵan interfeys arqalı minez-qulıqtı (metodlardı) hám maǵlıwmatlardı (aǵzalardı) kórsetetuǵın obyektlerge bóliwdi óz ishine aladı. Kerisinshe, proceduralıq programmalastırıw programma implementaciyasın ózgeriwshilerge, maǵlıwmat strukturalarına hám kishi rutinalarǵa bóliwge qaratılǵan. Áhmiyetli bir ayırmashılıq — proceduralıq maǵlıwmat strukturalarında islew ushın proceduralardı óz ishine alsa, OBP ekewin birge biriktiredi. Obyekt — bul maǵlıwmat strukturası hám sol maǵlıwmat strukturası menen baylanıslı minez-qulıq.

Geypara OBP tilleri anıqlama tiykarında obyekt jaratıwǵa imkaniyat beretuǵın klass túsinigin qollap-quwatlaydı.

Ekewi arasında terminologiya hár qıylı, degen menen olardıń semantikası uqsas:

### Funkcional programmalastırıw
Funkcional tillerdegi modullik hám kodtı qayta paydalanıw principleri proceduralıq tillerdegiler menen tiykarınan birdey, sebebi ekewi de strukturalıq programmalastırıwdan kelip shıqqan. Mısalı:

* Proceduralar funkciyalarǵa sáykes keledi. Ekewi de birdey kodtı programmalardıń hár túrli bólimlerinde hám onıń orınlanıwınıń hár túrli noqatlarında qayta paydalanıwǵa múmkinshilik beredi.
* Solay etip, procedura shaqırıwları funkciya qollanıwına sáykes keledi.
* Funkciyalar hám olardıń bir-birinen modulli ajıratılıwı birdey usılda, funkciya argumentleri, qaytarılatuǵın mánisler hám ózgeriwshi qollanıw sheńberlerin paydalanıw arqalı ámelge asırıladı.

Stiller arasındaǵı tiykarǵı ayırmashılıq — funkcional programmalastırıw tilleri proceduralıq programmalastırıwdıń imperativ elementlerin alıp taslaydı yamasa keminde olardıń áhmiyetin tómenletedi. Sonlıqtan funkcional tillerdiń ózgeshelikler toplamı programmalardı taza funkciyalar boyınsha ilajı bolǵanınsha jazıwdı qollap-quwatlaw ushın proektlestirilgen:

* Proceduralıq tiller programmanıń orınlanıwın ortaq jaǵdaydı jasırın ózgertiwi múmkin bolǵan imperativ buyrıqlar izbe-izligi retinde modellestirse, funkcional programmalastırıw tilleri orınlanıwdı tek argumentler hám qaytarılatuǵın mánisler boyınsha bir-birine ǵárezli bolǵan quramalı ańlatpalardıń bahalanıwı retinde modellestiredi. Usı sebepke baylanıslı, funkcional programmalarda kodtıń erkin orınlanıw tártibi bolıwı múmkin hám tiller programmanıń hár túrli bólimleriniń qaysı tártipte orınlanıwına az basqarıw usınıwı múmkin; mısalı, Scheme tilindegi procedura shaqırıwına argumentler qálegen tártipte bahalanadı.
* Funkcional programmalastırıw tilleri birinshi dárejeli funkciyalardı, anonim funkciyalardı hám jabıwlardı qollap-quwatlaydı (hám keń paydalanadı), degen menen bul koncepciyalar proceduralıq tillerge keminde Algol 68 den baslap kirgizilgen.
* Funkcional programmalastırıw tilleri imperativ ciklli konstrukciyalar ornına quyrıqlı shaqırıwdı optimallastırıwǵa hám joqarı dárejeli funkciyalarǵa súyeniwge beyim.

Degen menen, kóp funkcional tiller haqıyqatında taza funkcional emes hám baǵdarlamashıǵa programmalardı proceduralıq stilde yamasa eki stildiń kombinaciyasında jazıwǵa imkaniyat beretuǵın imperativ/proceduralıq konstrukciyalardı usınadı. Funkcional tillerdegi kirgiziw/shıǵarıw kodınıń proceduralıq stilde jazılıwı keń tarqalǵan.

Programmalastırıwdı qıyınlastırıw (hám sonlıqtan qıyınshılıqlı) maqsetinde strukturalıq programmalastırıw principlerinen bas tartatuǵın Unlambda sıyaqlı bir neshe ekzotikalıq funkcional tiller bar. Bul tiller proceduralıq hám funkcional tiller arasındaǵı ulıwma tiykarǵa kirmeydi.

### Logikalıq programmalastırıw
Logikalıq programmalastırıwda programma — bul aldınǵı shártler toplamı, al esaplaw — kandidat teoremalardı dálillewge urınıw arqalı orınlanadı. Usı kózqarastan, logikalıq programmalar deklarativ bolıp, máseleni qalay sheshiwdiń ornına, onıń ne ekenine itibar beredi.

## Derekler

__BÖLİDİMÖNDEMEW__