Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cum se imparte legal o mostenire ...

Avem sanse sa avem energie electr...

Radio Bucur 1

Creare site gen OLX / Autovit
 Imagini gratuit sau contra cost i...

Fisuri beton de egalizare

Reincepe mineritul in UE

Playlist melodii radio - unde?
 P0335 senzor arbore cotit - senzo...

Avocatul Poporului vs European Om...

Recomandari firme pentru draperii...

Receptie Eutelsat 5 West. Este po...
 Poti receptiona semnal de la mai ...

Cabluri HDMI 2.1 de 4m-5m care sa...

Zoom comparat cu Google Meet

Monitor/Display wireless?
 

De ce nu va place (unora) programarea functionala?

- - - - -
  • Please log in to reply
23 replies to this topic

#1
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,231
  • Înscris: 24.02.2007
Cu exemple unde e posibil

Edited by dani.user, 16 February 2019 - 21:41.


#2
Nenea Zap

Nenea Zap

    Zuperman

  • Grup: Senior Members
  • Posts: 17,025
  • Înscris: 10.04.2006
Google nu te-a lamurit?

#3
TruculMagic

TruculMagic

    Egalitatea nu există decât în matematică

  • Grup: Senior Members
  • Posts: 19,669
  • Înscris: 24.11.2015
Cred ca esti prea departe fata de mine si restul ca sa purtam astfel de discutii Posted Image

#4
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,231
  • Înscris: 24.02.2007

View PostNenea Zap, on 16 februarie 2019 - 21:37, said:

Google nu te-a lamurit?

Google nu posteaza aici pe forum

#5
editielimitata

editielimitata

    Member

  • Grup: Members
  • Posts: 416
  • Înscris: 05.01.2019
se poate face o descriere a "programarii functionale" ?

#6
unbrutus

unbrutus

    Guru Member

  • Grup: Senior Members
  • Posts: 16,299
  • Înscris: 23.02.2017

View PostNenea Zap, on 16 februarie 2019 - 21:37, said:

Google nu te-a lamurit?
google si quora, subiectul e dezbatut pe larg si cu argumente seriose, e imposibil de purtat aici o discutie mai completa ca pe forumurile de specialitate (quora e destul de puternic pe partea de software engineering)

#7
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,416
  • Înscris: 10.08.2005

View PostTruculMagic, on 16 februarie 2019 - 21:38, said:

Cred ca esti prea departe fata de mine si restul ca sa purtam astfel de discutii Posted Image
Omul va cere o pare (a voastra), eu va rog daca puteti sa onorati acest lucru.

View Posteditielimitata, on 16 februarie 2019 - 22:13, said:

se poate face o descriere a "programarii functionale" ?
Programarea funcțională este o paradigmă de programare care tratează calculul ca evaluare de funcții matematice și evită starea și datele mutabile. (wiki)

View Postunbrutus, on 16 februarie 2019 - 22:15, said:

google si quora, subiectul e dezbatut pe larg si cu argumente seriose, e imposibil de purtat aici o discutie mai completa ca pe forumurile de specialitate (quora e destul de puternic pe partea de software engineering)
discutia este la zi? cu ingineri romani?
Nu este imposibil, trebuie doar un pic de seriozitate.

Va rog din nou, daca se poate, incercati sa va oferiti opinia personala privind paradigma propusa.

Edited by MarianG, 16 February 2019 - 23:00.


#8
aaaa4567

aaaa4567

    Senior Member

  • Grup: Senior Members
  • Posts: 9,494
  • Înscris: 18.10.2011
Greu de facut mentenanta.

Greu de citit, mai ales daca e scrisa in paradigma mixta (Clojure etc)

Cred ca e suficient pana aici. Astea sunt doua argumente care conteaza foarte mult in softwrae engineering. Nu e domeniul meu, oricum.

#9
BraviaAmpero

BraviaAmpero

    Member

  • Grup: Members
  • Posts: 923
  • Înscris: 03.11.2018

View Postaaaa4567, on 17 februarie 2019 - 00:40, said:

Greu de facut mentenanta.
Greu de citit, mai ales daca e scrisa in paradigma mixta (Clojure etc)
Pentru cine nu are de-a face cu acest domeniu orice este greu de facut.

Edited by MarianG, 17 February 2019 - 08:10.
eliminat citate la posturi sterse


#10
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
PF e frumoasă, când e folosită când și cum trebuie.

Problema cu PF e că îți este prezentată ca "limbaj elegant" pentru unele probleme, și chiar este.

Dar din asta se nasc fanatici care vor să facă totul funcțional.

Nu este absolut deloc o problemă tehnică cu FP, e vina respectivilor fanatici, dar m-am gândit că e bine de menționat.


În rest, FP e perfectă când e folosită când și cum trebuie, iar soluțiile respective sunt elegante.

Personal, văd FP ca paradigma complementară pentru OOP: OOP folosit ca schelet în aplicații, FP folosit în mod standard în implementarea metodelor, dar imperativ în metode care nu rezolvă probleme ce se pretează pentru funcțională.

Deci: scheletul în OOP, și în metode alegi PF sau imperativ în funcție de problemă.

Da, poți avea și amestec de imperativ și funcțional în aceeași metodă, dar nu e o idee rea de obicei să separi în metode (private) diferite.

Nu prea îmi place amestecul consecvent de imperativ și funcțional: o linie de cod așa, linia următoare invers.

De ce nu îmi place un astfel de amestec? Strică eleganța și uneori chiar și expresivitatea și mentenabilitatea codului, plus presiunea cognitivă sau uneori îmi pot imagina și că afectează performanța.



Și pentru amuzament: unii folosesc FP fără să știe. Cod care e scris ca imperativ, dar folosește idei din FP.

View Postaaaa4567, on 17 februarie 2019 - 00:40, said:

Greu de citit, mai ales daca e scrisa in paradigma mixta (Clojure etc)
Deci sunt de acord.

De aceea atunci când am folosit funcțional, am preferat varianta embedded: parserul/interpretorul funcțional apelat din program. La fel și cu programarea logică, de exemplu prolog.

Dar as fi dispus sa accept FP fără intermediari, dacă e o segregare strictă în cod între paradigme.

Pe același calapod faci si weaving pentru AOP sau cine stie ce DSL in groovy, etc.

#11
parabellum

parabellum

    Senior Member

  • Grup: Senior Members
  • Posts: 2,450
  • Înscris: 06.01.2010
Sunt un fan al programarii functionale... dpdv teoretic. Practic, prefer un limbaj multi-paradigma, nu-mi place sa fiu limitat.

#12
iulian_1976

iulian_1976

    Active Member

  • Grup: Members
  • Posts: 1,571
  • Înscris: 10.05.2008
Habar nu aveam de existenta programarii functionale Posted Image

-Ar fi ok dpdv scalabilitate si concurenta vezi domeniul web, pure function nu se folosesc variabile ci valori, sunt imutabile mda de aici ceva avantaje, high order function aici nu prea m-am prins care e treaba, currying si pattern matching ceva legat de functii ca ar fi mai lizibile, reutilizare unei functii.

-Tail recursing-recursivitatea nu prea s-a lipit de mine, se foloseste in acest caz un acumulator in loc de o stiva, ca ar  fi optimizat pentru operatii recursive, binenteles pentru cine le stapaneste Posted Image
Lambda- care ar fi ca o functie anonima si ceva mate...

-FutureType interesant asta lipsea in general limbajelor clasice.

Ha acum m-am prins, dani.user ne cere parerea legata de Scala  Posted Image

Edited by iulian_1976, 17 February 2019 - 16:50.


#13
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,416
  • Înscris: 10.08.2005
da, fara a ne limita la Scala

#14
Ltschmer

Ltschmer

    New Member

  • Grup: Junior Members
  • Posts: 9
  • Înscris: 09.10.2017
Pe scurt, programarea functionala e stilul de programare care trateaza functiile ca niste simple obiecte sau valori. O functie la randul ei  poate lua alta functie ca si argument si sa returneze alta functie ca si valoare. Programarea pur functionala e programare fara assignment, deci fara "state". Odata ce o valoare e declarata, ea exista si atat  Asupra acestor valori  se aplica transformari (sau functii), care nu modifica insa valoarea initiala . Ei, cam asta e toata povestea, iar in jurul acestor idei , iti structurezi programul. Deoarece nu exista assignment, nu poate fi vorba de while sau for, asa ca ideea de transformare succesiva este pusa in aplicare cu ajutorul recursivitatii. Tail recursion este atunci cand valoarea calculata pana la un anumit "moment" este tinuta de unul din argumentele functiei, numit uneori si acumulator, care este intors ca si valoare finala la  sfarsitul procesului . Ex: o functie care aduna doua nr. a si b, cel mai simplu exemplu posibil
  function aduna (a,b)
	 if  a == 0 then
		 return b
   else
		 return aduna(a-1,b+1)


Linear recursion este atunci cand valoarea finala este calculata pe bucati, modelate dupa un anumit proces recursiv:
function aduna(a,b)
	if a == 0 then
	 return b
   else
	 return 1 + aduna(a-1,b)
function factorial( n)
	if n == 0
	 return 1
   else
	return n * factorial(n-1)

Bine, mai exista si tree recursion, gen functii care calculeaza numere fib . Programarea functionala permite modelarea unei probleme plecand de la forma ei generala, fapt ce incurajeaza top down appproach. Limbajele functionale tind sa fie mai abstracte decat cele imperative. De fapt, typed functional programming e un fel de OOP,  dar mai abstract, mai general.

#15
ovipic

ovipic

    Junior Member

  • Grup: Junior Members
  • Posts: 84
  • Înscris: 09.04.2019
Lisp

(defun fib (n)
  (if (or (= n 0) (= n 1))
  n
  (+ (fib (- n 1)) (fib (- n 2)))))


Clojure

(defn fib
  [n]
  (loop [a 0 b 1 i n]
    (if (zero? i)
  a
  (recur b (+ a b) (dec i)))))


Erlang

-module(fib2).
-export([fib/1]).
fib(N) -> fib_iter(N, 0, 1).
fib_iter(0, Result, _Next) -> Result;
fib_iter(Iter, Result, Next) when Iter > 0 ->
fib_iter(Iter-1, Next, Result+Next).


Observi ceva? Posted Image

#16
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004
Da, trei limbaje retardate.

#17
Ltschmer

Ltschmer

    New Member

  • Grup: Junior Members
  • Posts: 9
  • Înscris: 09.10.2017
C.Lisp&restul limbajelor din familie sunt departe de a fi  limbaje "retardate". Lisp  este cel mai flexibil limbaj existent si unii ar zice chiar cel mai "puternic", din cauza capacitatilor de metaprogramare. In Lisp, poti sa declari variabile noi pe masura ce programul ruleaza - chiar si in  mod dinamic, poti chiar sa modifici sintaxa limbajului in timp real, sa scrii programe care modifica sau analizeaza anumite portiuni de cod inainte de evaluare - de exemplu iei o expresie care incepe cu 'if'  sau 'while' si sa te utiti la ea, sau sa faci type checking unei expresii, sa extinzi sintaxa limajului, sau chiar sa scrii programe care la randul lor scriu alte programe si poti sa faci chestia asta cu usurinta. In afara de asta, majoritatea implementarilor sunt multi-paradigma, deci nu esti limitat doar la programare functionala, ba din contra. Ai libertate totala sa faci ce vrei.

#18
parabellum

parabellum

    Senior Member

  • Grup: Senior Members
  • Posts: 2,450
  • Înscris: 06.01.2010
lisp (in special versiunile mai 'moderne', exemplu: https://en.wikipedia...p_Object_System ) nu este un limbaj pur functional, ci multi-paradigma: https://letoverlambd...uest/chap5.html

Sigur ca se poate programa functional in el (se poate si in C++, daca o dai in purisme), dar hai sa fim seriosi, lumea reala nu e pur obiectuala, nici pur functionala si cu programele trebuie de exemplu sa modelezi lumea reala, nu s-o dai in abstractiuni pur matematice pur detasate de univers.

Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate