Taza funkcional programmalastırıw
Kompyuter iliminde taza funkcional programmalastırıw ádette kompyuter programmalarınıń strukturasın hám elementlerin dúziw stili bolǵan programmalastırıw paradigmasın bildiredi, ol barlıq esaplawlardı matematikalıq funkciyalardıń bahalanıwı retinde qarastıradı.
Programma jaǵdayı hám ózgermeli obyektler ádette waqıtsha logika menen modellestiriledi, programma orınlanıwınıń hárbir basqıshında programma jaǵdayın kórsetetuǵın anıq ózgeriwshiler retinde: ózgeriwshi jaǵdayı jaǵdaydı ózgertiwshi funkciyanıń kirgiziw parametri retinde beriledi, ol jańalanǵan jaǵdaydı óziniń qaytaratuǵın mánisiniń bir bólegi retinde qaytaradı. Bul stil programma ańlatpalarınıń siltemelik anıqlıǵın joǵaltpastan jaǵday ózgerislerin basqaradı.
Taza funkcional programmalastırıw funkcional paradigma ishindegi funkciyalardıń global yamasa lokal jaǵdayına qaramastan tek ózleriniń argumentlerine ǵana baylanıslı bolıwın támiyinlewden ibarat. Taza funkcional qosımsha programma tek óziniń kóriw aymaǵına kiritilgen jaǵday ózgeriwshileri menen kórsetilgen jaǵday ózgerislerin ǵana kóre aladı.
Taza hám taza emes funkcional programmalastırıw arasındaǵı ayırmashılıq
Taza hám taza emes funkcional programmalastırıw arasındaǵı anıq ayırmashılıq tartıslı másele bolıp tabıladı. Sabridiń tazalıq ushın usınǵan anıqlaması — barlıq ulıwma bahalaw strategiyaları (atı boyınsha shaqırıw, mánisi boyınsha shaqırıw hám mútájligi boyınsha shaqırıw) qátege ushıraytuǵın yamasa uzaqlasatuǵın strategiyalardı esapqa almaǵanda, birdey nátiyje beredi[1].
Programma ádette funkcional programmalastırıwdıń ayırım túsiniklerin, mısalı, birinshi dárejeli funkciyalar hám joqarı tártipli funkciyalardı qollanǵanda funkcional dep ataladı[2]. Biraq, birinshi dárejeli funkciya taza funkcional bolıwı shárt emes, sebebi ol imperativ paradigmadan alınǵan usıllardı, mısalı, massivler yamasa qosımsha tásir retinde ózleriniń jaǵdayın jańalaytuǵın ózgermeli yacheykalardı qollanatuǵın kirgiziw/shıǵarıw metodların paydalanıwı múmkin. Haqıyqatında, funkcional dep atalǵan eń dáslepki programmalastırıw tilleri, IPL hám Lisp,[3] ekewi de Sabridiń anıqlaması boyınsha «taza emes» funkcional tiller bolıp tabıladı.
Taza funkcional programmalastırıwdıń qásiyetleri
Qatań hám qatań emes bahalaw
Taza funkcional programma menen juwmaqlanatuǵın hárbir bahalaw strategiyası birdey nátiyjeni qaytaradı. Atap aytqanda, bul baǵdarlamashınıń programmalardıń qaysı tártipte bahalanıwın esapqa alıwı shárt emes ekenligin támiyinleydi, sebebi asıǵıs bahalaw jalqaw bahalaw sıyaqlı birdey nátiyjeni beredi. Biraq, asıǵıs bahalaw juwmaqlanbay qalıwı múmkin, al sol programmanıń jalqaw bahalanıwı toqtap qalıwı múmkin. Bunıń bir artıqmashılıǵı — kesh bahalawdı ámelge asırıw ádewir ańsat boladı; barlıq ańlatpalar qálegen waqıtta (programma jaǵdayına qaramastan) birdey nátiyjeni qaytaratuǵanlıqtan, olardıń bahalanıwı qálegenshe keyinge qaldırılıwı múmkin.
Parallel esaplaw
Taza funkcional tilde esaplawlar arasındaǵı jalǵız ǵárezlilik — bul maǵlıwmatlar ǵárezliligi, hám esaplawlar deterministlik bolıp tabıladı. Sonlıqtan, parallel programmalastırıw ushın baǵdarlamashı tek ǵana parallel esaplanıwı kerek bolǵan bóleklerdi kórsetiwi kerek, al orınlanıw sisteması wazıypalardı processorlarǵa bólistiriw, sinxronizaciyanı hám kommunikaciyanı basqarıw hám shıǵındılardı parallel jıynaw sıyaqlı basqa barlıq detallardı basqara aladı. Bul programmalastırıw stili jarıs jaǵdayları hám tıǵılıslar sıyaqlı ulıwma máselelerden saqlaydı, biraq imperativ tilge qaraǵanda azıraq basqarıwǵa iye[4].
Tezlikti arttırıwdı támiyinlew ushın, wazıypalardıń úlkenligi júdá úlken de, júdá kishi de bolmaytuǵınday etip abaylap tańlanıwı kerek. Teoriyalıq jaqtan, parallellikti kirgiziw programmanı tezletiw-tezletpewin anıqlaw ushın orınlanıw waqtındaǵı profillewdi hám kompilyaciya waqtındaǵı analizdi paydalanıw múmkin, solay etip taza funkcional programmalardı avtomat túrde parallellestiriw múmkin. Ámeliyatta, bul onsha tabıslı bolmadı, hám tolıq avtomat parallellestiriw ámelge asırılatuǵın emes.
Maǵlıwmatlar strukturaları
Taza funkcional maǵlıwmatlar strukturaları turaqlı bolıp tabıladı. Turaqlılıq funkcional programmalastırıw ushın talap etiledi; onsız, birdey esaplaw hár túrli nátiyjeler qaytarıwı múmkin. Funkcional programmalastırıw turaqlı taza emes funkcional maǵlıwmatlar strukturaların paydalanıwı múmkin, al bul maǵlıwmatlar strukturaları taza funkcional programmalarda paydalanılmawı múmkin.
Taza funkcional maǵlıwmatlar strukturaları kóbinese ózleriniń imperativ analoglarınan basqasha usılda kórsetiledi. Mısalı, turaqlı waqıtta kiriw hám jańalaw múmkinshiligi bar massiv kóp imperativ tillerdiń tiykarǵı komponenti bolıp tabıladı hám xesh-keste hám binar úyindisi (dástesi) sıyaqlı kóp imperativ maǵlıwmatlar strukturaları massivlerge tiykarlanǵan. Massivlerdi taza funkcional implementaciyaǵa iye bolǵan, biraq kiriw hám jańalaw waqtı logarifmlik bolǵan karta yamasa tosınnan kiriw dizimi menen almastırıwǵa boladı. Sonlıqtan, taza funkcional maǵlıwmatlar strukturaları funkcional emes tillerde qollanılıwı múmkin, biraq olar, ásirese turaqlılıq talap etilmese, eń ónimli qural bolmawı múmkin.
Ulıwma alǵanda, imperativ programmanı taza funkcional programmaǵa aylandırıw, sonday-aq, aldın ózgermeli bolǵan strukturalardıń endi olardı jańalaytuǵın funkciyalardan anıq qaytarılıwın támiyinlewdi talap etedi, bul programma strukturası saqlaw-ótkiziw stili dep ataladı.
Taza funkcional til
Taza funkcional til — bul tek ǵana taza funkcional programmalastırıwǵa ruqsat beretuǵın til. Biraq, taza funkcional programmalar taza funkcional bolmaǵan tillerde de jazıwǵa boladı.
Derekler
- ↑ Sabry, Amr (January 1993). "What is a purely functional language?". Journal of Functional Programming 8 (1): 1–22. doi:10.1017/S0956796897002943.
- ↑ Atencio, Luis. Functional Programming in Javascript. Manning Publications, 18 June 2016. ISBN 978-1617292828.
- ↑ McCarthy, John. The first ACM SIGPLAN conference on History of programming languages - HOPL-1, June 1978.
- ↑ Marlow, Simon. Parallel and Concurrent Programming in Haskell: Techniques for Multicore and Multithreaded Programming. O'Reilly Media, 18 June 2013 — 5–6 bet. ISBN 978-1449335946.