Eliberatica 2009

mai 23, 2009 de Laurentiu Dascalu

Incep cu poza de final:
eLiberatica 2009

Pe 22-23 Mai 2009 s-a tinut conferinta eLiberatica. Conferinta a avut tenta enterprise/bussiness si s-au prezentat beneficiile programelor open-source in noul context economic. Eu am ajutat la organizare, prin Ceata, si mi-am petrecut majoritatea timpului in camera de Open Agile – in total erau 3 camere, din care una principala si una de metodologii software.

Din punctul meu de vedere, lucrurile au fost ok; am fost doar la cateva prezentari din camera de baza a conferintei. Au fost persoane tehnice care, pe buna dreptate, erau nemultumite de continutul prezentarilor si vroiau sa vada un cod/ceva tehnic. Sloganul conferintei a fost: “Open Source in an Economic Downturn.” si m-a dus cu gandul la promovare de produse, nu la productie. Cea mai tehnica prezentare non-Agile (din afara camerei de Agile) a fost tinuta de un reprezentant Sun, venit din Grecia. In urma prezentarii m-am ales cu un tricou :) ) – s-au pus intrebari de genul: Sun products are: best, good looking, low power consuption, all of above; dpdv tehnic s-a prezentat posibilitatea de cache-ing intre memorie si hdd prin adaugarea de flash-uri – ideea nu mi s-a parut tocmai geniala, avand in vedere ca bottleneck-ul dintre procesor si memorie s-a redus cu ajutorul cache-urilor L1, L2, L3. Din pacate, doar atat; ma asteptam la mai mult din partea Sun, dar n-a fost sa fie; se simte faptul ca au fost cumparati de Oracle. Aveau stand dedicat care a fost gol pe toata durata conferintei.

Mi-a placut foarte mult camera Open Agile. Pe scurt, s-au prezentat metodologii de dezvoltare software bazate pe Agile Development.

Totusi, au fost cateva mici scapari: s-a ridicat in slavi metodologia si nu s-a spus nimic de calitatea programatorului. Dupa parerea mea, degeaba ai management si metodologii super tari daca nu ai oameni tehnici foarte buni; evident, lucru e valabil si invers: un om tehnic foarte bun fara o infrastructura solida se va irosi. Ideile agile-ului. asa cum am inteles eu, sunt: iteratii scurte care au ca rezultat un produs functional, feedback rapid din parte clientilor/utilizatorilor din care deduci clar ce trebuie schimbat intr-un stagiu incipient.

Cel mai important castig din aceasta conferinta il reprezinta ideile pe care le-am vazut la Open Agile. Este metoda de dezvoltare care se mapeaza cel mai bine peste ce vreau sa fac in viitor: sa lucrez la proiecte noi si challenging; nu vreau sa fac mentenanta si bug fixing – lucruri specifice proiectelor foarte mari.

Eu nu stiam o metodologie de dezvoltare a programelor. La internship-ul de vara trecuta se programa dupa ureche; nu e de mirare ca am vazut la Open Agile manageri de la Freescale. La scoala, ce sa zic…programez astfel incat sa tema sa treaca testele de calitate(daca e cazul)…dureaza prea mult sa-mi fac o arhitectura si/sau sa scriu codul misto; de metodologii nici nu se pune problema – temele nu sunt atat de complicate incat e nevoie de release la 2 saptamani, de fapt e deadline si dezavantajul e ca nu mai poti schimba nimic in codul temei – de fapt poti, dar nu va mai conta la nota pe care o vei primi.

Pe scurt, am stat majoritatea timpului la Open Agile si am invatat despre metodologii de dezvoltare a programelor, in particular agile development, extreme programming, pair programming, test driven development, feature driven development si altele. Lucrurile acestea se preteaza pe proiectele de dimensiune mica/medie cu o echipa omogena si locala; si nu prea se invata la scoala :-) .

Criza financiara. Criza de valori ?

mai 23, 2009 de Laurentiu Dascalu

Salut, nu am mai scris de ceva vreme pe blog si imi doresc sa revin printr-un articol, sper ca interesant, cu o tema actuala. Ca doar na, peste tot se vorbeste de criza economica….

Nu am niste date reale, dar am in vedere niste principii de baza ale economiei; imi expun doar o parere si imi place sa fiu contrazis. In economie o firma urmareste maximizarea profitului, mijloacele trebuie sa fie doar legale dpdv juridic, nu si moral; lipsa unor produse este un lucru bun. Cum adica lipsa unor anumite produse e un lucru bun ? Pai simplu, profitul maxim nu implica cantitate mare de produse vandute si valoarea unui produs este mai mare cu cat este mai rar. Sunt destul de multe cazuri in care oamenii prefera sa arunce graul in mare sau laptele pe camp, doar sa nu scada pretul.

Ok, dar lucrurile astea nu prea au de a face cu criza; cam asa si e. Dar vroiam sa pregatesc urmatoarea afirmatie: daca pe piata sunt X bani si produse de X+Y (asta dupa calculele vanzatorilor) atunci, la echilibru, Y->0 si deci pe piata sunt bunuri de valoarea X. Ce fac firmele sa lase impresia ca produsele lor valoreaza, de fapt, X+Y ? Ai ghicit, ofera mijloace de finantare: credite, imprumuturi in 24h etc. Deci ei pun pe piata inca Y bani pentru ca oamenii sa cumpere produsele la pretul dorit de ei: X+Y. Au banii astia acoperire sau e doar o crestere artificiala ? Hm…Sau n-am inteles eu bine sistemul ? Bun, deci se introduc, oarecum artificial, niste bani in buzunarul unui client; acesti bani se vor consuma, deci va creste cererea. Dupa cum stim, cererea creeaza oferta si deci producatorii vor extinde liniile de productie. Asa si ce-i rau ? S-a ajuns la situatia in care sunt mult prea multe masini, cererea a fost prea mare (datorita creditelor) si industria auto a crescut foarte mult. Intr-un final, dupa ce cantitatea de bani, cu sau fara acoperire reala, a devenit comparabila cu cantitatea de bani reali atunci sistemul a inceput inceput sa se clatine. Rezultatul: industria auto cica se prabuseste. De fapt, se contracta conform cererii. S-a produs prea mult in trecut, acum traim de pe urma profitului de atunci. As compara situatia aceasta cu: muncesc mult azi/maine si poimaine ma relaxez; problema e ca banii nu prea stau la muncitori, ci la patroni, deci afirmatia e valabila pentru upper-management.

Ca sa lamuresc o chestiune: creditul nu este ceva rau, dar creditul de consum ar trebui evitat – exista si exceptii, evident. Mie mi se pare ca lumea nu intelege cum se invarte pamantul si au impresia ca daca iau acum un credit le va fi mai bine; nimic mai fals, creditul este un produs, deci e ceva consumat. Prin consum nu poti s-o duci mai bine, trebuie sa si produci ceva. Problema tarilor de 2 lei, adica alde rRomania, este in industrie; nu au industrie stabila, daca se supara o multinationala si pleaca mai la Est atunci toata aripa respectiva a picat. Si sa nu uitam ce fac multinationalele aici, cumva chestii smechere ? Ha-ha, evident ca nu, doar romanii este multi si prosti. Tot am impresia ca romanii se simt discriminati: eu castig in tara 500 de euro/luna, iar un american 5000; cum se poate una ca asta ? Lasand la o parte eternele argumente de tipul diferenta de preturi, eu cred ca e vorba de productivitate si natura muncii. Vorbind strict de domeniu meu (Computer Science & Engineering), cred ca arhitecturile si chestiile durabile/grele/complicate nu se fac in Romania ci prin State/afara. Si e normal sa platesti un Software Architect din State cu 150.000$/an, iar in Romania un programator cu 7000$/an; arhitectura aia e mai importanta decat munca, deseori oribila :P , a unei trupe de programatori romani. Nu ma refer la software de uz general si dificultate medie; ma refer la chestiile cele mai complicate. Evident ca si in Romania se fac ERP-uri, dar n-am auzit sa se faca IDE-uri din top3 sau framework-uri de nivelul .NET-ului.

Oho, deja m-am plictisit si eu scriind atatea aberatii. Sa fiu mai scurt, problema e ca valorile s-au schimbat si mass media poate oricand impune un nou model de om de succes. Pana acum ceva vreme a fost Becali, om pe care il si respect desi multi zic ca e un prost facut gramada; nu stiu daca e prost sau nu, dar stiu ca a mai greu sa fii Becali decat sa fii ce sunt eu sau tu :) . Maine cine stie….Si tocmai sistemul asta de valori influenteaza piata; adica acum se cere ceva pentru ca e la moda ceva, maine se va cere altceva si tot asa.

Motivele pentru care s-a ajuns la criza sunt: gradul ridicat de volatilitate a valorii banilor, produsul in sine nu conteaza ci doar imaginea lui, supraconsum – toata lumea isi lua masina pe credit – si retelele de distributie. Trebuia sa ma leg si de ele, nu? S-a ajuns intr-o situatie in care costul producerii unei masini era muuuult mai mic decat costul distributiei automobilului. Eu ma gandesc practic, e mai greu sa faci o masina decat s-o plimbi de colo-n colo, pentru ca fabricarea presupune niste cunostinte avansate de inginerie (nu detaliez ca nici eu nu stiu); si totusi plateai cea mai mare parte din pretul unui produs (nu neaparat autovehicul) pe adusul la scara blocului. hm……..

Romania, Romania, Romania

aprilie 19, 2009 de Laurentiu Dascalu

In primul rand, Hristos a Inviat ! In acest post voi vorbi despre prima zi de Pasti si despre romani.

Am fost aseara sa iau lumina din portul Tomis. Ajung pe plaja si ma asez in jurul unui culoar, aflat in fata scenei, pe care preotii, la 00:00, vor merge si vor da lumina credinciosilor. Lumina s-a adus tocmai de la Ierusalim; ma gandeam c-ar fi bine sa renunt la a o mai lua, poate au “manarit-o” fariseii :) . Lumea incepe sa se stranga si, cum era de asteptat, culoarul nu mai este respectat de noii veniti; multi s-au dus cat mai aproape de scena de pe care se tinea slujba. Inainte de sosirea preotilor se facea playback la o pilda (de fapt, nu stiu ce era), sonorizarea era proasta (abia auzeam ceva) si, peste toate astea, romanii venisera parca la un meci de fotbal, fiecare avea ceva de discutat, nimeni nu vroia sa taca. Sincer, chiar m-a deranjat lucrul asta; vroiam sa aud inregistrarea si valurile marii, nu zgomote surde. In fine, am luat lumina si am mai stat ~ 20 de minute dupa 00:00; nu vreau sa ma scuz, dar am stat atat de putin pentru ca : era frig si nu m-a atras prea tare slujba, din cauza sonorizarii, desi nu conteaza ambalajul unui produs, ci doar continutul :| .

La pranz am fost la un gratar langa lacul Siutghiol. Am observat ca foarte putina lume era la iarba verde si ca majoritatea celor iesiti erau pescari (desi momentan e interzis, parca). Zona este la intrare in Mamaia, deci pozitia proasta nu poate fi unul din motive. Atunci ce sa fie ? Am fost si pe plaja, am intrat pana la genunchi in apa; era super, sper sa fac o baie pana ma intorc in Bucuresti :) . Lume putina, contrar declaratiei Elenei Udrea (de foame am mancat titlul doamna ministru). Am mai observat ca strazile erau aproape pustii. Lumea ori n-a iesit din curte/casa/vila/palat ori a iesit la gratar intr-o padure de langa Constanta. Ca sa ajungi intr-un astfel de loc ai nevoie de o masina; am vazut foarte multe masini (si destul de scumpe :D ) pe Soveja (o strada medium-end la nivelul orasului) astfel ca varianta asta s-ar putea sa solutia anchetei mele. Dar ma indoiesc, mai ales ca lumea e destul de speriata de criza economica. Nu cred ca voi reusi sa aflu adevarul si sincer nici nu ma intereseaza atat de tare. Era sa uit ca vorbesc de romani; am vazut ca multi faceau gratarul direct pe pamant :| , halal protectie a mediului.

Tot referitor la pustietatea de pe strazi, am observat ca in Bucuresti lumea iese mai mult din casa, cel putin pe strazile pe care circul des. Romtelecom are o reclama complet idioata : “Realitatea e gri ? Romtelecom Clicknet iti aduce zambetul pe buze”. Deci, zambetul pe buze e adus de internet (Clicknet e un serviciu de internet). Hmm, foarte grav, ei au observat ca oamenii se retrag pe net si traiesc foarte bine in lumea lor, desi in realitate lucrurile sunt pe la polul opus. Scurtez prin a spune ca strazile/parcurile au devenit pustii, ca oamenii nu mai intreaba taximetristii locatia unei adrese ci pe  Google si plimbarea se face prin parcul Cancan. Nu cred ca mergem in directia buna. 

Romanii, desi nu sunt evrei, se victimizeaza si se plang de lipsuri. Mai tot timpul, altcineva e de vina si niciodata nu ne ajung resursele. Dupa parerea mea, existenta resurselor in cantitati mici mi-a prins foarte bine. As fi fost alt om daca aveam totul pe tava.

Pe final a ramas definitia barbatului bun la toate, pe care am auzit-o la ProTV : stie sa gateasca, sa danseze si sa dea cu pumnu’. Foarte tare :) .

Dezamagiri si reusite?

aprilie 15, 2009 de Laurentiu Dascalu

Tot postul este un monolog interior si cuprinde cateva idei puse cap la cap. Meciul e jucat cu cartile pe fata, n-are rost sa ne ascundem in spatele degetului mijlociu.

Foarte multi oameni isi doresc sa fie fericiti. De fapt, toti vor sa fie fericiti, insa modalitatea difera de la o categorie de oameni la alta. Eu sunt fericit ca nu sunt fericit; cea mai mare aberatie pe care, probabil, ai citit-o. Cum sa fii fericit pentru ca nu esti fericit? Esti cumva un sectant sau vreun crestin caruia Biblia/Biserica/Preotul i-a spalat craierul si care pentru a in “gratiile” Celui de Sus considera ca a fi sclav e un lucru normal/bun/necesar ? Din pacate nu sunt sectant si, spre rusinea mea, n-am citit Biblia. Atunci trebuie sa fie altceva …. acel altceva nici eu nu sunt in stare sa-l explic/dezvalui :( .

Ce se intampla, de fapt ? In viata, exista bariere de sincronizare, momente in care trebuie sa tragi linie. Capacitatea trage linie primilor 8 ani de scoala (sau ultimilor 4), bac-ul celor 4 ani de liceu si, fara sa vrei, ajungi sa tragi cea mai groasa linie dupa terminarea facultatii. Pui in balanta ce ai facut bine, ce ai facut rau si ce-o sa faci in continuare. Dar de ce e cea mai groasa ? Dupa ea, majoritatea, intra in the wild, devii responsabil. Si inca o chestie importanta : te casatoresti; asta daca ai cu cine :) . Ma gandesc ca oamenii de acum X ani ( X > 40 de ani ), la varsa mea, aveau o familie intemeiata, deci erau responsabili, puteau lua viata in piept. Eu nu pot, nu sunt responsabil, n-am realizat nimic (fara modestie). Si vine intrebarea magica, tot mai prezenta in ziua de azi : pe cine intereseaza sa realizezi tu ceva ? traieste viata ma baiatule, vremea trece si intr-un final o sa-ti para rau ca nu te-ai bucurat de ea. Intre cuvinele vremea si trece multi batrani, perversi, introduc un cuvant vulgar (hint: incepe cu p :D ). Nu sunt departe de momentul adevarului, de trecerea de la o etapa la o alta. Si, sunt sigur, atunci cand o sa vreau sa ma plimb prin parc o sa-mi iau laptop-ul de maner (ipotetic vorbind, varianta curenta n-are asa ceva), pe cand majoritatea o sa aibe o persoana iubita in locul acestui obiect. O fi ceva rau in asta ? De ce sa nu fac ce simt ? Nu simt afectiune fata de oameni, nu ma atasez de persoane. De ce as incerca sa ma schimb ? Pentru ca majoritatea oamenilor sunt atasati de oameni si ii considera pe restul niste ratati antisociali care merita sa moara in cele mai mari chinuri ? Ah gata am aflat si solutia salvatoare, imprieteneste-te cu cat mai multa lume si prefa-te indragostit de orice tipa pe care o intalnesti si intr-un final o sa intri si tu in lumea buna.

Bun, m-am prins : linia cea mare se trage cand sa-ti dai suflarea. Si-mi dau seama c-am facut umbra degeaba. De fapt si de drept, asta e marea problema : faci umbra degeaba <=> nu ai realizat nimic. Sunt sigur ca majoritatea oamenilor m-ar injura pe masura ce ar citi postul asta si mai stiu ca si ei fac umbra degeaba, desi n-ar recunoaste asta nici sa-i bati.

Nu stiu, chiar ma simt ciudat. Simt ca vine bariera peste mine, insa mai simt ca sunt suficient de puternic sa-i rezist; doar n-oi fi primul din lume si nici ultimul, nu ? Si daca ceva nu-ti place, nu-l iei; a cumpara ceva doar de dragu de a cumpara nu ma defineste.

How long will you mourn me ?

Item-uri din dota. Framework-uri. Comparatie.

aprilie 7, 2009 de Laurentiu Dascalu

Inainte de toate, recunosc ca unele asemanari sunt fortate : berea si laptele au in comun faptul ca-s lichide. ha ha ha, ce comparatie tare ….

In post-ul “Dota.Limbaje de programare.Comparatie” (link http://dlsana.wordpress.com/2009/03/14/dota-limbaje-de-programare-comparatie/ ) am spus ca voi continua sa scriu despre cele doua lumi aparent diferite, dar care au si foarte multe lucruri in comun.

Inainte de a trece la treaba, vreau sa spun ca e posibil sa fi jignit anumite limbaje de programare, insa am fost constrans si de trastaturile eroilor din dota. Sa dau si un exemplu, Razvan a spus ca am subevaluat python-ul zicand ca leaga module si ca ar fi Warlock. Intr-adevar, exista aplicatii misto scrise in python, cum exista si battle Warlock (power threads, stygian si refresher), insa sunt si alti carry mai buni, parerea mea.

Pana sa trec la lucruri “palpabile”, incerc sa discut putin la nivel superficial. Consider ca este mai usor de citit o paralela cu liniute :

- Dota este un invelis al Warcraft 3-ului; programarea este un invelis al hardware-ului. Nu sunt entitati independente de context.

- Jucatorii de dota se numesc “gamers“; utilizatorii limbajelor de programare se numesc “programmers”. Exista o ierarhie a “participantilor”; in dota : noob pana la gosu/pro, iar in programare (cred, nu sunt sigur) : programator junior pana la software architect. Exista jucatori buni de warcraft si de dota, dupa cum exista si programatori buni care stiu si software si hardware ( nici chiar pana la Ebers Moll sau Giacoletto ). Din fericire, cei mai buni sunt cei mai buni doar intr-un domeniu :) .

- Cand X ( X > 1) pro gameri sau X programmeri (asemanator, nu?) vorbesc despre lumea lor nimeni din exterior nu ii intelege. Tot aici intra si diversele glume : a fulgerat afara deci a dat Zeus ultimata; tipul accidentat de masina a primit un SIGKILL si tot n-a murit ?!?!

- Exista “companii” mari care fac lucruri spectaculoase. Google, Microsoft etc, pe de o parte, si Ks.Int, MYM, VP, SAY_PLZ etc, pe de o alta. Desi, din ce-am observat, desi la noi, in anunturile de angajare, se insista pe experienta ( trebuie sa ai 20 de ani de programare in spate sa fi software architect ), in dota lucrurile nu stau deloc asa. Exista clanuri foarte bune cu jucatori nu foarte experimentati, dar cu o imaginatie bogata; nu de putine ori clanuri foarte cunoscute au luat bataie de la adversari necunoscuti – cel mai celebru caz ar fi VP, cea mai buna echipa la momentul respectiv, a luat bataie de la niste amatori si jucatorii vroiau sa se desparta (la moralul lui ARS-ART cred c-am avut si eu cu nein o contributie importanta, cu saptamani in urma, cand l-am ars _mai rau ca la politie_ pe high level room 1). Echivalentul echipei necunoscute in lumea programarii este firma startup; sunt dese situatiile in care afaceri mici se vand pe bani buni gigantilor – jucatorii buni de dota din echipe necunoscute ajung in echipe mari.

- Noobii ii intreaba pe pro ce item-uri sa-si faca pe un erou; programatorul junior il intreaba pe software architect ce framework sa foloseasca pentru a rezolva o anumita problema intr-un limbaj de programare dat. Pornind de la aceasta afirmatie o sa dezvolt, in partea a doua, acest post.

- Preconceptia este la mama ei acasa; daca incerci un item diferit de cele standard pe un erou atunci esti considerat noob, retardat etc; voi ce parere aveti de incercarea utilizarii a unei biblioteci scrisa in Python (sa zicem ca e cod intermediar, nu e compilata in nativ cu pypy) intr-o aplicatie scrisa in Java ? (eu as rade, dar n-as zice ca e o prostie, desi multi zic ca pe Lina n-ai de ce sa-ti faci buriza :) ). Ce-i scris in java tre sa se fie interfatat cu altceva scris in java, ca doar asa e standard.

- Organizarea echipelor este asemanatoare : team leader programmer / captain, developer / carry, tester / support. La nivelul superior se afla un project manager.

- Sunt fenomene de masa; sunt foarte multi programatori si foarte multi jucatori de dota. Din fericire, nu sunt multi foarte buni :) . Pentru a fi bun in dota trebuie sa cunosti : substratul (warcraft 3 pentru coordonare, lupte cu eroi, farm etc), stratul (eroii, in pricipiu cam ce face fiecare erou si la ce e bun) si suprastratul (itemurile, ce face fiecare item, pe ce erou si in ce moment al jocului se mapeaza mai bine etc). Substratul in cazul programatorilor este hardware-ul; e ok sa programezi, cu 0 notiuni de hardware, pe o platforma care vine cu un compilator smecherit, dar ce te faci cand nu stie sa faca nici macar loop fusion ? Stratul reprezinta modelarea, dupa parerea mea in pseudocod, a structurii programelor; trebuie sa stii cu ce limbaj cam ce poti face (sa nu crezi ca poti face site-uri in C si kernel-uri in PHP). Suprastratul este reprezentat de framework-urile care fac utilizabile anumite limbaje de programare; ce e Java fara tonele de librarii din spate ? ce poate face N’aix fara item-uri ?

- Alte lucruri pe care le aveam in minte dar le-am uitat.

Scriu despre acest subiect pentru ca-mi plac cele doua lumi; sunt competitive. Te lupti cu adversarii, evoluezi. Chiar daca nu esti cel mai bun sau in varful piramidei sentimentul de apartenenta e placut. Imi place sa cred ca atat in dota cat si in programare nu exista o singura reteta de succes si ca totul e intr-o continua schimbare, iar la fiecare moment trebuie sa alegi combinatiile cu trades-off-ul cel mai bun pentru tine ( intr-o vreme se juca Sniper cu Divine Rapier, cum se programa in C++ cu MFC; lucrurile s-au mai schimbat intre timp ).

Lista framework-urilor cu care am lucrat :

1. STL este in standardul de C++, cum si Dagger-ul este un item standard de Slayer. Ambele iti permit saritura peste anumite chestii : STL peste structuri de date si algoritmi uzuali, Daggerul peste spatiu. Se poate juca Slayer si fara Dagger cum se poate programa in C++ si fara STL.

2. Qt este o biblioteca moderna, foarte misto, de GUI Toolkit scrisa in C++. Este o alternativa la GTK si MFC, despre care nu stiu mare lucru asa ca nu-mi dau cu parerea. Scopul este sa impresioneze utilizatorul prin widget-uri misto. Item-ul echivalent este Divine Rapier, care iti da mult damage in plus; scopul fiind acela de a macelari adversarii si a-i impresiona pe cei ce te urmaresc :) .

3. Eclipse API este un framework, scris in Java, pus la dispozitie de IDE-ul Eclipse. Radiaza de frumusete, fiind scris foarte misto si avand un GUI foarte dragut, este apreciat atat de programatori cat si de utilizatori. Item-ul echivalent este Radiance, acesta facand damage adversarilor si crescand sansele eroului sa faca bahaos ( ce vor amatorii sa vada :) ). Problema lor e cantitatea mare de resurse consumata : Eclipse mananca memorie cu sutele de mega, iar Radiance se face dintr-un item foarte scump, care iti ofera doar damage.

4. pthread este standardul POSIX pentru thread-uri si implementarea este la nivelul kernelului in C. Kernelul unei echipe de dota este erou de baza din early game, Lina in cazul nostru. Item-ul care ofera Linei posibilitatea procesarii paralele este Necronomicon – se spawneaza doi creepy, cu vraji, destul de puternici pe care trebuie sa-i controlezi. Pentru sisteme singlecore paralelismul e pseudoparalelism, cum si pentru jucatorii slabi de dota utilizarea necronomiconului este greoaie – abia ma descurc cu un erou, vrei sa mai controlez si doi creepy ?!?! pana dau click pe ei imi scapa adversarul; insa in meciurile competitive necronomiconurile pot face diferenta, damage-ul facut fiind comparabil cu cel al unui erou de suport.

5. openMP simplifica lucrul cu mai multe fire de executie si are extensii pentru C, C++, Fortran si altele. Manta Style permite crearea a doua iluzii ( a trecut ceva vreme de cand nu m-am mai jucat, sper sa nu se fi schimbat ) si se foloseste pe multi eroi. Manta e mai usor de folosit decat necronomicon pentru ca iluziile nu au vraji.

6. openMPI este folosit pentru programarea distribuita, insa mi se pare ca se mapeaza bine pe masini/probleme de timpul SIMD (Single Instruction Multiple Data). Mekasm este un item SCMU (Single Cast Multiple Units) pentru ca face heal pe arie si se casteaza atunci cand sunt multi eroi/creepy in jurul tau.

7. openGL este un framework este satisfacerea poftelor umane in materie de grafica. Majoritatea oamenilor care se uita la un replay de la dota vor sa faca “senzatie”, ceva spectaculos. Buriza ofera eroilor aceasta sansa, crescand damage-ul considerabil si putand duce usor la “Triple KILL!!!” si la “Holy SHIT !!! Beyond GODLIKE”. Din ce stiu, openGL poate fi interfatat cu aplicatii scrise in diverse limbaje de programare, cum si Buriza se poate folosi pe mai multi eroi carry.

8. BSD sockets permite trimiterea/primirea mesajelor pe retea. Boots Of Travel permite unui erou teleportarea in diverse locuri pe harta, cu conditia sa fie un creepy aliat in locul respectiv. Aceeasi conditie o pune si BSD sockets : existenta unui receptor care sa faca recv() la send()-ul unui proces.

9. .NET 3.0 e sub protectia celor de la Microsoft cum si un erou cu Linken’s Sphere e protezat de vrajile adversarilor. Framework-ul poate fi folosit atat in aplicatii C++ cand si C#. Asemanator, Puck(C#) si Lina(C++) sunt eroi pe care Linken’s Sphere e ceva obisnuit, mai mult pe Puck insa.

10. boost este cea mai mare biblioteca de C++ si va intra in standardul C++0x (de fapt, C++1x :P ). Soul booster este un item ce va intra in lista de item-uri standard pe Lina ( nu garantez :D ). Au in comun dimensiunea mare (un proiect ce foloseste boost sare de 10 Mega, un erou ce are soul booster sare de 1500 viata) si flexibilitatea ridicata : boost are multe extensii (MPL – meta programming language rullz,iar Boost::asio ar trebui studiat la facultate, ca model de how to wrap I/O functions), iar din soul booster se poate face Aghanim’s Scepter sau Blood Stone.

11. JFC (Java Foundation Class Libraries) este frameworkul de baza al lui Java. Diffusal blade este item-ul de baza pe Mirana, in meciuri competitive. Ambele incetinesc entitati : JFC – program, Diffusal blade – adversar. Pana la urma, toate-s bune si frumoase, nu ? Reusesc sa-mi termin adversarul cat si proiectul Java.

12. Swing este GUI toolkit destul de slabut, dupa parerea mea. Mjolnir este un item inefectiv pe Mirana. Le leaga gradul mare de utilizare.

13. Nu am folosit alt framework ori nu-mi aduc aminte de el :) .

Comercial?

martie 27, 2009 de Laurentiu Dascalu

Nu am blogul de mult timp si nici n-am scris prea mult pe el, insa a trecut suficient timp sa trag o concluzie : oamenii nu-mi citesc blogul si nu se inghesuie la scrierea de comentarii. De ce ? Cel mai probabil, pentru ca scriu despre lucruri neinteresante, posibil stupide. Da, stiu, si eu ma gandeam ca unele chestii pe care le scriu sunt prostii. Totusi, cel mai mult ma mira faptul ca nu am primit multe comentarii negative … de fapt, am primit unul singur neargumentat – mi s-a adresat un adjectiv fara a mi se explica de ce e asa si nu altfel.

De ce nu am comentarii ? Incerc sa-mi raspund singur la intrebare, dar nu prea reusesc asa ca dau cu presupusul : post-urile sunt prea lungi, sentimentul de plictiseala apare dupa primele 2-3 randuri citite si se renunta la citirea integrala a post-ului; sau pur si simplu nu e nimic de comentat, lucrurile sunt atat de indepartate de realitate incat nu se merita sa ma obosesc sa-i zic gigelului c-a luat-o pe aratura; sau nu stiu….

O posibila solutie la problema de fata ar fi abordarea subiectelor comerciale; de genul : ce-am facut ieri, prin ce club am fost ( chiar daca n-am fost :) ) ), cum m-am mai distrat etc. Dar eu nu pot scrie despre asa ceva, nu ma reprezinta, nu as vorbi despre mine; nu sunt prietenos, nu-mi place sa discut cu prea multa lume etc. (citat favorit : “Fuck the friendship I ride alone / Destination Death Row, finally found a home”). Pai si atunci renunta naiba la a mai scrie pe blog, am citit prea multe randuri despre frustrarea ta…Well, nu este o frustrare, e doar o modalitate de a pune cap la cap mai multe idei.

Ok, deci trecerea pe comercial cade; ce-i de facut ? nimic; nu toti trebuie sa aibe bloguri cu 10000 de vizitatori pe zi si nu toti au succes in viata. Trebuie sa ne vedem de drum in continuare.

Acum, sa va zic de ce am scris acest post. Puya a scos o piesa ( manea ?xD ) numita Undeva in Balcani ( http://www.youtube.com/watch?v=qdnBqYSmpdw ); melodia e super comerciala si spune niste lucruri relativ socante. Stiu ca veti zice : Puya e un idiot, te iei dupa el ? insa e destul de popular si versurile vor ajunge la urechea multor romani.

Nu mi-a placut sa fac analiza literara in liceu, la Limba si Literatura Romana ( pe care am gasit-o si inutil predata pentru mine ), insa incep acum analiza piesei : “Iubim din plin / Spaga, coruptia / Multe nu stim, / Nu glumim/ E o traditie p-aici de cand noi suntem mici / Iubim s-avem dolarii, uram s-avem servici”. Lucrurile sunt evidente : traiul parazitar e ceva obisnuit, bine privit; mai putin evident e faptul ca cineva trebuie sa suplineasca si traiul parazitar al smecherilor, iar acei cineva sunt numiti, in mod generic, sclavi. Urmeaza o intrebare retorica : “Ce imi pasa mie de-ncalzirea globala / Vrem dolar, dolar, balenele sa moara de viata usoara”, care rezulta din comportamentul indiferent al generatiei actuale fata de ce lasam urmasilor nostri (nu neaparat biologici – copii) si de dorinta a trai clipa (traieste-ti viata ce peleme, indiferent de implicatii). Evident, sexualitatea nu putea fi omisa :  “Fetele ajung tot mai repede nud / Sexu-i peste tot, in scari de bloc / In sali de clasa sau la Private Spice non-stop / E cool de tot, minorele`s bune de tot / La majorat vor gang-bang, nu tort”. Versurile : “Nu ne pasa de Fasia Gaza sau Irak / Adu’ lautarii ca am un teanc de aruncat / Ca lumea vrea sa-si auda numele-n microfon / Si banii curg de zici ca-i arunca de la balcon / Orice amarat are macar un telefon / Macar o haina de firma, macar sa fie domn” sunt destul de “interesante”, mai ales ca isi exprima interesul fata de zonele fierbinti ale lumii si metoda de aratare a superioritatii in fata “dusmanilor” – fac ploi de bani, am telefon Nokia 8800 Sirocco Gold sau orice Vertu si o haina de firma, doar haina-l face pe om, nu? Ok, ok, cam lunga analiza pentru concluzia simpla pe care trebuie s-o tragem : melodia e super comerciala, iar versurile si clipul exploateaza subiectele in voga : sexul si demonstrarea superioritatii in fata dusmanilor prin diverse metode : furturi, ploi de bani etc. Sincer, La Familia are cateva melodii care-mi plac foarte mult – Probleme de familie, Uneori viata e o tarfa, Zile insorite, Aici e Bucuresti etc. Dar parca in alea era vorba de/si de altceva decat de subiectele amintite mai sus… Asta-i povestea, daca vrei sa ai succes acum nu trebuie sa vorbesti despre diverse probleme ale societatii, ci despre ce vrea populatia sa auda : beat-uri de manele si versuri de rap.

O alta poveste interesanta legata de turma, care a devenit un etalon al binelui. Daca nu respecti spusele majoritatii atunci faci rau. Stiu, nu cred ca fac bine ca scriu acest post, dar totusi o fac … de ce ?

Bun, si acum am inteles ceva : daca vrei sa te citeasca lumea renunta la a mai scrie despre lucruri stupide : comparatii intre dota si limbaje de programare sau controlul nasterii si al mortii. Lumea nu vrea asta sa citeasca, vrea sa citeasca povesti de agatat pe internet sau live, vrea sa vada poze (chiar care-i hi5-ul tau ? aoleo, nu ai :| , ce loser esti), vrea sa vada cum te-ai mai distrat, eventual sa se inspire din metodele folosite. Deci vrea ceva simplu de citit, nu un post de 1000 de cuvinte ( n-am numarat, dar nu cred ca-s departe de acest numar ) pe care daca-l citesti nu ramai cu nimic, poate doar 1-2 idei ale unui gigel. Dar un blog gen “Cancan” nu ma reprezinta…si atunci ce sa fac ? Renunt la a mai scrie post-uri inutile de genul acestuia ……

Facultatea de facut bani. Societatea actuala.

martie 24, 2009 de Laurentiu Dascalu

La seminarul de Marketing (nu-i stiu numele complet si nici nu stiu cum de am ajuns la el) proful a pus o intrebare : de ce nu exista o facultate care sa te invete cum sa faci bani ? Sper sa nu sara Gigi cu gura si ne spuna ca smecherii adevarati n-au de ce sa se duca scoala sa devina bogati si ca pentru a avea bani multi si haine scumpe ai nevoie de talent innascut. La intrebare am raspuns eu cu o intrebare, oarecum retorica : ce sunt banii ?

Chiar, ce sunt banii ? Eu nu stiu ce inseamna banii pentru ca nu-i am; oare as vrea sa-i am ? O definitie luata din dictionar spune ca banii sunt un mijloc de schimb. Bun, un programator o sa zica ca domne e un pachet care circula intr-o retea, azi la mine, maine la altu si tot asa. Cam asa si este, doar ca exista institutii care pot fabrica aceste pachete. Un om obisnuit poate face doar receive_cash(); apoi send_cash(); pe cand o institutie poate zice direct send_cash(); Pai si atunci de ce m-as increde intr-o astfel de institutie, care daca n-are bani fabrica unii fara a-i garanta cu ceva (s-a intamplat chiar in Romania atunci cand Iliescu n-avea bani sa-i plateasca pe mineri) ? Si daca nu te increzi ce faci ? Pornesti in paralel cu moneda ta de schimb ? Cine ti-o va accepta ? E mult de vorbit aici, si scopul postului nu e sa-mi exprim parerea vis-a-vis de sistemul economic actual si, mai important, despre cine-l conduce.

Bun, tot n-am inteles, de ce nu exista o Facultate de facut Bani ? Chiar ar fi foarte tare sa facem 1 milion de dolari ca proiect la o materie. Pentru ca banii nu exista “fizic”, trebuie sa aiba un suport real in produse, din cauza asta la scoala esti invatat sa faci ceva palpabil; acel bun palbabil ofera suport banilor si nu invers ( desi mai nou cica ar fi invers ).

Societatea actuala este bazata pe bani, de ce oare ? Dupa parerea mea, motivul este simplu : suntem prea/foarte multi saraci. Daca ai bani suficienti cat sa traiesti decent atunci lucrurile s-ar mai schimba. Cumva are grija cineva sa n-ai tu suficient de multi bani ? :) Evident….Societatea se bazeaza pe bani, dar parca banii nu exista “fizic”, nu ? Si-uite asa am ajuns la un alt miraj care pe multi ii pacaleste, inclusiv pe mine :) . Fiind stransi in bucla asta (da, e un while(1); si break se poate face doar daca ne schimbam atitudinea – lucru putin probabil) suntem usor de pacalit de cei ce conduc sistemul financiar si ajungem unde suntem acum, niste depravati. Lupta pentru supravietuire e mai grea decat era in trecut, desi tehnologiile au avansat, cumva diferenta de calitate a vietii se duce pe undeva prin ma$onerie ?

Si ca tot vorbeam de societatea actuala, arata foarte rau in principal din lipsa banilor. Banii au devenit mai importanti decat stiinta sau arta; modelele de succes din ziua de azi s-au cladit pe baza lor. Vinderea unui produs e considerata mai dificila decat producerea lui, pentru ca productia se face cam dupa ureche si neprofesionist ( lasa ba ca merge-asa, pun aia de la marketing o gagica goala in reclama si-o sa vezi ca toti or sa ne cumpere produsele ). Consider ca o situatie materiala generala mai buna ar fi evitat acest moment in care ne aflam si in care succesul este dat de cati bani ai. Un exemplu care dovedeste volatilitatea crescuta a banilor este chiar averea lui Gigi, care de la 3 miliarde a scazut la 0.5 miliarde ( tot e o suma uriasa, insa sa-ti scada averea de cateva ori, fara sa fi miscat un deget, eu zic ca inseamna multe).

S-ar putea sa fie o idiotenie, insa eu consider ca exista asemanari intre evolutia bancilor si evolutia oamenilor; nu ma refer la evolutia omului in sensul material, ci mai degraba in sens spiritual. Profitul bancii – fapta buna a omului, golurile (lichiditatea) bancii – pacatele omului si recesiunea – spovedania reprezinta bazele argumentatiei mele. In general, omul pacatuieste iar banca aduna goluri (imprumuta excesiv populatia si scad lichiditatile), insa pana cand ? Pana la spovedanie sau la recesiune atunci cand lucrurile se schimba, oamenii devin mai responsabili, iti dau seama de greselile pe care le-au facut si promit ca nu le vor mai repeta. Bancile, in aceeasi idee, devin mai responsabile, isi dau seama ca au fost lacome, incearca (cel putin la nivel superficial) sa pasuiasca debitorii si vor incerca sa evite greselile din trecut. Urmatoarea etapa de dupa recesiune este ascensiunea (nu sunt specialist, dar banuiesc ca asa stau lucrurile) atunci cand bancile incep sa aiba profit, iar oamenii incearca sa faca diverse fapte bune. Dar stim si noi ca lucrurile acestea se vor sfarsi in curand, atunci cand vom reveni la actiunile prezentate cateva randuri mai sus.

Mai pe scurt, bancile aduna pacate peste pacate pana cand baietii smecheri ai lumii considera ca e timpul spovedaniei. Probabil te-ai intrebat, gigi asta care scrie pe acest blog, crede cumva in teoria conspiratiei ? Iti raspund fara a-mi argumenta parerea, da.

In incheiere sunt dezgustat de ce se intampla pe la noi ( acordul cu FMI e japca pe fata ) si ca banii sunt un mijloc foarte bun de manipulare a oamenilor – sunt multi care se schimba la fata cand vad o suma mare de bani, desi ea s-ar putea sa nu aiba acoperire in ceva.

Postul nu are un scop in sine si se incheie cu un citat superb : “The secret to success is to own nothing, but control everything” (Nelson Rockefeller, unul din familia papusarilor)

Succes au cei care au sau n-au bani dar controleaza tot (relativ vorbind). Cum se poate sa n-ai bani si sa controlezi tot ? Uitati-va la Basescu …….

Dota. Limbaje de programare. Comparatie.

martie 14, 2009 de Laurentiu Dascalu

Cand sunt plictisit ma joc dota ( http://www.dota-allstars.com/ ). N-are rost sa explic jocul in sine, doar mentionez faptul ca el implica 10 eroi (5 v 5), dintr-un pool de vreo 100 (numarul exact nu-l stiu); fiecare erou avand diverse skill-uri/vraji. Numarul limbajelor de programare este chiar mai mare de 100, din care stiu cateva, cele mai relevante pentru activitatea de pana acum. Am descoperit o asemanare intre anumiti eroii din dota si unele limbaje de programare. Despre asta e vorba in acest post.

Balanar (Night Stalker) este un erou foarte bun noaptea, foarte prost ziua si nefolosit in meciuri competitive. In aceeasi situatie se afla si Assembler-ul (fara a pierde din generalitate, ma refer doar la X86 sau AMD64) : bun in cazul in care compilatorul nu stie anumite optimizari si degeaba in rest. Povestile de genul : scriu in assembler ca este mai rapid decat in C, C++ sau mai stiu eu ce; sunt cam expirate.

Slayer (Lina Inverse) se foloseste in toate concursurile; in majoritatea proiectelor se foloseste si C sau C++. Slayer casteaza foarte repede vrajile ( sunt instante, n-au casting time ); C-ul de asemenea este foarte rapid pentru uz general. Pentru calcule matematice se foloseste Fortran, iar ca si counter la farmers se foloseste un alt erou.

Priestess of the Moon ( Mirana Nightshade ) se foloseste la greu in clan war-uri; tot in aceeasi masura se foloseste si Java. Asemanarea este data de simplitatea uneltei/eroului; Java este usor de invatat/utilizat, Mirana trebuie sa-si farmeze cateva item-uri si dup-aia castiga meciu cu auto-attack. Problema comuna este interesul manifestat de habarnisti fata de unealta/erou; nu sunt rare situatiile in care Mirana feedeaza echipa adversa si codul scris in Java arata execrabil.

Geomancer ( Meepo ) nu prea se foloseste in meciuri tari pentru ca este greu de jucat. Un limbaj de programare considerat exotic este Haskell, care-ti permite scrierea unui cod scalabil ( usor de extins ). Problema comuna este curba mica de invatare; cu Meepo trebuie sa stii sa te feresti de adversari (la inceput ai viata mica, Lina te omoara instant ) si sa farmezi; Haskell cere o baza solida (termenul e relativ) de teorie in stiinta calculatoarelor, sunt rare cazurile in care un om a inceput sa programeze direct in Haskell.

Warlock este un erou de suport, ajuta ceilalti eroi sa creasca; Python este un limbaj de scripting, folosit la construirea legaturilor intre diverse module/programe scrise in alte limbaje. Warlock + Mirana = imba, Python + C++ = program real. Problema ambelor entitati este viteza; Warlock este foarte lent si nu baga mult damage adversarilor ( daca se joaca suport ); Python fiind interpretat se executa mai lent decat alte limbaje de programare compilate.

Tinker (Boush) este un ganker excelent, te omoara foarte usor si repede. La fel de usor te omoara si Lisp || Scheme : (lambda (*<8-]= *<8-[= ) (or *<8-]= *<8-[= )).

Faerie Dragon Puck initiaza destul de bine un gank/atac; C# initiaza si el bine un proiect, are destul de mult syntactic sugar incat sa termini treaba repede. Ambii se bucura de suport din partea utilizatorilor; majoritatea jucatorilor de dota considera Puck imba, iar majoritatea programatorilor sunt incantati de clasele din .NET framework. Despre viteza, lucrurile sunt discutabile; Puck cu build complet este foarte periculos, insa meciul se termina dupa ce-si face primul item; C# poate rula unmanaged (in cod nativ), insa de multe ori n-ai de ce sa ajungi la asa ceva.

Cam atat despre acest subiect.

Thread-uri. Contra si contra

martie 7, 2009 de Laurentiu Dascalu

In primul rand, aceasta este o frustrare (a se citi pamflet) si trebuie tratat ca atare; contine informatii tehnice irelevante. De ce n-am scris Pro si Contra ? Nici eu nu stiu, sincer am impresia ca thread-urile sunt overrated in ziua de azi si prin acest post incerc sa explic si de ce. Dar, de ce ai scrie asa ceva ? In primul rand, pentru ca majoritatea vad doar avantaje in folosirea thread-urilor, singurul pret platit e legat de gandirea mecanismului ce ofera consistenta datelor per proces. Ok, deci thread-urile sunt foarte ok cand lucram cu un API strict blocant (a se intelege ca nu exista o varianta neblocanta) si cand numarul thread-urilor e atat de mare incat mai bine lasam scheduler-ul din kernelul sistemului de operare sa faca scheduling-ul thread-urilor. Insa, majoritatea lucrurilor cu care am lucrat nu erau atat de complicate incat nu puteam sa-mi fac eu singur scheduling-ul, iar API-ul folosit era neblocant.

Varianta cu un singur fir de executie, API neblocant si scheduling facut manual _poate_ fi mult mai rapida decat varianta cu mai multe thread-uri sincronizate; lucrul asta e valabil pe tehnologia actuala (din ce stiu compilatoarele au probleme in paralelizarea executiei unor instructiuni independente). Motivele sunt diverse : scheduler-ul din kernel nu e specializat, e complate fair ( poate eu nu vreau asta ), schimbarea contextului dureaza destul de mult etc.

Foarte probabil lucrurile se vor schimba si thread-urile se vor perfectiona, insa pentru  moment eu am impresia ca se insista prea mult pe partea lor pozitiva, iar despre partea negativa nu se vorbeste nimic. Evident, in aplicatiile uzuale, diferenta de viteza poate fi insignifianta (nu conteaza daca intru pe messenger in 2 secunde sau in 3), insa exista si aplicatii in care viteza face diferenta :) .

Acestea fiind zise, nu abuzati de thread-uri si nu le considerati fire de executie cu covrigi in coada :) .

Programator Java

februarie 26, 2009 de Laurentiu Dascalu

Tot vad pe diverse site-uri de recrutare ( nu dau nume pentru a nu face reclama ) sintagma programator X, unde X e un limbaj de programare : C++, C, Java, C# , Haskell (glumesc).

Intrebarea mea e : daca esti programator, chiar conteaza limbajul atat de mult ?

Well, dupa parerea mea, da, dar foarte putin. De ce conteaza ? Pentru ca managerii se gandesc doar pe termen scurt, si vor sa fii productiv pentru ei cat mai repede. A se intelege prin productiv foarte productiv :) . De ce foarte putin ? In primul rand, pentru ca limbajul de programare este doar o unealta; eu nu merg la sapat cu un laptopul ci cu o cazma. (ce-i drept, C++ e un fel de cheie franceza multifunctionala care stie de toate).

Acum, care este problema ta, de fapt ? Problema mea este ca, la noi, am impresia ca se cauta programatori care stiu o singura chestie (bine/foarte bine) si care, la schimbarea tehnologiei din X in Y, vor fi inlocuiti de programatori Y.

Spre exemplu, vara trecuta am lucrat cu Java si tehnologii derivate ( Eclipse API, JUnit etc. ) si, la un moment dat, aveam de incarcat niste fisiere de configurare XML. Din cauza ca unele lucruri isi schimbau numele, trebuia sa iau toate XML-urile de mana si sa le ajustez corespunzator. La 2-3-5 XML-uri treaba era ok, dar la 100 ce ma faceam ? Astfel ca mi-am amintit de un program pe care il facusem in Scheme care genera cod X(HT)ML din expresii Scheme : din (html (head (x1.y1) (x2.y2) )) genera <html> <head x1 = y1 x2 = y2> </head> </html>. Scheme fiind un limbaj de programare destul de puternic, am propus sa generam fisierele de configurare din el, iar cand apare o modificare schimbam define-ul cu pricina. Evident, raspunsul a fost evaziv, nici da nici nu, dar nu s-a pus in aplicare :) ; s-a ales varianta modificarii de mana a tuturor fisierelor…..

Un alt lucru foarte important  este faptul ca un program scris prost nu va cunoaste succes pe piata. Din ce am vazut eu, pe la noi se scrie cod cu picioarele si lucrul asta se vede in succesul pe care-l avem : facem foarte mult outsourcing; lucrurile smechere nu se fac in Romania. De ce oare ? Nu cumva din cauza ca in afara se cauta programatori si la noi programatori X (care e bine sa nu cunoasca Y sau Z pentru a nu avea pretentii salariale prea mari).

Ma mai uit pe anunturi de angajare, de la noi si din afara, si observ cateva diferente importante : la noi nu se pune accent pe studii, iar la ei da.

La noi, in anunt scrie : eu te angajez pentru ce stii sa faci, nu pentru ce diploma ai. Stiu ca invatamantul nu e tocmai perfect, dar mai stiu ca majoritatea oamenilor cu studiile facute ca lumea stapanesc foarte bine multe concepte. Mi se pare foarte ok sa angajezi o persoana pentru ceea ce stie sa faca, dar nu mi se pare de ignorat si gandirea (mind set, pe care, sincer, in facultate ti-o formezi). Sunt si exceptii, stiu ca exista programatori care in Lisp au scris compilator de Haskell intr-un weekend si care nu au facultate. Dar mai stiu ca exista foarte multi programatori doar cu liceul terminat si care scriu un cod mizer, care lucreaza doar procedural si care considera OOP-ul ceva SF. Am dubii ca poti scrie un IDE doar stiind C++( a se intelege C cu clase si maxim functii virtuale, fara RTTI sau MPL – meta programming language ).

In afara, te intreaba cu ce nota ai terminat facultatea. Explicatia cea mai buna am gasit-o la Joel on Software : “Because the GPA, more than any other one number, reflects the sum of what dozens of professors over a long period of time in many different situations think about your work”. Daca tu stapanesti foarte bine conceptele, atunci adaptarea la o noua situatie e destul de simpla. Spre exemplu, eu am facut diverse lucruri in limbaje total necunoscute la vremea respectiva (Lisp si C#); nu mi-a luat mai mult de 1 ora sa scriu confortabil in noul limbaj si stiam exact ce sa caut (prin analogie cu Scheme, respectiv Java/C++).

Am scris mai sus ca un program scris prost nu va avea succes pe piata. Se stie ca 20% din produse au 80% din cota de piata. Sa iau un exemplu : Eclipse. Am lucrat cu Eclipse API si e chiar foarte misto scris, daca ar fi fost scris de persoane care stiu doar Java atunci sigur n-ar fi cunoscut imensul succes de acum. De ce ? Pentru ca scrierea unei modul/arhitecturi cere mai mult decat Java, cere OOP, cere Design Patterns si alte chestii care nu se pot aplica doar intr-un anumit limbaj. Poti scrie OOP si in C daca te chinui (hint: unele compilatoare genereaza din C++ cod C pe care-l compileaza), poti implementa un singleton si in Assembler ( cred :) , n-am incercat ) si astfel ajugem la ideea cum ca doar gandirea conteaza.

Ca o concluzie, am impresia ca la noi se vrea totul cat mai ieftin si calitatea nu conteaza. Problema pe termen lunga e ca facem chinezisme, si nu toti avem o parere buna despre adidasii din China. Totul pleaca de la angajatori, care considera ca e mai important sa stii C++ decat sa stii sa programezi, si de la specificul zonei : outsourcing.

Am scris Java in titlu pentru ca am observat ca este la moda. Dupa parerea mea, Java e un limbaj foarte ok, dar faptul ca este destul de simplu a dus la atragerea si multor pseudoprogramatori in domeniu. Astfel ca, sunt destul de multi programatori care scriu in java cod urat (redundant, dupa ureche etc), principalul motiv fiind ca, in java, este usor de programat. Dupa cum spunea, vara trecuta am lucrat, impreuna cu alte persoane, in Java. Problema era ca oamenii (absolventi de electronica, inginerie electrica etc) scriau un cod foarte prost, nici ei nu stiau de ce merge; sincer, n-as vrea sa fac asta toata viata, si din cauza asta nu mai lucrez acolo. Daca java ar fi fost mai complicat, atunci sigur n-ar mai fi fost angajat pe post de programator un absolvent de Litere sau Conservator (exagerez).

Ca si o concluzie, cred ca cel mai important lucru al unui programator (aici intra si Sotfware Architect, Engineer etc. ) este gandirea si nu numarul de tehnologii stapanite. Din pacate, din ce-am observat, la noi se cauta oameni care stiu o tehnologie si nu au, neaparat, o gandire formata : se vede si din testele de angajare – la un interviu am fost chiar compilator de C. Din fericire, in afara se cauta oameni care gandesc intr-un anume mod si care se pot adapta usor noilor tehnologii. Si mi se pare normal, avand in vedere ca life cycle-ul unei tehnologii este de cativa ani (nu mai mult de 5-10).

Exista si la noi firme care te angajeaza pentru mindset si nu pentru MFC, C++, QT, GTK+, .NET ? Daca da, astept raspunsul vostru :) .

Voi ce parere aveti ?