Scoala ardeleana de aritmetica

Viata e grea in Valea Jiului. Intre o descindere in abataj si o incursiune horticola la Bucuresti nu-ti ramine mult timp pentru dezvoltare personala. Daca vrei sa-ti cultivi o pasiune, cum ar fi pescuitul, trebuie sa renunti la unele chestii mai putin importante, cum ar fi scoala primara. Tragedia devine evidenta abia cind destinul te forteaza sa dai pestele din mina pe programarea de pe gard si cei din jurul tau descopera ca ai lipsit cind s-a predat impartirea cu rest sau formarea pluralului.

In post-ul despre atoi-ul ortacului va ziceam, printre altele, despre pasiunea lui Silviu Ardelean pentru modulo. Un cititor vigilent a remarcat insa ca nu era prima data cind fostul viitor pescar rescria regulile aritmeticii. Intr-un thread de pe vremea cind Gardianul Ovidiu nu gasise inca un pretext pentru a denunta unilateral dialogul dintre mine si experti povesteam cum aplica Peter principiile programarii defensive:

int& operator[](unsigned int index)
{
    index = index % count();
    return m_elements[index];
}

Ce a inteles minerul din asta:

Totusi… ma intreb daca el a facut vreodata debug pe acest cod. Sincer, ma cam indoiesc, pentru ca atunci, ar fi constatat ca tot timpul elementul ar fi fost valoarea returnata de count() [datorita faptului ca index era mai mic decat aceasta valoare] si in mod normal, ultimul index al lui m_elements ar fi fost count() – 1. Pracic, se accesa un index inexistent ( valoarea returnata de count() ). Sau?

Deci in 2009, pe cind era expert de 8 ani in C++ ([1]), Silviu credea ca restul impartirii lui 4 la 9 este 9. In lumina acestor fapte, ne intrebam ce a vrut de fapt sa faca cu % 10 ala in implementarea lui de atoi(). Sau la implinirea a 10 ani de experienta a descoperit cum functioneaza de fapt modulo si s-a decis sa-l foloseasca si unde nu face nimic, sau a vrut ca atoi-ul lui sa creada ca toate cifrele sint 10. Sau?

Putin mai incolo in thread, insusi Gardianul Ovidiu incearca sa domoleasca zelul cu care minerul explica principiile de convietuire armonioasa cu sizeof (operatorul care returneaza lungimea array-urilor dinamice, daca tineti minte). Ovidiu intinde urmatoarea nada:

size_t v = 0;
while(v < sizeof(v++))
{
    printf("%u", v);
}

Silviu, cu pedala mintii la podea, raspunde:

Fara a rula, iti zic sigur ca va crapa la printf(), chiar daca pasezi “%d” sau “%d”. printf()-ul are limitele sale, ptr. tipuri simple (int, float, char, etc).
Pune std::cout in loc de printf() si nu mai crapa. Chiar afiseaza ok valorile lui v.

Mare atentie, Silviu, ca si pamintul are limitele sale, ca si printf(), si s-ar putea ca intr-o zi sa se surpe pur si simplu sub tine.

In incheierea paginii aflam ce l-a determinat pe Silviu sa schimbe undita cu calculatorul personal:

Daca as lucra intr-un domeniu embeded unde trebuie sa ma supun unor legi mai stricte, atunci las si de la mine. Din fericire doar mi-a mirosit cu ce se mananca si e putin porbabil sa activez vreo data intr-un astfel de domeniu. Acum 2 ani o firma vroia sa ma atraga pe o pozitie de team leader exact pe ceva “embeded” si le-am multumit frumos. Prefer creeativitatea si complexitatea specifica aplicatiilor ptr. PC.

Eu sper ca de fapt aia vroiau sa-l atraga pe Silviu intr-un beci la marginea orasului unde sa-i arate tot felul de pozitii si obiecte emdeduibile in cur. Altfel vreau sa-i cunosc, in primul rind ca sa nu-mi iau vreodata cuptor cu microunde programat de ei si in al doilea rind ca sa le ofer gratuit un abonament gold la RSS-ul site-ului nostru.

Silviu, mopul e la tine. Speram sa nu te dezminti nici de data asta si sa stergi macar “mica scapare” cu operatorul %. Adevaratul test de creativitate va fi insa la aia cu siguranta craparii, ca pe-acolo nu prea vad cum ai putea spala rusinea fara ajutorul mentorului tau (“few cosmetics”, sau?). Sper ca vei opta pentru o explicatie tehnica, cu cuvintele tale, a modului in care functioneaza functiile variadice si mintea minerului. Asta m-ar bucura cu adevarat.

Fig. 1: Silviu propune, codexpertii dau cu mopu'

 

PS: Avind in vedere ca am ris deja de multiple ori de faptul ca multinationala emblematica nu te-a mai dorit asa de tare cum o doreai tu pe ea, poti sa-ti actualizezi linkedin-ul ala, ca nu mai ai ce secret sa tii. In plus, ne-au zis noii tai colegi ca se intreaba daca ti-e rusine cu alegerea facuta, de nu vrei sa o impartasesti public, tu care in rest esti un om asa de deschis.

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

30 Responses to “Scoala ardeleana de aritmetica”

  1. Şocat Says:

    Acel thread il caracterizez astfel:

    Am stat,
    Ne-am scarpinat,
    Cu parerea ne-am dat.

    Asta pe langa multa filozofie a vietii si programarii si mai multa confuzie.

  2. wasile Says:

    a intrat masina de curatenie peste threadul respectiv:

    http://www.codexpert.ro/forum/viewtopic.php?f=18

  3. wasile Says:

    ah, am luat eu linkul aiurea. repede, fa curatenie aici sa nu se vada ca cititorii tai sunt incompetenti =)

  4. Mihnea Says:

    Zi-i si cu &t=773 la coada si merge. Deocamdata vad ca-i intact, da’ minerul apare ca online, deci presupun ca tocmai efectueaza salubrizarea trecutului.

  5. bullshit Says:

    Cand bagi in Google silviu ardelean pagina de standupprogramming apare foarte jos si cu doar un singur articol. Rankingul e low, abia se observa. Ce naiba ati facut sau n-ati facut?

  6. Mihnea Says:

    Nu stiu. Pe vremea cind eram pe wordpress.com Google ne iubea si umplea primele 3 pagini de link-uri la autobaza. De cind am trecut la profesionisti nu ne gaseste nici daca dai “standup programming silviu”. Webmaster tools nu contine indicii si mai departe nu stiu sa investighez problema.

    Mai tare e ca pe bing scrie “some results have been removed” si da link la pagina asta. E clar ca nu-i vorba de proprietate intelectuala, ca Silviu n-are un intelect care sa genereze proprietati pe care sa le poti fura. La defaimare scrie ca trebuie ordin judecatoresc si nu cred ca a cistigat minerul un proces cu noi fara sa aflam. Mai ramine child porn. Probabil bing crede ca Silviu are minte si suflet de copil si cum noi il tot futem aici, se cheama ca facem child porn. Asa ca ne-a scos.

  7. wasile Says:

    se pare ca referer.us ma duce cateodata pe linkul gresit (http://www.codexpert.ro/forum/viewtopic.php?f=18). si uneori ajung si la capatul internetului http://referer.us/r/99/ =)

  8. Mihnea Says:

    Ai browser indecis? :)

  9. Tomis Says:

    Dand o cautare dupa codexpertul ardelean am descoperit ca pentru miner virgula este sfanta (probabil o consecinta a similitudinii cu tarnacopul) si trebuie folosita nu doar in cod ci si in viu grai, scris grai si orice alt tip de grai s-ar mai inventa.

    Carcotasii care il critica pe Silviu pentru uzul creativ si complex al virgulelor nu l-au auzit pe acesta vorbind in direct si prin urmare nu sunt constienti de posibilitatea ca el sa isi punctueze (am spelat corect?) frazele exact asa cum le propunta. Chiar daca a lipsit de la scoala primara el a retinut esentialul, si anume: “VÍRGULĂ ~e f. 1) gram. Semn de punctuatie (in forma de tarnacop) care marcheaza o pauza de scurta durata si se pune intre parti de propozitie sau intre propozitii in cadrul frazei, pentru a le izola.” Foarte corect.

    Prin urmare propun un exercitiu de imaginatie a vocii unui promitator pescar azvarlit de destin in balta mizera a programarii, un om putin naiv pentru lumea in care traim, un ardelean mai incet (la vorba) pentru care fiecare virgula reprezinta o pauza sanatoasa. Pauza poate sa devina atat de consistenta incat propozitii aflate la un punct distanta pot fi separate de minute intregi -chiar ore!- si prin urmare repetitia unor expresii intr-un comentariu de doua randuri este perfect justificata. Sau? Este evident ca noi, cei care folosim tool-uri automate, am putea ridica din scrancene la vederea acestei tehnologii dar asta este problema noastra de neinitiati.

    Foarte util si antropologilor, linkul urmator:

    http://www.codexpert.ro/forum/viewtopic.php?f=5&t=897&start=45#p5657

    Iar ca sa pastram pentru posteritate randurile ce ar putea sucomba datorita unor mici retusuri reproduc aici comentariul fostului angajat la o multinationala emblematica. Nu am facut decat analiza sintactica pentru ca am dorit sa las cititorului placerea de a parsa semantica randurilor urmatoare. Pauza de virgula, va rog.

    “Dar fireste, eviti in continuare, cu destula pricepere, aspectele ce ar pune in dificultate afirmatiile tale. Observ ca iei din context, doar ce-ti convine.
    Ma intreb, cum analizezi tu cerintele unei aplicatii… Iei din context, doar ce iti convine? Probabil, ca da.”

  10. Mihnea Says:

    :))

  11. Mihnea Says:

    Sper ca ati vazut replica minerului: “There is one conclusion as always: he who makes no mistakes, makes nothing. No developer, even a skillful one, is secure from even silliest errors”. Iar a gasit un citat care-i aduce alinare, ca atunci cu psihologii. Si s-a gindit ca daca arata ca si altii sint prosti, el e mai putin prost.

    Silviu greseste pentru a crea.

  12. bullshit Says:

    Gata. Silviu s-a scos, se pare ca a castigat. Blogul asta nu mai are nici un rost. In Google nu mai apare site-ul asta intre primele 100 de rezultate. Trebuia sa faceti invers: standupprogramming.com sa fie redirectat la wordpress, si nu invers. Daca nu faceti ceva repede, ati pierdut meciul urat de tot.

  13. yo Says:

    Motive presupuse pentru care noul site nu apare mai sus în google:
    – am înţeles că s-au schimbat puţin valorile la google şi dacă ai prea multe tag-uri scazi în clasament
    – dacă crede că doar copiezi conţinutul de pe alte site-uri (şi cum s-a mutat mult aici dintr-o dată poate aşa consideră)
    – se recomandă folosirea redirectului 301 în caz că îţi muţi site-ul (nu ştiu ce folosiţi pe wordpress şi n-am timp să mă uit :) )

    Câteva chestii poate utile:
    http://www.google.com/support/webmasters/bin/answer.py?answer=66359 (acum dă 404)

    Cached:
    http://webcache.googleusercontent.com/search?q=cache:xSzi0xBXfe0J:www.google.com/support/webmasters/bin/answer.py%3Fanswer%3D66359

  14. Mihnea Says:

    E posibil sa i se para ca am ciordit contentu’ de pe wordpress. Daca e asa presupun ca se va rezolva de la sine la un moment dat, dupa ce expira ce tinea minte de pe wordpress.

    Redirect-ul de la wordpress aici e cu 301 (am verificat si eu acum, ca e facut de ei automat, noi doar am apasat un buton :) ).

    As fi dezamagit sa fie de la tag-uri, ca minerul se ataca cind vede tag-urile blogului lui de atitudine in post-urile noastre.

  15. Şocat Says:

    Experienta mea a fost de asemenea ca migrarea de pe blog wordpress.com pe alt domeniu scade dezastruos rating-ul din google. Rating care pe wp.com era nesperat de bun! (asta se intampla acum 1 an, intre timp cine stie ce s-a schimbat)

  16. Spint Says:

    Site-ul vostru e bestial!

    Am ajuns cautand ceva. Sincer nu mai stiu ce, ca m-am apucat de citit acum vreo 2 ore si nu m-am mai putut dezlipi.

    PS: Silviu Ardelean e noul meu model in viata :))))))))))))

  17. yo Says:

    Căutai File size fast (heuristic) detection? :p

  18. Spint Says:

    Nope. Dar nu mai conteaza, am gasit Scoala Ardeleana de Aritmetica :))

  19. Tomis Says:

    Nu stiu pe unde lucrati voi dar va urez concediu fericit (daca aveti parte de el). Have fun.

  20. Şocat Says:

    Sper ca mai aveti concediu, ca… e bun concediul!
    Dar sper sa se si termine odata, sa reveniti pe baricade. Sa il intrebati pe Silviu, care din nou itereaza map-uri si aduna size_t-uri, cum de obtine pe un calculator cu patru core-uri speed-up de 2, 4 sau aproape 5! Probabil e ceva ce se face la scoala aia ardeleana de aritmetica.

    Asta cand face aceeasi operatie pe mai multe procesoare (adica aduna aceleasi numere). Ar putea extinde aplicatia sa verifice daca da tot timpul la fel!

    Intrebati-l si cum ar face in paralel suma pentru un singur vector, o singura lista, un singur map si un singur map nesortat. Si intrebati-l daca suma paralela pe lista e sau nu e viitorul (iar pe blogul de atitudine ne poate zice daca viitorul suna bine)!

  21. Mihnea Says:

    Nici nu stiu de unde ne-am putea apuca sa facem misto de testul lui cu incrementarea multicore. Numai un idiot ca el se putea gindi la asa ceva (noroc ca a dat link la definitia speedup-ului). Din pacate un anume NDA ne interzice sa facem apel la contextul mai generos din care a tras minerul concluzia ca multicore e viitorul. ;)

    In fine, e neamuzant de prost ce se intimpla acolo, asa ca n-am scris nimic despre asta (ma rog, i-am lasat un comment direct acolo in care ii explicam de ce s-a ris de el cind a FAQ-uit subiectul in ograda lui Cucu, dar evident ca nu l-a aprobat). Avem ceva mult mai bun in pregatire pentru el, dar va dura un pic pina se va materializa. :>

  22. Tomis Says:

    Mihnea, tu esti? http://code.google.com/p/metalscroll/

    Fac astia reclama aici si mi-a sarit in ochi pe pagina de google code. http://altdevblogaday.org/2011/04/19/three-tools-i-love-and-so-should-you/

  23. Mihnea Says:

    Da, eu am scris ala.

  24. Tomis Says:

    Super tare. Nu am decat o versiune de VS2010 professional si nu pot sa vad addin-ul in actiune dar ce apare in screenshot este foarte similar cu ce are o anumita extensie. Vroiam sa te rog sa-mi trimiti un email daca ai timp sa-mi raspunzi la niste intrebari tehnice care imi macina existenta. Ceapa lor de matrici si cuaternioni.

  25. Mihnea Says:

    Pentru 2010 exista o chestie care se cheama Productivity Power Tools care include ceva similar. Eu nu m-am agitat sa-l portez pentru ca editorul din 2010 e cu WPF, un subiect care momentan ma lasa rece.

    Poti sa ma intrebi cu matricile si cuaternionii pe mail la mihnea.balta@gmail.com.

  26. Felics Says:

    http://www.codexpert.ro/forum/viewtopic.php?f=13&t=1677&p=11749#p11749
    Am testat si eu spusele despre Silviu Ardelean. Omul se pare ca nu stie ca nu se pot contrui obiecte derivate daca constructorul clasei de baza e privat fara a folosi friend:)

  27. Mihnea Says:

    Sper ca observi ca si-a editat postul si a spus ca ideea lui initiala era sa foloseasca un friend. Ideea lui initiala care i-a venit dupa ce a citit comment-ul tau.

    Oricum, presupun ca pina la sfirsitul zilei te baneaza si/sau sterg thread-ul.

  28. Felics Says:

    M-au banat si au sters ce am scris eu imediat:) Sunt pe faza oamenii!

  29. jos8cal Says:

    Asa patesc toti care vorbesc de rau Partidul Codexpert Roman.

  30. Liviu Lalescu Says:

    Am incercat acum sa vad si eu threadul pe codeexpert (nu am cont acolo si nici nu intentionez), dar am dat peste mesajul: “Necesită să fiţi înregistrat şi autentificat pentru a putea vizualiza acest forum.”

    :-))

Leave a Reply

Optionally add an image (JPEG only)