Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Transferuri instant intre bancile...

player video

Carefur Act for good

Parcare gratis in Bucuresti pentr...
 Rovinieta prin SMS pentru masina ...

Viteza mica Usb 3.2 gen.1 header

Cerificat atestare fiscala pentru...

Schimbare destinatie imobil din l...
 Dorsalgie

Recomandare brand cheie dinamomet...

Divorț la notar

Vechime vs km reali
 Android 12 : "Yahoo Mail s-a ...

Bloc Favorit cu RS2

Ce extractor audio (analogic) pen...

Cine suporta cheltuielile de jude...
 

OOP vs functional programming

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

#1
pinguinul666

pinguinul666

    Senior Member

  • Grup: Senior Members
  • Posts: 4,689
  • Înscris: 06.10.2015
Salut

DISCLAIMER:
Postez aici fiindca observ ca rubrica mare Programming nu are o sectiune de generalitati, cum au multe altele.


La subiect...
Cautand ceva despre Java, am dat din intamplare peste acest articol care critical Object Oriented Programming si lauda Functional Programming.

LINK SPRE ARTICOL

E un engleza, dar foarte bine scris si placut de lecturat.
Voi ce parere aveti?

Fiindca sunteti, intr-un mai mic sau mai mare grad, programatori, limba engleza nu ar trebui sa prezinte dificultati.

#2
Buleandra94

Buleandra94

    Member

  • Grup: Members
  • Posts: 644
  • Înscris: 19.08.2007
Nu exista pattern-ul perfect, implementezi solutia in functie de problema.

#3
maccip

maccip

    45 ani

  • Grup: Senior Members
  • Posts: 32,896
  • Înscris: 06.01.2007
Programarea functionala e mai abstracta, sintaxa e mai grea.
In viitor ar trebui sa invat si eu un Haskell, programare functionala, teoria categoriilor.
Am mai avut tentativa asta, dar mi s-a parut greu si am abandonat.

#4
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,114
  • Înscris: 24.02.2007
Incearca sa rezolvi o problema mai complexa in ambele moduri si zi-ne ce ti-a placut la fiecare abordare.

#5
alx42

alx42

    Senior Member

  • Grup: Senior Members
  • Posts: 2,802
  • Înscris: 26.06.2014
am fix aceeasi parere ca si autorul.
nu stiu cum e la java, dar in php oop-ul e labareala curata.
tin minte cand a aparut nebunia cu mvc, parca pe vremea 'cake php', cum toti se inghesuiau sa-si complice vietile aiurea.
recunosc ca am pus si eu botul o perioada, dar m-am lecuit repede si mi-am facut propria colectie de clase ptr diferite chestii uzuale pe care le refoloseam.
azi tot carnatul ala s-a mutat in javascript, si practic php a devenit inutil pt orice altceva decat un simplu api si interactiune cu baza de date. dar mai exista destui inconstienti care isi pierd vremea cu php-ul :)
nici cu js nu cred ca va tine mult distractia, pentru ca limita e cerul => complexitatea tot creste => html/dom nu mai face fata.
problema nu e oop-ul in sine. prob e ca in loc sa se foloseasca oop-ul pe alocuri, acolo unde ajuta cat de cat, adica fix ptr nimicuri ca si alea din exemplele gen caine, sobolan etc, se "oopuieste" toata aplicatia. si aunci ajungi sa scrii abstractii peste abstractii si in final ajungi sa scrii mult mai mult cod decat este necesar si care e mai greu de inteles. peste 3-4 luni de pauza nici nu mai stii ce ai facut acolo si trebuie sa o iei de la 0.
consecintele se simt si ca utilizator de aplicatii. programele mananca tot mai multe resurse, "buguri" la greu, orice actualizare aduce noi probleme, se face debug pe spatele utilizatorului etc.
cand eram in liceu se invata turbo pascal. erau atunci niste programe care redau animatii misto in 3-4K de linii de cod si care rulau fluent pe un kkt de 386.
azi ptr aceeasi chestie procesorul trebuie sa rumege abstractiile programatorului 99% din timp, adica instructiuni care ruleaza ampulea

#6
unbrutus

unbrutus

    Guru Member

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

View Postpinguinul666, on 07 octombrie 2019 - 21:09, said:

E un engleza, dar foarte bine scris si placut de lecturat.
un pic offtopic, dar in general articolele bune nu sint in romana...

#7
LOLkekLOL

LOLkekLOL

    Senior Member

  • Grup: Senior Members
  • Posts: 2,348
  • Înscris: 29.07.2019
Doar prostii critica OOP. Programarea asa zis "functionala" nu e o paradigma propriuzisa ci un gunoi produs de matematicienii care nu au capacitatea intelectuala de invata programare reala(oop/procedurala). Caracteristica unica si definitiorie a limbajelor functionale este urmatoarea: un amalgam de sintaxa criptica si concepte obscure, adesea lipsite de sens si utilitate. Restul sunt povesti prostesti de pacalit nepriceputii(obsesii patologice cu imutabilitatea, "higher order functions", "referential transparency" si alte stupizenii din acelasi registru)

Edited by LOLkekLOL, 08 October 2019 - 00:04.


#8
jm2010

jm2010

    Senior Member

  • Grup: Senior Members
  • Posts: 4,949
  • Înscris: 14.03.2013
Tinand cont de comentarii (MVC porcarie, obsesii cu imutabilitatea etc.), cand veti ajunge seniori ca experienta (reala nu ca ati fost si voi in domeniu) mai putem povesti avantaje/dezavantaje si diferentele dintre chestiile enuntate in titlu. Eventual daca cineva va va lasa sa lucrati pe proiecte enterprise reale mai mult decat code monkey.
Anyway, amuzante parerile Posted Image Auzite de atatea ori de la juniori, deja is imun la ele...

Edited by jm2010, 08 October 2019 - 07:14.


#9
karax

karax

    Guru Member

  • Grup: Senior Members
  • Posts: 21,839
  • Înscris: 14.10.2017
desi nu sunt programator si cunosc putine impresia mea este oarecum clara in ceea ce priveste chestia asta : pentru mine un program bun este ala care consuma cele mai putine resurse in timpul rularii si reuseste sa rezolve problemele in timpul cel mai scurt. adica sa avem niste cicluri de procesor cat mai putine dar care rezolva problema.
insa apropo de lambda calculus ...sa zicem ca avem de calculat 42    
desi il putem calcula ca 2x2x2x2 am vrea sa il calculam cu programare functionala incercand o scurtatura folosind calculul cu putere. cam asta incearca programarea functionala sa zica. insa problema apare cand pentru 4 la puterea 2 necesita  librarii si chestii care sa explice ce e aia ridicare la putere deci ajungi tot la definitia inmultirii. aici e de fapt problema unde programarea functionala nu merge, sau cel putin e la fel e eficienta ca cea pe obiecte.
evident cineva ar putea spune ca si librariile alea se pot face prin scurtaturi si programare cu lambda calculus. asta nu stiu , parerea mea e ca cel mai bine se vede in timpii de executie masurati si in load-ul procesorului la rularea programelor , unul in OOP si altul care face acelasi lucru in programare functionala

#10
LOLkekLOL

LOLkekLOL

    Senior Member

  • Grup: Senior Members
  • Posts: 2,348
  • Înscris: 29.07.2019

View Postjm2010, on 08 octombrie 2019 - 07:13, said:

Tinand cont de comentarii (MVC porcarie, obsesii cu imutabilitatea etc.), cand veti ajunge seniori ca experienta
Arhitect enterprise pe java aici. Experienta +20 ani. Responsabil de ce bat altii din taste si daca ce e sau nu mentenabil codul unui produs peste x ani.

Tu in calitate de ce anume emiti pareri pe aici?

Edited by LOLkekLOL, 08 October 2019 - 07:41.


#11
alx42

alx42

    Senior Member

  • Grup: Senior Members
  • Posts: 2,802
  • Înscris: 26.06.2014
mentenabilitatea e o iluzie, la fel ca si multe alte 'principii' oop.
la web cel putin, tehnologia se schimba rapid, peste x ani va trebui sa rescrii tot oricum.
cine a folosit inainte mvc in php, azi trebuie sa isi mute 90% din cod pe javascript, altfe ramane cu situl depasit. unde-i mentenabilitatea aici?

#12
jm2010

jm2010

    Senior Member

  • Grup: Senior Members
  • Posts: 4,949
  • Înscris: 14.03.2013

View PostLOLkekLOL, on 08 octombrie 2019 - 07:40, said:

Arhitect enterprise pe java aici. Experienta +20 ani. Responsabil de ce bat altii din taste si daca ce e sau nu mentenabil codul unui produs peste x ani.

Tu in calitate de ce anume emiti pareri pe aici?
Dupa comentarii nu pare dar ma rog, pentru cineva outside pare foarte impressive titulatura. Ca idee, ca unul cu mai multe experienta decat tine si pe arii mai diverse decat Java.
Ideea nu e sa ne-o masuram, ar trebui sa fi invatat deja asta daca ai asemenea pozitie. Ideea e sa iti recitesti comentariile, sa incerci sa inveti si altceva decat Java, sa incerci sa intri si pe alte proiecte decat Java si atunci vei intelege ca fiecare chestie este utila intr-un anumit context. Context dat de proiect, de business-ul necesar a fi implementat, de limbajul ales pentru dezvoltare (ar trebui sa stii ca pe enterprise nu este neaparat obligatoriu sa fie totul intr-un singur limbaj si ala sa fie Java) si unde anume.
Anyway, a fost doar un comment la ignoranta cu care s-a aruncat aia cu MVC sucks, programarea functionala sucks etc. Ma retrag, las arhitectii sa se desfasoare :)

#13
parabellum

parabellum

    Senior Member

  • Grup: Senior Members
  • Posts: 2,439
  • Înscris: 06.01.2010
Purisme, o singura paradigma, alea nu-s de mine. Eu prefer sa scriu programe functionale (si nu ma refer la paradigma aici, sic).

Apropo, acelasi autor, criticand programarea functionala: https://medium.com/b...oy-7f52ea0a947e

Quote

So-called “functional” programming has no proper mechanism of abstraction since it is based on mathematics (which obviously is inferior and has no applications in the real world apart from academia). Unlike OOP, functional programming makes no attempt to fulfill the numerous rigorous and complex requirements demanded by the enterprise.
E un ipocrit care incearca sa atraga cat mai multe vizualizari folosind articole 'scandaloase'.
Si minte cu tupeu, sigur ca matematica are aplicatii in 'real world'.

La fel cum a mintit si de Linus, kernelul linux e proiectat (si) intr-o maniera obiectuala, asa ca Linus nu are ce sa aiba impotiva OOP, cine a avut treaba cu implementare de drivere ar trebui sa stie asta. Linus are ce are cu C++-ul, probabil pentru ca nu s-a mai obosit sa-l invete.

LE: Se pare ca incearca sa fie ironic acolo, dupa continuare. Cand am pus link-ul si citatul, m-am uitat superficial la inceput.
Nu i-a reusit. Individul are un ciocan si crede ca poate face orice cu el, aplicand un strawman pe alte paradigme. Asa poate veni cineva cu ceva cod functional de sta pisica in coada cu parul zburlit si sa-l compare cu ceva facut cum trebuie obiectual... si sa faca misto. Treaba e ca astia de fac comparatii intre limbaje sau paradigme cunosc una dintre ele binisor, si jalnic pe cealalta, si-si compara cunostintele cu ignoranta intre ele. Ignoranta le iese mai prost.

Edited by parabellum, 08 October 2019 - 14:24.


#14
parabellum

parabellum

    Senior Member

  • Grup: Senior Members
  • Posts: 2,439
  • Înscris: 06.01.2010
Apropo de chestia asta, uite asa poate incepe cineva cu C++:
std::map<std::string, double> fruits = {
{ "apple", 1.99},
{ "orange", 2.99},
{ "grape", 44.95},
};
std::cout << "Apple price is: " << fruits["apple"] << std::endl;


... si sa faca misto de over-engineering pentru obiecte stilul ala al lui, sau de stilul functional cu getFruitPrice si getApplePrice si filterByType si mama dracului cu prefixari de tip si pret aiurea ca sa bagi multe caractere in cod. Sigur ca se poate sa faci factoryFactoryFactory si alte magarii daca vrei cu adevarat. Sau functii cum ii plac lui, una peste alta, ca trebuie, ca nu.

A, si nu exista glont de argint.

Edited by parabellum, 08 October 2019 - 19:19.


#15
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,295
  • Înscris: 10.08.2005
setPrice(item, value)
getPrice(item)


#16
kabanIbucii

kabanIbucii

    Member

  • Grup: Members
  • Posts: 320
  • Înscris: 05.02.2019

View Postalx42, on 08 octombrie 2019 - 08:27, said:

mentenabilitatea e o iluzie, la fel ca si multe alte 'principii' oop.
la web cel putin, tehnologia se schimba rapid, peste x ani va trebui sa rescrii tot oricum.
cine a folosit inainte mvc in php, azi trebuie sa isi mute 90% din cod pe javascript, altfe ramane cu situl depasit. unde-i mentenabilitatea aici?

Ce vorbesti ? E suficient sa trimiti JSON in loc de HTML

#17
alx42

alx42

    Senior Member

  • Grup: Senior Members
  • Posts: 2,802
  • Înscris: 26.06.2014
da este, dupa ce arunci la gunoi tot ce tine de ui, rute, si mai mult de jumatate din codul pe l-ai scris ptr restu

#18
kabanIbucii

kabanIbucii

    Member

  • Grup: Members
  • Posts: 320
  • Înscris: 05.02.2019
De ce sa arunci ?
Te uiti la request headers si trimiti ce doreste clientul
Ai website si API in acelasi codebase
Sau preferi mizeria aia de nodejs, unde tot codul de pe server e intr-un singur fisier
Bine, in ultima versiune au introdus express.router(), asa ca acum poti sa structurezi codul in mai multe fisiere, in functie de business domain
Dar tot ca dracul arata

Si n-am inteles de ce sa arunci rutele
Rutarea din angular sau react e strict in client, n-are treaba cu rutele de pe server

Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

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