Simpleton Pattern

Posted in Premiul n00bel on June 10th, 2012 by Mihnea

Cu siguranta ati remarcat ca minerul si-a cam suspendat activitatea tutorialistica in ultimul timp. Cind firma aia care n-a auzit de Google l-a luat la sinul ei dupa despartirea de multinationala si l-a reprofilat pe Java, Silviu a fost cuprins de o bucurie de copil mic cu mintea goala. Vazind ca Normele de Exploatare mentioneaza prezenta unui garbage collector, s-a simtit obligat sa produca cit mai mult gunoi in timpul programului, astfel incit foarte rar ii mai raminea timp de cite un tweet extracuricular despre psihologie si Einstein. Spre fericirea noastra insa, dupa aproape un an de truda a avut pentru prima data nevoie sa declare o variabila globala si vechile instincte de pedagog s-au reaprins in el.

Dupa cum stie toata lumea si a aflat si Silviu saptamina asta, in Java nu ai voie cu variabile globale, deoarece incalca Principiul Celor 50 De Linii de Cod. Acest principiu, formulat de niste muisti ale caror nume mi-e lene sa le caut acum pe Wikipedia cind s-au strins nu stiu unde cacat sa faca ei limbajul viitorului care in 3 ani sa devina unicul limbaj folosit in intreaga lume, suna asa:

Se va numi Java acel limbaj obtinut pornind de la C++ si eliminind feature-uri pina cind orice program imaginabil necesita minim 50 de linii de cod.

In constructia dogmaticii lor, muistii s-au inspirat viguros de la unii care incercasera si ei sa impuna o limba unica in Europa cu vreo 50 de ani inainte si pina la urma au avut cam tot atita succes. In fine, cert e ca pentru a cirpi gaurile din Java, s-au gasit alti 4 muisti care au intemeiat o noua dogmatica: design patterns. Pentru a contrabalansa neonazismul lui Gosling (na, ca l-am cautat pina la urma), astia 4 muisti s-au inspirat din comunism, deci muie Ovidiu Cucu.

Pardon, divaghez. Ce voiam sa spun este ca design patterns sint diverse metode de a implementa banalitati ca variabile globale, instructiunea for, instructiunea switch etc. in Java, cu clase. Si cum for si switch sint concepte avansate pentru unii, orice retardat care cedeaza impulsului de a scrie un articol pe tema intelligent design in programare incepe cu singletonul, adica variabila globala.

Retardarea asta insa are grade. Exista retardati care pot fi convinsi sa nu mai incerce sa bage patratul prin cerc, retardati care musca din patrat in timp ce se pisa pe cerc si jos de tot, sub toti ceilalti retardati, exista Silviu Ardelean. In contextul de fata, Silviu Ardelean poate fi recunoscut cu usurinta, pentru ca va incerca sa aplice acest hack necesar pentru a avea variabile globale in Java la C++, care deja are variabile globale.

Articolul nu dezamageste. Lasind la o parte ilaritatea care survine cind ne uitam cum se framinta ortacul sa fie thread-safe si in pas cu C++11, la o trecere sumara prin articol sintem izbiti de o schimbare radicala in exprimare, pe undeva pe la mijloc, cind incep partile “dificile”. De la “that’s way I’m trying to figure a few implementations, some base on C++ 11 features” si “pointer final deleting problem disappears“, trecem brusc la “it might just happen that the OS scheduler unwittingly interrupts the first thread at this point“. Poftim? Unwittingly, pe bune? Probabilitatea ca Silviu sa foloseasca cu de la sine putere cuvintul “unwittingly” este la fel de mare ca in cazul ala din trecut cu “this is in contrast with“, deci ma simt obligat moral sa-l intreb pe Google ce parere are despre fraza aia. Si ce sa vezi, primul hit contine exact descoperirile originale ale minerului, cu tot cu numerotarea aia a liniilor-problema: de fapt e un citat din cartea lui Alexandrescu.

Mai jos observam ceva actiune SF cu std::call_once si std::lock_guard. De unde cacat stie Silviu despre std::call_once, va intrebati? Pai ia cautati codul ala exact asa cum e pe Google, si veti afla: de pe Stack Overflow. Daca va uitati putin mai atent, cum a facut-o un suflet rau ce a si comentat la miner pe blog, va puteti chiar intreba de ce cacat mai ai lock-ul ala acolo, daca faci call_once. Pai simplu: pe Stack Overflow zice unu’ sa folosesti call_once, da’ nu arata exact codul rezultat, asa ca minerul a pus pur si simplu cu copy/paste peste codul original, deoarece habar n-are ce fac cacaturile alea. Totul e sa dea articol++. A, scuze, ++articol, ca asa e optim.

Ma rog, articolul are acea calitate remarcabila de a-ti oferi cite o noua timpenie amuzanta de fiecare data cind il recitesti. N-o sa va stric placerea, va las sa va bucurati in tihna de acest mic miracol al programarii. Vreau doar sa-l intreb pe Silviu: ba, tu esti chiar atit de prost incit nu-ti dai seama cind e cazul sa te opresti din copy/paste?

PS: daca zice cineva ceva de avantajele singletonilor fata de variabile globale pentru unit testing si mock objects si pula mea, ia ban direct. De asemenea se confera ban pentru infierarea singletonului ca anti-pattern si sustinerea celorlalte pattern-uri.

 

Tags: , , , , , , , , , , , ,

Vorbe, nu fapte!

Posted in Glume de autobaza, Stand-up philosophy on October 4th, 2010 by jos8cal

Am 10 minute pauza la ospiciu si am zis sa aduc o mica completare la postul anterior. Scriu de pe telefon fix si sint foarte sedat, so bare with me. Asa, deci doresc o completare la partea cu Fordul in care minierul se identifica cu succesul, cu atitudinea, cu reusita, cu binele din lume, cu futaiul si niciodata cu laba, cu pula-n pizda si niciodata in cur. Acum citeva zile o ardea intelectual pe twitter si se identifica din nou cu oameni care au schimbat fata programarii si au avut ceva de zis in domeniul IT: Einstein, Gandhi, Lao-Tzu, Dijkstra, Antoine De Saint-Exupery.

Emisfera lui dreapta, condamnata sa substituie lipsa celei stingi si sa invete o limba, orice limba, a decis inca o data s-o pise nostalgic in ochi pe consoarta sa muribunda pentru a-i permite Silviului inca o identificare cu colectia de proverbe despre programare sub forma unor Mari Idei Spuse De Oameni Care N-au Nicio Treaba Cu Programarea.

Cum materia lui cenusie a fost salvata de la negreala totala prin distanta de 50Km instituita inca de la o virsta frageda intre el si Valea Jiului, aceasta i-a mai facut un favor Silviului si a comandat serotonina de toti banii, moment in care Silviu s-a pus pe subliniat predicatele proverbelor cu o linie si le-a tras pe nas:

“If you want to build a ship, don’t drum up the people to gather wood, divide the work, and give orders. Instead, teach them to yearn for the vast and endless sea.”

— Antoine De Saint-Exupery

Citatul oglinda pentru captat gindirea miniera. Imi si imaginez cum a dat din cap aprobator ca un tirnacop cind a realizat ca daca vrei sa codezi tot ce trebuie sa faci este sa-ti doresti. O da.

Slabiciunea juvenila catre metafora l-a facut pe Silviu sa-l aprobe si pe Lao Tzu, un Cornel Dinu in materie de razboi care-si scria numele cu Tz in loc de Ț si care nu stia ca era programator undercover inca din anii de inceput ai existentei umane.

A leader is best when people barely know that he exists.
Less good when they obey and acclaim him.
Worse when they fear and despise him.
Fail to honor people, and they fail to honor you.
But of a good leader, when his work is done, his aim fulfilled,
they will say, “We did this ourselves.”

— O Lae-Tzu

Si acum una care-l coafeaza la fix:

We reject kings, presidents, and voting.
We believe in rough consensus and running code.

–Dave Clark (1992)

A se observa aici si aici cum Silviu vorbeste pe “running code” si nu o da-n telenovele si-n teorii retardate care poate poate se pot mula pe retarzenia care-i bintuie existenta.

Abraham Lincoln reportedly said that, given eight hours to chop down a tree, he’d spend six sharpening his axe.

— TidBITS 654, quoted by Derek K. Miller, via Art Evans

Asta cred ca e true story. E ca de la miner la miner. In 8 ore la birou el sta 6 ore sa-si ascuta tirnacopul.

The significant problems we face cannot be solved by the same level of thinking that created them.

— Albert Einstein

Einstein pe prozac vorbind pe limba lui Silviu Ardelean pe serotonina.

“There’s no time to stop for gas, we’re already late”

— Karin Donker

OMGFUCKOFFDIEANDEATSHIT!

Cacat! M-au reperat doctorii ca am inceput sa strig prea tare la telefon de nervi si acum s-au pornit spre mine cu camasa alba. Fuck! Hai c-am taiat-o ca mi-au promis ca nu ma string prea tare de pat daca ma gasesc la mine-n camera.

Tags: , , , , , , , , , , , ,