23:59
Comentarii Adauga Comentariu

Programarea orientată pe obiecte este moartă. Să fie oare, adevărat?



Programarea orientată pe obiecte este moartă. Să fie oare, adevărat?? Evangheliști de programare funcțională, vă îndreptați armele spre inamicul greșit

Programarea în anii 1960 a avut o mare problemă: computerele nu erau încă atât de puternice și, într-un fel, trebuiau să împartă capacitățile între structuri de date și proceduri.

Acest lucru însemna că, dacă aveți un set mare de date, nu puteți face atât de mult cu ele fără a împinge computerul la limitele sale. Pe de altă parte, dacă ar fi nevoie să faceți o mulțime de lucruri algoritmic, nu ați putea folosi prea multe date căci calculele computerului ar dura pentru totdeauna.

Apoi , Alan Kay a venit în 1966 sau 1967 și a teoretizat că ar putea folosi încapsularea în mini-computerele care nu au accesul la datele lor, ci mai degrabă le-ar primi comunicate prin mesaje. În acest fel, resursele de calcul pot fi utilizate mult mai economic.

În ciuda ingeniozității ideii, a durat până în 1981 până când programarea orientată pe obiecte va ajunge în mainstream. De atunci, însă, nu a încetat să atragă dezvoltatori de software noi și experimentați deopotrivă. Piața pentru programatori orientati-pe-obiect este la fel de ocupată, ca niciodată.

Dar, în ultimii ani, paradigma veche de decenii a primit din ce în ce mai multe critici . S-ar putea ca, la patru decenii după ce programarea orientată pe obiecte a lovit masele, tehnologia depășește această paradigmă?

Este atât de proastă ideea cuplării funcțiilor cu datele?

Ideea principală din spatele programării orientate pe obiecte este cât se poate de simplă: încercați să spargeți un program în părți la fel de puternice ca întregul. Rezultă că cuplați bucăți de date și acele funcții care se obișnuiesc doar cu datele în cauză.

Rețineți că aceasta acoperă doar noțiunea de încapsulare, adică datele și funcțiile care stau în interiorul unui obiect sunt invizibile pentru exterior. Se poate interacționa cu conținutul unui obiect numai prin mesaje, numite de obicei funcții getter și setter.

Ceea ce nu este conținut în ideea inițială, dar este considerat esențial pentru programarea orientată obiect în prezent, sunt moștenirea și polimorfismul. Moștenirea înseamnă practic că dezvoltatorii pot defini subclasele care au toate proprietățile pe care le are clasa lor părinte. Acest lucru nu a fost introdus în programarea orientată pe obiecte decât în ​​1976, la un deceniu de la concepție.

Polimorfismul a ajuns la programarea orientată pe obiecte încă un deceniu mai târziu . În termeni de bază, înseamnă că o metodă sau un obiect poate servi drept șablon pentru alții. Într-un sens, este o generalizare a moștenirii, deoarece nu toate proprietățile metodei sau obiectului original trebuie transmise noii entități; în schimb, puteți alege să înlocuiți proprietățile.

Ceea ce este special la polimorfism este că, chiar dacă două entități depind unele de altele în codul sursă, o entitate numită funcționează mai mult ca un plugin. Acest lucru face viața mai ușoară pentru dezvoltatori, deoarece nu trebuie să se îngrijoreze de dependențe în timpul rulării.

Merită menționat faptul că moștenirea și polimorfismul nu sunt exclusive programării orientate pe obiecte. Adevăratul diferențiator constă în încapsularea bucăților de date și a metodelor care le aparțin. Într-o perioadă în care resursele de calcul erau mult mai rare decât astăzi, aceasta era o idee genială.

Cele cinci mari probleme din programarea orientată pe obiecte

Odată ce programarea orientată pe obiecte a lovit masele, a transformat modul în care dezvoltatorii văd codul. Ceea ce a prevalat înainte de anii 1980, programarea procedurală, a fost foarte orientat spre mașină. Dezvoltatorii au avut nevoie să știe destul de multe despre modul în care funcționează computerele pentru a scrie coduri bune.

Prin încapsularea datelor și metodelor, programarea orientată pe obiecte a făcut dezvoltarea software-ului mai centrată pe om. Se potrivește cu intuiția umană că metoda aparține grupului de date , dar nu grupului . drive() car teddybear

Când moștenirea a apărut, și asta a fost intuitiv. Are perfect sens că este un subgrup de și are aceleași proprietăți, dar nu. Hyundai car PooTheBear

Sună ca o mașinărie puternică. Totuși, problema este că programatorii care cunosc doar codul orientat pe obiecte vor forța acest mod de gândire pe tot ceea ce fac. Este ca atunci când oamenii văd cuie peste tot pentru că tot ce au este un ciocan. După cum vom vedea mai jos, când cutia dvs. de instrumente conține doar un ciocan, aceasta poate duce la probleme fatale.

1. Problema junglei bananelor gorilelor Imaginați-vă că creați un nou program și vă gândiți să proiectați o nouă clasă. Apoi, te gândești la o clasă mică, pe care ai creat-o pentru un alt proiect și îți dai seama că ar fi perfectă pentru ceea ce încerci să faci în prezent.

Nici o problemă! Puteți refolosi clasa din vechiul proiect pentru cel nou.

Cu excepția faptului că această clasă poate fi de fapt o subclasă a altei clase, așa că acum trebuie să includeți și clasa părinte. Atunci îți dai seama că clasa părinte depinde și de alte clase și ajungi să incluzi grămezi de cod.

Creatorul lui Erlang, Joe Armstrong, a proclamat faimos :

Problema cu limbajele orientate obiect este că au tot acest mediu implicit pe care îl transportă cu ele. Ai vrut o banană, dar ceea ce ai primit a fost o gorilă care să țină banana și întreaga junglă.

Asta spune aproape totul. Este bine să refolosiți cursurile; de fapt, poate fi o virtute majoră a programării orientate pe obiecte.

Dar nu o duce la extrem. Uneori este mai bine să scrieți o nouă clasă în loc să includeți mase de dependențe de dragul DRY (nu vă repetați).

2. Problema fragilă a clasei de bază Imaginați-vă că ați reutilizat cu succes o clasă dintr-un alt proiect pentru noul cod. Ce se întâmplă dacă clasa de bază se schimbă?

Vă poate corupe întregul cod. S-ar putea să nu fi atins-o. Dar într-o zi proiectul tău funcționează ca un farmec, a doua zi nu, deoarece cineva a schimbat un detaliu minor în clasa de bază care ajunge să fie crucial pentru proiectul tău.

Cu cât folosești mai mult moștenirea, cu atât trebuie să faci mai multă întreținere. Deci, chiar dacă reutilizarea codului pare foarte eficientă pe termen scurt, pe termen lung poate deveni costisitoare.

3. Problema diamantului

Moștenirea este acest mic lucru drăguț în care putem prelua proprietățile unei clase și le putem transfera altora. Dar dacă doriți să amestecați proprietățile a două clase diferite?

Ei bine, nu o poți face. Cel puțin nu într-un mod elegant. Luați în considerare, de exemplu, clasa Copier. (Am împrumutat acest exemplu, precum și câteva informații despre problemele prezentate aici, din povestea virală a lui Charles Scalfani Goodbye, Object Oriented Programming .) Un copiator scanează conținutul unui document și îl tipărește pe o foaie goală. Deci ar trebui să fie subclasa sau ?

Pur și simplu nu există un răspuns bun. Și, deși această problemă nu vă va rupe codul, apare suficient de des pentru a fi frustrant.

4. Problema ierarhiei

În problema diamantului, întrebarea era de ce clasă Copier este o subclasă. Dar te-am mințit - există o soluție îngrijită. Să fie clasa părinte și și să fie subclasele care moștenesc doar un subset de proprietăți. Problemă remediată! Copier Scanner Printer

Este curat. Dar ce se întâmplă dacă dvs. este doar alb-negru și vă puteți ocupa și de culoare? Nu este în acest sens o generalizare a ? Ce se întâmplă dacă este conectat la WiFi, dar nu este? Copier Printer Printer Copier Printer Copier

Cu cât aveți mai multe proprietăți pe o clasă, cu atât devine mai dificil să stabiliți ierarhii adecvate. Într-adevăr, aveți de-a face cu grupuri de proprietăți, unde împărtășește unele, dar nu toate proprietățile , și invers. Și dacă încercați să lipiți acest lucru în ierarhii și aveți un proiect complex, acest lucru vă poate duce la un dezastru dezordonat. Copier Printer

5. Problema de referință

Ați putea spune, bine, atunci vom face doar programare orientată pe obiecte, fără ierarhii. În schimb, am putea folosi clustere de proprietăți și să moștenim, extindem sau înlocuim proprietățile după cum este necesar. Sigur, ar fi cam dezordonat, dar ar fi o reprezentare exactă a problemei la îndemână.

Există doar o problemă. Întregul punct al încapsulării este de a păstra bucăți de date în siguranță unul de celălalt și, astfel, de a face calculul mai eficient. Acest lucru nu funcționează fără ierarhii stricte.

Luați în considerare ce se întâmplă dacă un obiect suprascrie ierarhia interacționând cu un alt obiect . Nu contează ce relație are , cu excepția faptului că nu este clasa directă a părinților. Apoi trebuie să conțină o referință privată la , pentru că altfel nu ar putea interacționa. A B A B B A B

Dar dacă conține informațiile pe care le au și copiii , atunci aceste informații pot fi modificate în mai multe locuri. Prin urmare, informațiile despre acestea nu mai sunt sigure, iar încapsularea este ruptă. A B B

Deși mulți programatori orientați pe obiecte construiesc programe cu acest tip de arhitectură, aceasta nu este o programare orientată pe obiecte. Este doar o mizerie.

Pericolul paradigmei unice

Aceste cinci probleme au în comun faptul că pun în aplicare moștenirea acolo unde nu este cea mai bună soluție. Deoarece moștenirea nu a fost nici măcar inclusă în forma originală de programare orientată obiect, nu aș numi aceste probleme inerente orientării obiectelor. Sunt doar exemple de dogme duse prea departe.

Totuși, nu numai programarea orientată pe obiecte poate fi exagerată. În programarea funcțională pură , este extrem de dificil să procesați intrarea utilizatorului sau să imprimați mesaje pe un ecran. Programarea orientată pe obiecte sau procedurală este mult mai bună în aceste scopuri.

Cu toate acestea, există dezvoltatori care încearcă să pună în aplicare aceste lucruri ca funcții pure și să-și arunce codul până la zeci de linii pe care nimeni nu le poate înțelege. Folosind o altă paradigmă, și-ar fi putut reduce cu ușurință codul la câteva rânduri lizibile.

Paradigmele seamănă puțin cu religiile. Sunt buni cu măsură - fără îndoială, Isus, Mohamed și Buddha au spus câteva lucruri destul de interesante. Dar dacă îi urmezi până la ultimul mic detaliu, s-ar putea să ajungi să faci viața ta și a oamenilor din jurul tău destul de nenorocită.

Același lucru este valabil și pentru paradigmele de programare. Nu există nicio îndoială că programarea funcțională câștigă aderență , în timp ce programarea orientată pe obiecte a atras unele critici dure în ultimii ani.

Este logic să vă informați despre noile paradigme de programare și să le utilizați atunci când este cazul. Dacă programarea orientată obiect este ciocanul care îi face pe dezvoltatori să vadă cuie oriunde merg, este acesta un motiv pentru a arunca ciocanul pe fereastră? Nu. Adăugați o șurubelniță la cutia dvs. de instrumente și poate un cuțit sau o foarfecă și alegeți instrumentul pe baza problemei la îndemână.

Programatorii funcționali și orientați obiect, deopotrivă, nu mai tratați paradigmele ca pe o religie. Sunt instrumente și toți își folosesc undeva. Ceea ce folosești ar trebui să depindă doar de problemele pe care le rezolvi.

Marea întrebare: suntem în pragul unei noi revoluții?

La sfârșitul zilei, dezbaterea - desigur destul de aprinsă - despre programarea funcțională versus cea orientată pe obiecte se reduce la acest lucru: am putea ajunge la sfârșitul erei programării orientate pe obiecte?

Din ce în ce mai multe probleme apar atunci când programarea funcțională este adesea opțiunea mai eficientă. Gândiți-vă la analiza datelor, învățarea automată și programarea paralelă. Cu cât ajungi mai mult în aceste domenii, cu atât îți va plăcea mai mult programarea funcțională.

Dar dacă te uiți la status quo, există o duzină de oferte pentru programatorii orientați pe obiecte la o ofertă pentru programatori funcționali. Asta nu înseamnă că nu veți obține un loc de muncă dacă îl preferați pe acesta din urmă; dezvoltatorii funcționali sunt încă destul de puțini în zilele noastre.

Cel mai probabil scenariu este că programarea orientată pe obiecte va rămâne în jur de încă un deceniu. Sigur, avangarda este funcțională, dar asta nu înseamnă că ar trebui să renunțați încă la orientarea obiectelor. Este încă incredibil de bun să îl ai în repertoriul tău.

Deci, nu aruncați programarea orientată pe obiecte din cutia de instrumente în următorii câțiva ani. Dar asigurați-vă că nu este singurul instrument pe care îl aveți.

Acest articol a fost scris de Rhea Moutafis și a fost publicat inițial pe Towards Data Science . O puteți citi aici . Publicat pe 24 iulie 2021 - ora 8:00 UTC

(Fluierul)


Linkul direct catre Petitie

CEREM NATIONALIZAREA TUTUROR RESURSELOR NATURALE ALE ROMANIEI ! - Initiativa Legislativa care are nevoie de 500.000 de semnaturi - Semneaza si tu !

Comentarii:


Adauga Comentariu



Citiți și cele mai căutate articole de pe Fluierul:

SUA. Sen. Ron Johnson: „16.766 uciși de vaccin în 10 luni. Cu vaccinul COVID, am avut 16.766 de decese în 10 luni, administrând acest vaccin, Nu are niciun rost să obligăm vaccinarea - cu vaccinul COVID, când am avut 16.766 de decese în 10 luni” (VIDEO)

Medic acuză: În fazele inițiale, te faci bine în 24 de ore cu o singură perfuzie. România refuză să cumpere tratamentul. În faze mai grave există tratament cu un înalt grad de eficiență:Tocilizumab. România nu-l cumpără. Opinia Fluierul.ro

PREZENTUL FĂRĂ PERDEA Marius Oprea / Banalizarea morții în România: 24.867 de români îngropați goi, în saci de plastic

BOMBĂ ActiveNews: "Președintele Klaus Iohannis este membru al Organizației Progresiste 'European Council of Foreign Relations' un Think-Tank fondat de GEORGE SOROS". Fluierul.ro a descoperit că ECFR e condusă de Carl Bildt MEMBRU AL GRUPULUI BILDERBERG

Prințesa Mako a Japoniei s-a căsătorit cu iubitul ei, dar și-a pierdut statutul regal. Care este motivul

Analiștii economiei anticipează 5% inflație în următoarele 12 luni și un curs de peste 5 lei/euro

Videoconferință Mediafax: Primarii care nu sprijină învățământul trebuie sancționați

Ion Cristoiu: Klaus Iohannis le-a zis celor de la PNL să mențină ușa deschisă pentru negocierile cu USR. USR i-a dat cu ușa-n cap votând pentru verificarea Averii Președintelui

Coronavirus în România 26 octombrie 2021. Bilanț complet COVID-19

3 DECEMBRIE 1991 a încetat din viață Petre Țuțea. DE CE VOR SA-L INTERZICA PE PETRE TUTEA? Petre Țuțea: "Statul acesta îi apără pe străini de noi. Ca-n colonii. Aici stă cauza indolenței noastre: în EXPLOATARE. De ce și pentru cine să muncești în plus?"

Noile reguli privind accesul în mall, biserică și muzee, publicate în Monitorul Oficial

Astronomii par să fi descoperit prima planetă situată în afara galaxiei noastre

În prima oră de la redeschiderea Măsurii 1, pentru microgranturile de 2.000 de euro, au aplicat mai mult de 7.400 de antreprenori. Bugetul total

Suedia suspendă vaccinarea cu Moderna pentru o perioadă nedeterminată pentru orice persoană sub 31 de ani, după ce pacienții vaccinați au dezvoltat o boală cardiacă paralizantă

HOROSCOP 26 octombrie. Luna în Rac. Energie maximă și trăiri intense pentru trei zodii

CFR Cluj își consolidează prima poziție în Liga 1 după victoria cu Sepsi Sf. Gheorghe

În ce a transformat o artistă pusă pe farse o clădire a gigantului Google

VIDEO Căderea părului este normală și poate fi influențată de mai mulți factori. Când ar trebui să ne îngrijorăm

De ce nu au și școlile de stat posibilitatea să facă ore remediale, întâlniri online cu elevii?

Propunere inedită a liderului deputaților UDMR, Csoma Botond: armistițiu între partide de șase luni

Creșterea numărului de cazuri de gripă aviară la om este îngrijorătoare. Experții se tem că vor apărea tulpini noi

Premierul Poloniei evocă ideea unui "război" în disputele cu UE. Comisia Europeană denunță retorica beligerantă

Aşa convingi o femeie matură să facă amor cu un bărbat tânăr

Avionul Egyptair prăbuşit: Analiza uneia din cutiile negre arată că s-a pronunţat cuvântul "foc"

COMENTARIU Lelia Munteanu. Ciucă: de la Statul Major la statul minor

Un psiholog a recunoscut că a vândut "praf de sinucidere" la peste 100 de persoane. "Nu-mi pasă dacă mă arestează. Vreau să se întâmple ceva"

Tesla Model 3 a devenit în septembrie cel mai bine vândută mașină din Europa

Bolșevism UDMR-ist. Penibilul Cseke "își asumă". Cseke: " Îmi asum certificatul verde obligatoriu în Sănătate. Cel care nu prezintă Certificatul va rămâne fără loc de muncă." E nevoie de o LEGE în Parlament, Penibilule, ca să îngrădești drepturile omului

Un medic român trage un semnal de alarmă privitor la utilizarea antibioticelor în cazurile COVID-19

Joe Biden va participa la summitul ASEAN, în cadrul eforturilor de contracarare a Chinei

Uniunea Europeană cere Israelului să oprească activitățile de colonizare din Cisiordania

Adevărul.ro "Cum au sfârșit liderii-simbol ai Mișcării Legionare: ștrangulați, împușcați sau în sărăcie și anonimat"

Recep Erdogan renunță la expulzarea unor diplomați occidentali

Ciolacu despre negocierile politice: Absolut toate variantele sunt în discuție

Albanezii sunt DACI NEROMANIZAȚI în timp ce noi suntem DACI ROMANIZAȚI. Imnul lor național e și cântecul nostru

SEX ORAL în văzul tuturor. O vedeta de la noi, surprinsă în timpul unei scene XXX, în centrul Bucureştiului

IPOTEZA SOC: Petrolul NU provine din materie organică şi NU se epuizează - Zăcămintele de țiței se refac singure !

Ana Maria Mocanu, GOALĂ la duş. Imagini de infarct FOTO XXX

FINALA VOCEA ROMANIEI. Duet EXCEPTIONAL intre Tiberiu Albu şi soprana Irina Baiant

Semnal de alarmă. Emisiile de gaze cu efect de seră ating un nivel record. RAPORT

JUSTIȚIARUL.RO REVINE CU ARTICOLELE CARE L-AU CONSACRAT. "Protecționiști contra Globaliști"...Ați văzut de ce l-au închis Globaliștii-Progresiști?

În loc să dea țării grâu și porumb pentru pâine și pentru mălai, le dau tutun subvenționat multinaționalelor de țigări. FOTO Țăranii din Dolj au lăsat culturile de grâu pentru cele de tutun. Fermier: "Este mult de muncă, dar merită"

Ministrul Mediului, întâlnire cu primarii marilor orașe care au probleme cu calitatea aerului

A murit Neagu Djuvara, individul care a propagat în mod intenționat MINCIUNA că primii domnitori români ÎNTEMEIETORII ȚĂRII ROMÂNEȘTI despre care regii maghiari de la acea vreme spuneau că sunt "vlahi și schismatici", ar fi fost "cumani"

Mihai Stoica, le bate obrazul nesimțiților progresiști de la Guvernare: " E mai periculos un om vaccinat netestat decât un om nevaccinat testat negativ. Ar trebui şi cei care conduc ţara asta să bage la cap"

BOMBA ZILEI. DACIAN CIOLOS, primul-ministru pregatit de Iohannis, este membru in "Friends of Europe" un important Think Tank (ONG) de la Bruxelles sustinut de GEORGE SOROS. Presedintele "Friends of Europe" este Étienne Davignon din Grupul Bilderberg

Tăriceanu: "Când eşti condamnat pentru cum ai obţinut nişte case, ai o problemă că n-ai restituit cei 300.000 de lei, pe care i-ai încasat necuvenit, nu se ştie dacă ţi-ai plătit impozitele pentru meditaţii, vii şi să dai lecţii Parlamentului sau altora?"

INCREDIBIL. Iată cum se pune pe butuci extracția uraniului în România. Greva atomică. Nuclearelectrica a reziliat contractul cu Compania Națională a Uraniului. Angajații acesteia se pregătesc de grevă generală din cauza situației

Cine e propus Ministrul Sănătății? Vlad Voiculescu un ONG-ist care locuiește la Viena, fost vicepreședinte al băncii austriece Erste Group Bank, actualmente director în Ministerul de Finanțe şi membru al organizației americane ASPEN România.

Biserica Ortodoxă acuză organizația ANTIFA și grupări NEOMARXISTE PROGRESISTO-SOROȘISTE de vandalizarea bisericii din Titan: 'Au lovit din nou!'

Dumnezeu nu Doarme! Aceasta nu e o coincidență. În 2013, șefa CNA, Laura Georgescu era principala sculă a Sistemului care închidea abuziv OTV-ul. Astăzi în 2021, a intrat la închisoare cu Executare 4 ani și 4 luni

Medicul Paul Ichim cere oprirea slujbelor: Altfel, o să rămână bisericile fără enoriași

Cel puțin doi morți și mai mulți răniți în urma unei explozii produse la o universitate din China

Halep își anunță planurile de viitor: Mai am de jucat doi, trei ani, vreau să fiu mai agresivă

Poșta Română le permite clienților săi accesul în interior fără certificatul verde

Soros nu se lasă trimiterea refugiaților se va relua: "UE trebuie să primească un număr considerabil de refugiați cel puțin 300.000 anual. Mecanism european unic pentru relocarea refugiaților ca-n Canada". Cine nu ia migranți i se taie fondurile

Cum se inventează lideri. Victor Negrescu (PSD) - un papagal progresist internaționalist de tip Sorin Moisă propagat în politică încă de la 20 de ani este preluat zi de zi de AGERPRES. Negrescu:"România dorește să se apropie de nucleul dur al Europei"

CEREM CETATENILOR ROMANIEI SA SEMNEZE PENTRU NATIONALIZAREA TUTUROR RESURSELOR NATURALE ALE ROMANIEI ! - Initiativa Legislativa are nevoie de 500.000 de semnaturi - Semneaza si tu ! - Petitie initiata de Fluierul.ro

ROMÂNIA. O țigancă din Vaslui este cea mai tânără bunică din lume. Tânăra din judeţul Vaslui a doborât recordul deţinut de o britanică, devenind cea mai tânără bunică din lume, la doar 23 de ani.

VIDEO/ O femeie s-a dezbrăcat în pielea goală și s-a urcat pe o mașină, în București


Pag.1 Pag.2 Pag.3 Pag.4

Nr. de articole la aceasta sectiune: 193, afisate in 4 pagini.