Programmalastırıw paradigması
Programmalastırıw paradigması (ingl. programming paradigm) − bul kompyuter programmasın ámelge asırıwdı strukturalastırıw menen koncepciyalawdıń salıstırmalı túrde joqarı dárejeli usılı. Programmalastırıw tilin bir yamasa bir neshe paradigmanı qollaw retinde klassifikaciyalawǵa boladı.[1]
Paradigmalar programmalastırıwdıń hár túrli ólshemleri boyınsha bólinedi hám táriyiplenedi. Ayırım paradigmalar tikkeley emes tásirlerge ruqsat beriw yamasa háreketler izbe-izligin orınlaw modeli menen anıqlanǵanı sıyaqlı orınlaw modeliniń aqıbeti haqqında boladı. Bul paradigmalar jaǵdaydı da, minez-qulıqtı da óz ishine alatuǵın birliklerge gruppalaw sıyaqlı kodtı shólkemlestiriw usılı menen baylanıslı. Basqaları sintaksis penen grammatikaǵa baylanıslı.
Ayırım ulıwma programmalastırıw paradigmaları tómendegilerdi óz ishine aladı (ierarxiyalıq qatnasta kórsetilgen):[2][3]
- Imperativli − kod orınlaw aǵımı menen jaǵdaydıń ózgeriwin tikkeley basqaradı
- proceduralıq − bir-birin shaqıratuǵın proceduralar retinde shólkemlestirilgen
- obyektke baǵdarlanǵan − maǵlıwmatlar strukturası menen baylanıslı minez-qulıqtı óz ishine alatuǵın obyektler retinde shólkemlestirilgen
- Deklarativ − kod qálegen nátiyjeniń qásiyetlerin járiyalaydı, biraq onı qalay esaplaw kerekligin emes
- funkcionallıq − kerekli nátiyje funkciyanı bahalaw qatarınıń mánisi retinde járiyalanadı
- logika − kerekli nátiyje faktler menen qaǵıydalar sisteması tuwralı sorawǵa juwap retinde járiyalanadı
- reaktiv − kerekli nátiyje maǵlıwmatlar aǵımları menen hám ózgerislerdiń tarqalıwı menen járiyalanadı
Sholıw
redaktorlawProgrammalastırıw paradigmaları programmalıq támiynattı islep shıǵıwdıń bar tájiriybelerine hám informatika izertlewlerinen kelip shıǵadı. Nátiyjeler programmalastırıw tájiriybesin hám programmalardı kodlaw ushın qollanılatuǵın tillerdi sáwlelendiriwge hám salıstırıwǵa imkaniyat beredi. Perspektivalıq ushın basqa izertlewler programmalıq injiniring proceslerin izertleydi hám olardı sáwlelendiriw hám salıstırıw ushın hár túrli metodologiyalardı táriyipleydi.
Programmalastırıw tilin paradigmalar arqalı sáwlelendiriwge boladı. Ayırım tiller tek bir paradigmanı qollaydı. Mısalı, Smalltalk obyektke baǵdarlanǵan, al Haskell funkcionaldı qollaydı. Kóplegen tiller bir neshe paradigmalardı qollaydı. Mısalı C++, Object Pascal yamasa PHP tillerinde jazılǵan programma taza proceduralıq, taza obyektke baǵdarlanǵan bolıwı múmkin yamasa ekewiniń yamasa basqa paradigmalardıń aspektlerin óz ishine alıwı múmkin.
Bir neshe paradigmalardı qollaytuǵın tildi paydalanǵanda baǵdarlamashı qanday paradigma elementlerin paydalanıw kerekligin tańlaydı. Biraq bul tańlaw paradigmalardı qarastırıwdı qamtımawı múmkin. Baǵdarlamashı tildiń imkaniyatların til támiyinleytuǵınlıqtan hám baǵdarlamashı olardı biletuǵın dárejede jiyi paydalanadı. Alınǵan kodtı paradigma boyınsha kategoriyalaw kóbinese retrospektiv túrde orınlanatuǵın akademiyalıq háreket bolıp tabıladı.
Imperativ paradigma retinde klassifikaciyalanǵan tillerdiń tiykarǵı ózgesheligi bar: olar usı tártipti anıq basqaratuǵın strukturaları bar operaciyalardıń orınlanıw retin aytadı hám olar jaǵdaydıń bir kod birliginde waqıttıń bir noqatında ózgertiliwi múmkin tikkeley emes tásirlerge imkaniyat beredi, sonnan keyin kodtıń basqa birligi ishinde waqıttıń basqa noqatında. Kod birlikleri arasındaǵı baylanıs anıq emes.
Kerisinshe, deklarativ paradigmadaǵı tiller operaciyalardı orınlaw retin kórsetpeydi. Kerisinshe olar hárqaysısı orınlawǵa ruqsat etilgen shártler menen birge sistemada bar bolǵan bir qatar operaciyalardı támiyinleydi.[6] Tildiń orınlanıw modelin ámelge asırıw qaysı operaciyalardıń orınlanatuǵının qadaǵalaydı hám tártipti ózbetinshe tańlaydı. Tolıǵıraq “Kóp paradigmalı programmalastırıw tillerin salıstırıw” (ingl. Comparison of multi-paradigm programming languages) da aytılǵan.
Obyektke baǵdarlanǵan programmalastırıwda kod obyektiniń kodına tiyisli bolǵan hám (ádette) basqarılatuǵın jaǵdaydı óz ishine alatuǵın obyektlerge shólkemlestiriledi. Obyektke baǵdarlanǵan tillerdiń kópshiligi imperativ tiller bolıp tabıladı.
Obyektke baǵdarlanǵan programmalastırıwda programmalar óz-ara háreketlesetuǵın obyektlerdiń jıynaǵı retinde qarastırıladı. Funkcional programmalastırıwda programmalar azamatlıǵı joq funkciyalardı bahalaw izbe-izligi retinde qarastırıladı. Kompyuterlerdi yamasa kóplegen processorları bar sistemalardı programmalastırǵanda, proceske baǵdarlanǵan programmalastırıwda programmalar logikalıq ulıwma maǵlıwmatlar strukturalarında háreket etetuǵın qatar júretuǵın proceslerdiń jıynaǵı retinde qarastırıladı.
Kóplegen programmalastırıw paradigmaları tıyım salǵan texnikalar menen de, qollaytuǵınları menen de belgili. Mısalı, taza funkcional programmalastırıw tikkeley emes tásirlerge imkaniyat bermeydi, al strukturalıq programmalastırıw goto konstrukciyasına imkaniyat bermeydi. Usı sebepli ayırım jańa paradigmalar kóbinese doktrinator yamasa eskilerge úyrenip qalǵanlar dım qatal dep esaplaydı.[7] Degen menen, belgili bir usıllardan awlaq bolıw programma háreketin túsiniwdi hám programmanıń durıslıǵı tuwralı teoremalardı dálillewdi ańsatlastıradı.
Programmalastırıw paradigmaların tek API paydalanıw arqalı orınlaw modelin shaqırıwǵa imkaniyat beretuǵın programmalastırıw modelleri menen salıstırıwǵa boladı. Programmalastırıw modellerin orınlaw modeliniń ózgesheliklerine qarap paradigmalarǵa da klasifikaciyalawǵa boladı.
Parallel esaplawlar ushın tildiń ornına programmalastırıw modelin paydalanıw jiyi ushırasadı. Sebebi, parallel apparat maǵlıwmatlar apparatlıq támiynattı programmalastırıw ushın paydalanılǵan abstrakciyalarǵa aǵıp ketedi. Bul baǵdarlamashıǵa algoritmdegi úlgilerdi orınlaw modelindegi úlgiler menen salıstırıwǵa májbúr etedi (olar abstrakciyaǵa apparatlıq támiynattıń aǵıp ketiwine baylanıslı engizilgen). Nátiyjesinde, heshbir parallel programmalastırıw tili barlıq esaplaw máselelerine jaqsı sáykes kelmeydi. Usılayınsha, bazalıq izbe-iz tildi paydalanıw hám programmalastırıw modeli arqalı parallel orınlaw modellerine API shaqırıwların kirgiziw qolaylıraq. Bunday parallel programmalastırıw modellerin ulıwma yadı, xabar jiberiwi bar tarqatılǵan yad, kodta kórinetuǵın orın túsinikleri h.t.b. sıyaqlı apparatlıq támiynatlardı kórsetetuǵın abstrakciyalarǵa sáykes klassifikaciyalawǵa boladı. Olardı tek parallel tillerge hám programmalastırıw modellerine qollanatuǵın programmalastırıw paradigmasınıń “dámi” dep esaplawǵa boladı.
Sın
redaktorlawAyırım programmalastırıw tilin izertlewshiler programmalastırıw tilleriniń klassifikaciyası retinde paradigmalar túsinigin sınǵa aladı, mısalı Xarper,[8] hám Krishnamurti. Olar kóplegen programmalastırıw tillerin bir paradigmaǵa qatań túrde klassifikaciyalawǵa bolmaytuǵının, kerisinshe bir neshe paradigmalardıń imkaniyatların óz ishine alatuǵının aytadı. Kóp paradigmalı programmalastırıw tillerin salıstırıw bólimin qarań.
Tariyxı
redaktorlawWaqıttıń ótiwi menen programmalastırıwdıń hár túrli usılları rawajlandı. Hárbir usıldıń klassifikaciyalanıwı usıl birinshi islep shıǵılǵan waqıtta sáwlelengen, biraq kóbinese keyinirek retrospektiv túrde emes. Sanalı túrde anıqlanǵan dáslepki usıl 1960-jıllardıń ortasınan berli úgit násiyatlanǵan strukturalıq programmalastırıw bolıp tabıladı. Programmalastırıw paradigmasınıń koncepciyası keminde 1978 jılı Robert B. Floydtıń Tyuring sıylıǵınıń “Programmalastırıw paradigmaları” atlı lekciyasında, Tomas Kun óziniń “Ilimiy revolyuciyalardıń strukturası” degen miynetinde paydalanǵan paradigma túsinigine silteme beredi (1962).[9] Dáslepki programmalastırıw tillerinde anıq anıqlanǵan programmalastırıw paradigmaları bolmadı, geyde programmalar goto operatorların keńnen paydalandı. Onıń liberal qollanılıwı túsiniw hám saqlaw qıyın spagetti kodına alıp keldi. Bul goto operatorların paydalanıwǵa ruqsat etpeytuǵın strukturalıq programmalastırıw paradigmalarınıń rawajlanıwına alıp keldi; tek strukturanı programmalastırıw strukturaların paydalanıwǵa imkaniyat beredi.[10]
Basqa paradigmalar
redaktorlawSimvollı programmalastırıw − formulalar menen programma komponentlerin maǵlıwmatlar retinde basqarıwǵa qábiletli programmalardı táriyipleytuǵın paradigma.[3] Programmalar usılayınsha ózin-ózi ónimli túrde ózgerte aladı hám olardı jasalma intellekt, ekspert sistemalar, tábiyiy tildi qayta islew hám kompyuter oyınları sıyaqlı qosımshalar ushın qolaylı etip, “úyrenetuǵın” bolıp kórinedi. Bul paradigmanı qollaytuǵın tillerge Lisp hám Prolog kiredi.[11]
Differencial programmalastırıw strukturaları programmalardı ádette avtomat differencialaw arqalı saralawǵa boladı.[12]
Sawatlı programmalastırıw imperativ programmalastırıwdıń bir túri retinde programmalardı gipertekstli essedegidey adamǵa baǵdarlanǵan veb retinde strukturalastıradı: hújjetlestiriw programmanıń ajıralmas bólimi bolıp tabıladı hám programma kompilyator qolaylıǵınan ǵore prozalıq ekspoziciya logikasına sáykes strukturalastırılǵan.
Programmanıń ózine silteme beriwge imkaniyat beretuǵın refleksiya sıyaqlı simvollı usıllardı da programmalastırıw paradigması retinde qarastırıwǵa boladı. Degen menen, bul tiykarǵı paradigmalar menen sáykes keledi, sonlıqtan óz aldına anıq paradigma emes.
Derekler
redaktorlaw- ↑ „Multi-Paradigm Programming Language“. Mozilla Developer Network. Mozilla Foundation (21-iyun 2013-jıl). 21-avgust 2013-jılda túp nusqadan arxivlendi.
- ↑ Frans Coenen. „Characteristics of declarative programming languages“ (en-US). cgi.csc.liv.ac.uk (11-oktyabr 1999-jıl). 27-fevral 2014-jılda túp nusqadan arxivlendi. Qaraldı: 20-fevral 2014-jıl.
- ↑ 3,0 3,1 Michael A. Covington. „CSCI/ARTI 4540/6540: First Lecture on Symbolic Programming and LISP“. University of Georgia (23-avgust 2010-jıl). 7-mart 2012-jılda túp nusqadan arxivlendi. Qaraldı: 20-noyabr 2013-jıl.
- ↑ Peter Van Roy. „Programming Paradigms: What Every Programmer Should Know“. info.ucl.ac.be (12-may 2009-jıl). Qaraldı: 27-yanvar 2014-jıl.
- ↑ Peter Van-Roy. Concepts, Techniques, and Models of Computer Programming. MIT Press.
- ↑ „Programming paradigms: What are the principles of programming?“ (en-US). IONOS Digitalguide (20-aprel 2020-jıl). 29-iyun 2022-jılda túp nusqadan arxivlendi. Qaraldı: 3-may 2022-jıl.
- ↑ Frank Rubin (March 1987). "'GOTO Considered Harmful' Considered Harmful". Communications of the ACM 30 (3): 195–196. doi:10.1145/214748.315722. http://www.ecn.purdue.edu/ParaMount/papers/rubin87goto.pdf.
- ↑ Harper. „What, if anything, is a programming-paradigm?“. FifteenEightyFour. Cambridge University Press (1-may 2017-jıl).
- ↑ Floyd, R. W. (1979). The paradigms of programming.
- ↑ Soroka, Barry I.. Java 5: Objects First. Jones & Bartlett Learning, 2006. ISBN 9780763737207.
- ↑ „Business glossary: Symbolic programming definition“. allbusiness.com. Qaraldı: 30-iyul 2014-jıl.
- ↑ Wang, Fei; Decker, James; Wu, Xilun; Essertel, Gregory; Rompf, Tiark (2018), Bengio, S.; Wallach, H.; Larochelle, H.; Grauman, K. (red.), „Backpropagation with Callbacks: Foundations for Efficient and Expressive Differentiable Programming“ (PDF), Advances in Neural Information Processing Systems 31, 10201–10212-bet, qaraldı: 2019-02-13
{{citation}}
: Unknown parameter|publisher=
ignored (járdem)