Ce este de programare funcțional stivă overflow în limba rusă

Programarea funcțională - un mod de organizare de calcul fără condiții. Strict vorbind, într-o astfel de stare a programului, desigur, există - totalitatea contextul tuturor funcțiilor sale. Dar: Principala problemă cu care se confruntă starea complexitatea identității și de schimbare, este că, prin introducerea asignarea, avem de a face la modelele lor de calcul conceptul de timp (timp). Înainte de a existat o misiune, programul nostru este dependent de timp - în sensul că fiecare expresie are un sens, a avut întotdeauna același înțeles.

În practică, folosind OP merge de la simplu la complex: organizarea de relații de dependență, de conversie și compoziția funcției. Moduri de a face acest lucru - esența metodologiei PO. Funcțiile vosnovnom dvs. „curat“ nu produce mutații în contextul extern, iar rezultatul lor depinde numai de parametrii trecut. OP elimina complet posibilitatea unei întregi clase de erori (a se vedea. SICP H. Abelson, D. D. Sassman. Ch. "Capcane de programare imperativă").

Nu este doar faptul că limba de mare nivel de super-pot fi scrise într-un stil funcțional, cu inteligență artificială în loc de compilator. Desigur, acest lucru se poate face în orice limbaj de programare, care are o funcții de ordin superior. Mai mult decât atât, caracteristicile mecanice - baza oricăruia dintre interpret și acest mecanism este destul de simplu, dar introducerea conceptului de variabile și mutațiile lor complică foarte mult carcasa dispozitivului.

FI se opun vosnovnom OEP, deoarece în direcția opusă, un val de HYIP, creat în momentul în jurul valorii de Java si C ++. Sa dovedit că biblioteca de șabloane și ierarhia mai multe niveluri de obiecte care nu au rezolvat toate problemele, dimpotrivă, prin crearea unora noi. Totuși creșterea incontrolabil complexitatea sistemelor software și, în consecință, valoarea lor. Aici vom vedea un apel rațional la fundamentele industriei, cu scopul de a reduce entropia.

Răspuns 10 '15 septembrie la 20:38

Abordarea imperativă (și OEP poate fi pentru ei, și de obicei este), programator vopsele exact cum să realizeze programul său.

În abordarea funcțională, programatorul scrie, „ce să facă“, dar cum să facă acest lucru, rezolva compilator sau compilator.

Orice lambda, harta / reducerea nu face programare funcțională.

Există de fapt o abordare cuprinzătoare. De exemplu, într-un stil imperativ de variabile de luare a deciziilor mutabile (da, o tautologie), și de proiectare a făcut uz de variabile imuabile funcționale și funcții pure (funcția pură este o astfel de funcție, rezultatul care depinde numai de parametrii de intrare și nu depinde de nimic altceva. Ei au, de asemenea, nu modifică mediul înconjurător. Dar, din moment ce rezultă nu depinde de parametrii externi, rezultatele lor pot fi memorate în cache sau calcula perfect în paralel).

Abordarea obligatorie este necesară pentru a picta în detaliu fiecare pas și în ordinea corectă. Functionabila simplu - pentru a calcula toate acestea, aici este o caracteristică. Și runtime în sine pentru a da seama exact cum să calculeze acest lucru, este posibil rearanjarea unele din calcule locuri. Abordarea „Lazy“ este, de asemenea, utilizat pe scară largă în abordarea funcțională, în cazul în care anumite funcții nu pot fi calculate, atâta timp cât acestea nu au nevoie cu adevărat. Și dacă, de exemplu, runtime vede că este necesar să se evalueze slozhnaya_funktsiya expresiei (1.2) / slozhnaya_funktsiya (1.2). el a scris pur și simplu 1 și chiar nu a calculat - pentru că nu are sens. Compilatorul abordare imperativă poate face teoretic această optimizare, dar pentru acest lucru este necesar să se analizeze funcția și asigurați-vă că nu are efecte secundare și altele asemenea.

Răspuns 20 '15 aprilie, la 08:16

Răspunsul este bun, vă mulțumesc. Ie Programarea funcțională - este utilizarea activă a funcțiilor, cum ar fi parametrii și rezultatele în DR funcții și variabile imuabile, nu? P.S. și „ce să facă“ și „serviciu totul afară, aici este o funcție“ - asta e magia, mai degrabă decât de programare, cel mai bine este să editați răspunsul. - hardsky 20 aprilie '15 la 08:39

articole similare