Amintiri din copilarie

Posted in Regula 0 on March 20th, 2012 by Mihnea

De cind minerul Silviu Ardelean a cazut din gratiile multinationalei emblematice si s-a vazut obligat sa-si ia tirnacop cu garbage collection, a lasat-o mai usor si cu “acting into a C++ Romanian programming community called CODEXPERT”. Desi ograda n-a dus lipsa de rataciti a caror retardare ar fi putut rezona cu prostia lui pentru a da nastere unei explozii de bucurie in sufletele cautatorilor de amuzament facil (de exemplu ala suparat pe assert), oportunitatile au venit si au trecut fara ca minerul sa faca vreo propunere. Totusi, nu e totul pierdut: ortacul are si twitter, unde mai scapa din cind in cind cite un link la chestii care-l umplu de mirare (pentru ca nu le intelege) sau un citat care l-a impresionat.

Ciripeala de azi continua o tema inceputa cu mult timp in urma prin celebrul “psychologists say“; o sa vi-l arat imediat si probabil il veti recunoaste, pentru ca este folosit de multi prosti pentru a-si justifica prostia. Ne putem doar inchipui extazul care l-a cuprins pe miner cind a vazut ca insusi marele Albert Einstein i-a lasat peste veacuri un mesaj de imbarbatare care confirma faptul ca nu-i nimic in neregula cu el si ca haterii n-au dreptate:

A person who never made a mistake never tried anything new.

Sigur, ne-am putea lega de faptul ca de la “a mistake” pina la colectia de imbecilitati consemnate de letopisetul nostru este o distanta pe care s-ar putea ca Al sa nu vrea s-o acopere cu remarca lui, sau ca nu poti pretinde ca programarea e “something new” si in acelasi timp sa scrii pe linkedin ca ai 10 ani de experienta. Nu are rost insa sa zabovim mult pe astfel de argumente, pentru ca voi le stiti deja, iar el nu le intelege (mai ales ca acum il are si pe Einstein de partea lui). In schimb, o sa fac ca-n Greuceanu, propunind sa ne duelam in citate. In coltul meu va sta John Holt cu o poveste din copilaria lui Silviu:

One day, in room period, I asked the children to write on paper certain words that I had showed them, and then write what these would look like if seen in a mirror. First I wrote CAT. Silviu wrote CAt. It didn’t trouble him that two letters were capitals and one lowercase – if he noticed it at all. He assumed that seen in a mirror the order of letters would be reversed, so he wrote TaC. The lowercase t became capital; the A became lower case. The next word was BIRD. He completely forgot what he had just done – about reversing the order of the letters. This time he assumed that the trick was to write each letter backwards, while keeping them in the original order. On his paper he had written BIrD. He reversed the B correctly, wrote the I, then looked at the lowercase r, which must have looked to him like an upside down L, decided, “I must turn this right side up,” and wrote L. Then he decided that the letters B and D should not be reversed, so his final answer was BILD.

Sper ca acum intelegeti cum ii vin ideile alea cu inlocuit enum-urile cu vectori. Mai departe ni se explica de ce reactioneaza cum reactioneaza cind ii spui ca a gresit:

This child must be right. He cannot bear to be wrong, or even to imagine that he might be wrong. When he is wrong, as he often is, the only thing to do is to forget it as quickly as possible. Naturally he will not tell himself that he is wrong, it is bad enough when others tell him. When he is told to do something, he does it quickly and fearfully, hands it to some higher authority, and awaits the magic word right or wrong. If the word is right, he does not have to think about that problem anymore; if the word is wrong, he does not want to, cannot bring himself to think about it.

Si acum despre raspunsurile aprobatoare si propunerile suplimentare din thread-urile in care s-a dat deja raspunsul corect:

This fear leads him to other strategies. He knows that in a recitation period the teacher’s attention is divided among twenty students. He also knows the teacher’s strategy of asking questions of students who seem confused, or not paying attention. He therefore feels safe waving his hand in the air, as if he were bursting to tell the answer, whether he really knows it or not. This is his safe way of telling me that he, at least, knows all about whatever is going on in class. When someone else answers correctly, he nods his head in emphatic agreement. Sometimes he even adds a comment, though his expression and tone of voice show that he feels this is risky. It is also interesting to note that he does not raise his hand unless there are at least half a dozen other hands up.

Atit.

 

 

Tags: , , , , , , ,

A patra corectura

Posted in Codare cu premeditare, Premiul n00bel, Regula 0, Stand-up philosophy on November 27th, 2010 by Mihnea

Truda afunda continua in galeria sapata de Silviu Ardelean. Cu ajutorul cititorilor nostri a reusit sa-si corecteze si “micile scapari” legate de character set, a aflat de FindFirstFile() si chiar a incercat sa trateze path-urile care contin wildcard-uri, lucru care nu prea i-a iesit. In momentul de fata, codul pentru cazul in care nu vrei sa folosesti WinAPI este:

long long GetFileSizeFast(const TCHAR *szFilePath)
{
    if (!szFilePath || !szFilePath[0] ||
        !PathFileExists(szFilePath))
        return -1;

    long long nSize = -1;
    struct __stat64 buf;
    nSize  = (_tstat64( szFilePath, &buf ) == 0) ?
        buf.st_size : -1;
    if (S_ISDIR(buf.st_mode)) nSize = -1;

    return nSize;
}

Sigur, ne-am putea intreba de unde frica asta de WinAPI, avind in vedere ca _tstat64() e o functie care exista doar pe Windows, deci oricum poti sa te bazezi ca ai WinAPI la dispozitie. De asemenea, ne-am putea intreba cum eviti folosirea lui WinAPI, cit timp chemi PathFileExists(), o functie WinAPI. Cei mai circotasi ar putea comenta chiar despre inutilitatea apelului la PathFileExists(), avind in vedere ca functia _tstat64() trateaza singura caile cu wildcard-uri prin ele. Eu va spun doar atit: “mici scapari”.

In cazul in care nu tinem sa scriem cod portabil cu functii care exista doar pe Windows, miinile negre ne intind si o varianta cu WinAPI:

long long GetFileSizeFastest(const TCHAR* szFilePath)
{
    if (!szFilePath || !szFilePath[0] ||
        !PathFileExists(szFilePath))
        return -1;

    WIN32_FIND_DATA sFileData;
    HANDLE hFind = FindFirstFile(szFilePath, &sFileData);
    if (hFind == INVALID_HANDLE_VALUE)
        return -1;

    FindClose(hFind);

    return  (sFileData.nFileSizeHigh * (MAXDWORD+1LL)) +
        sFileData.nFileSizeLow;
}

Din nou clevetitorii ar putea sa se intrebe cum e functia asta “Fastest”, daca ea interogheaza filesystemu’ de 2 ori despre fisier. In cei 9 ani care l-au facut expert in C++, Silviu n-a invatat inca sa compare string-uri; vorba aia, abia a aflat despre fisiere, sa avem un pic de rabdare cu el. Inca o data: “mici scapari”.

Intr-unul din comentariile pe care probabil le va sterge in curind, minerul a marturisit ca lucreaza la o aplicatie care valideaza numele de fisiere folosind expresii regulate. Stie ca se poate si fara, dar nu e “profesional”. Chestia asta suna intr-un asemenea hal, incit ma tem ca ar putea sa fie o tentativa de sarcasm din partea lui, poate chiar prima in cei 30 de ani de cind e expert in Atitudine. Daca e pe bune, e doar o noua “mica scapare”, nimic grav.

Problema e ca se cam aduna “micile scapari” si ca numarul lor creste dupa fiecare corectura, in loc sa scada. Cam de cite “mici scapari” o fi avind nevoie pentru a realiza ca de fapt are de-a face cu o “mare scapare” in ceea ce priveste programarea?

Retorica aceasta este flasca, evident. Puroiul are o intreaga pleiada de justificari pentru faptul ca de 9 ani si 4 zile nu reuseste sa scrie o functie care sa afle dimensiunea unui fisier. In primul rind, in mintea lui (pardon, a unui “prieten”) e acceptabil sa publici cod care nu se compileaza, pentru ca ala care-l ia trebuie sa mai munceasca si el, futu-l in gura de oportunist. Cu alte cuvinte, cind unu’ e asa de incepator incit cauta pe net cum se afla dimensiunea unui fisier, in mod cert este calificat sa recunoasca cazurile limita care pot aparea si sa le trateze singur (sau sa stie cum sta treaba cu WIN32). Silviu i-a aratat ce era mai important, si anume numele unei functii. Mai departe se descurca incepatorul ala, desi Silviu nu s-a descurcat, cu toti cei 9 ani de dat la tirnacop cu care se lauda. Cred ca asta insemna “and staff” ala de dupa pleonasmul cu “CRT run-time library”.

Un suflet mare a incercat sa-i explice ca lumea are tendinta sa te creada prost daca publici prostii, aratind chiar cu degetul in directia lui Bullschildt, dar Silviu nu e un om care sa faca legaturi (desi ocazional il mai paleste cite un moment Poirot). Putem doar specula motivul pentru care Silviu n-a sters acel comentariu eretic si speram ca-i implicat un anumit tip de morcov, dar oricum, a explicat pe blog-ul de atitudine de ce are el dreptul sa faca pe Domnul Trandafir:

În cariera mea am întâlnit mulţi oameni talentaţi, foarte buni profesionişti, dar la toţi am văzut slăbiciuni tehnice. Cu siguranţă şi Mihnea are, la fel cum am şi eu.

Trebuie sa recunosc ca asta m-a enervat un pic. Acest Pitic Porno al forumurilor romanesti de programare, care nu stie sa caute intr-un map sau sa afle dimensiunea unui fisier, poate vedea “slabiciuni tehnice” la altii, pisa-l-as in inima. Mai mult, lacunele mele le scuza pe ale lui, chiar daca ale lui sint in subiecte care i s-ar parea banale unui elev de liceu, iar pe ale mele poate doar sa le conjectureze in baza filosofiei “nimeni nu-i perfect”. Desi i-am mai explicat de vreo doua ori, el continua sa ignore faptul ca eu nu scriu tutoriale, deci nu conteaza cit de incompetent sint. Cind scrii ceva, nu te raportezi la ceilalti gaozari care scriu timpenii pe codeguru sau pe blogurile lor “tehnice”, bai pula. Te raportezi la rezultate, ca programarea e o stiinta exacta, nu e expresionism abstract. Daca postezi cacaturi care nu merg si pe care nici tu nu le intelegi, puti demonstrabil a prost si faptul ca mai sint si altii ca tine nu e o scuza.

Tot in ultima lui luare de pozitie, ortacul revine la o tema mai veche, cea a Adversarului Colectiv. In urma cu ceva vreme el era convins ca jos8cal si cu mine sintem aceeasi persoana pentru ca ne luam de timpeniile lui, desi acum neaga ca ar fi zis asa ceva. Acum ma face pe mine raspunzator de faptul ca cineva a pus niste cod gresit intr-un comentariu la el pe blog. Aparent eu trebuia sa ma iau si de ala, dar n-am facut-o pentru ca si eu gresesc, sau ceva; n-am inteles, logica subterana imi scapa uneori. Minerul n-a priceput inca faptul ca tintele predilecte ale acestui blog sint oamenii care persista in prostie chiar si dupa ce li se spune ca ar fi mai bine sa stea in banca lor si sa se rezume la pus intrebari, iar el primeste atit de multa atentie pentru ca e cel mai penal reprezentat al acestei subspecii.

In finalul justificarii si-asa destul de dezlinate, Silviu recurge la o manevra des intilnita la imbecilii ramasi fara argumente: expresia “m-am plictisit”. Laolalta cu acuza “f(r)ustratule”, sau eventual dupa ce aceasta se dovedeste ineficienta, aruncarea lui “m-am plictisit” intr-o discutie se face in speranta ca il vei inchide pe interlocutor cind realitatea iti e potrivnica, dar vrei totusi sa cazi in picioare. Pentru a completa starea de spirit in care era el cind facea apel la respect (din pacate a sters apelul intre timp), ma vad fortat sa reiau un pasaj liric citat de colegu’ jos8cal intr-un post mai vechi despre felul in care societatea si Internetul il dezamagesc zilnic pe Silviu:

Când plini de praf cu paşi trudiţi,
Ieşim din mina obosiţi,
Ne doare ca-n lumina sa
Pământul ţine-o lume rea.

Deoarece un bou nu poate supravietui niciodata singur, Ovidiu “MVP” Cucu a tinut sa-si arate in mod subtil solidaritatea cu cauza mineriadei. Cititorii nostri fideli sigur n-au nimic mai bun de facut decit sa tina minte cum speculam acum citeva post-uri ca Ovidiu este cel care-l ajuta pe Silviu sa-si spele trecutul fara sa lase urme. Atasatul politic pe linga uzina Codexpert a decis sa-si dea jos masca, semnind citet ultima editare a periplului codexpertic al lui Silviu prin lumea fisierelor. Motivul trecut de MVP in condica este “Few cosmetics“. Asta e noul eufemism aprobat in Sedinta Extraordinara de catre AXTI pentru “facut sa mearga dupa un an”. Cosmetica e ce le va trebui lor daca Mos Craciun imi aduce anul asta aruncatorul ala de flacari de care-i tot zic.

PS: avem doua pagini noi la care se poate ajunge din coltu’ rusinii, adica din dreapta-sus: Idei in Monolog, cu citate din viata si opera personalitatilor din programarea romaneasca, si Intreaba-l pe Capitanul Kirk unde invitatul nostru semi-permanent Iacob Tiberu ia interviuri acelorasi personalitati.

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