duminică, 25 noiembrie 2012

Cum se face un programator bun? Interviu cu Andrei Alexandrescu, unul dintre creatorii C++, acum cercetator la Facebook

Cum se face un programator bun? Interviu cu Andrei Alexandrescu, unul dintre creatorii C++, acum cercetator la Facebook



Totul a inceput in copilarie. Andrei Alexandrescu era fascinat de vecinul care repara televizorul familiei. Si-ar fi dorit si el sa faca minuni cu multimetrul si aiba o cariera in domeniul electronicii. Insa cand a fost vorba sa-si aleaga drumul, mama i-a sugerat ca informatica ar fi mai de viitor.
Despre Andrei Alexandrescu se spune, astazi, ca a revolutionat celebrul limbaj de programare C++, prin cartea lui, Modern C++ Design, in care vorbeste despre metaprogramarea cu template-uri. Este si creatorul unui nou limbaj de programare, D, impreuna cu Walter Bright.
Andrei Alexandrescu locuieste, acum, in Boston, de unde lucreaza ca cercetator la Facebook. Merge la serviciu cu tramvaiul in fiecare dimineata si, in bunul obicei american, nu-i place sa i se spuna dl. Alexandrescu.  
Rep.: E un lucru important ca avem un roman care a contribuit atat de mult la C++. Cum anume ai ajuns sa lucrezi la acest limbaj de programare, pentru ca nu e la indemana oricui?
A.A.: Ma ocupam de C++ mai demult. Intai am ajuns in Statele Unite ale Americii la recomandarea unui prieten care lucra in New York, la o firma de software bancar. Mi-a zis: “Uite, te intereseaza sa dai un interviu?”. A fost un interviu prin telefon. Mi-au dat un salariu foarte mic pentru standardele din New York. Lor le-a convenit, si-au asumat riscul sa ma aduca. Eu m-am simtit ca pestele in apa dupa ce am ajuns acolo. Firma aceea m-a incurajat sa ma duc la o conferinta. Mi s-a parut neuzual, pentru ca eram obisnuit cu atmosfera de lucru din Romania, unde sefii nu erau asa darnici fata de angajati. Managerul mi-a zis: “Du-te la conferinta C++ World 1998”. Era in New York, era chiar acolo. Mi-a zis: “Du-te, firma plateste, ca am vazut ca iti place chestia aia!”. M-am dus la conferinta si, mi-aduc aminte, am vazut un speaker care mi-a placut. M-am dus la el si i-am zis: “Vrei sa mancam la pranz impreuna?” A zis “Sigur”. Un pas a condus la altul.

Rep.: Crezi ca poti sa explici pe intelesul tuturor cum e cu metaprogramarea, domeniul in care tu ai contribuit la C++? 
A.A.: Pot sa incerc. Si probabil ca un licean motivat ar fi interesat. Cand zici meta, meta inseamna cu un nivel mai sus. Cand zici metafizica, te referi la ce e in spatele fizicii. Cand zici metaprogramare, inseamna ca scrii un program care, in loc sa faca ceva, scrie un program care sa faca ceva. Chestia asta e foarte ametitoare, dar e foarte interesanta. De multe ori un program foarte plictisitor scris, o gramada de cod plictisitor si uniform, poate sa fie generat de un foarte-foarte mic nucleu de cod - care este meta - si care genereaza programul care face treaba.

Rep.: Dupa ce ai incheiat munca la C++, te-ai apucat de limbajul D. Cum a fost evolutia de la C++ la D si personala, dar si profesionala? 
A.A.: Din punct de vedere personal, C++ ajunsese intr-un fel de strada infundata, din cauza ca se puteau face lucruri destul de interesante, dar era extrem de dificil sa le faci. Puteai sa faci ceva foarte interesant, cu un efort destul de mare, de exemplu design patterns sau serializare. Unii au vrut sa continue pe chestia asta. Este o librarie BOOST in C++ si ei sunt foarte interesati sa mearga mai departe. Am zis uite, e momentul sa spun stop la asta, ar fi mult mai bine sa recunoastem ca C++ si-a atins niste limite fundamentale, practic nu mai e avatajos sa te chinuiesti. Asa am ajuns la limbajul D, unde sa faci ceea ce este extrem-extrem de dificil in C++, in D e trivial, e foarte usor. E un limbaj mult mai simplu si mult mai puternic decat C++.

Rep.: Are sanse limbajul D sa inlocuiasca limbajul C++? 
A.A.: Nimic n-are vreo sansa sa inlocuiasca C++, pentru ca avem o cantitate de cod C++ absolut enorma. D-ul nu este un inlocuitor. D-ul este un limbaj care are sens pentru proiecte noi. C++ va continua sa fie un limbaj important, n-am nicio indoiala. D-ul o sa fie un limbaj care acum incepe sa devina. Multi il privesc ca pe un limbaj care este mai usor de folosit deca Ruby sau Python, dar care sa fie la fel de puternic precum C++. Si aici D are o propunere foarte interesanta.


Rep.: Cum vezi evolutia programarii, catedrala sau bazar? Altfel spus, va fi opera companiilor mari sau va fi open source?
A.A.: Catedrala a esuat. Toata obsesia cu procesele, practic, nu mai exista in State, exista insa in Europa. Europa e obsedata sa defineasca un proces de constructie a software-ului. Suedia este foarte implicata, la fel Norvegia, Danemarca. Cei din Europa de Nord sunt foarte interesati. Vor sa standardizeze procesul prin care se programeaza. Aia este o supercatedrala, este Notre Dame, intr-un fel e Bastilia. De exemplu, la Facebook, daca vin cu o chestie de genul vreau sa aplicam un anumit proces, cred ca imi dau cu ceva in cap. Cred ca bazarul este creuzetul in care se va crea noua metodologie. E clar ca nu de la catedrala vine. De acolo nu se intampla nimic. Se intampla unde se fac lucruri extraordinar de interesante cu echipe mici, dinamice, un proces foarte flexibil si in care talentul si inovatia castiga in favoarea unui proces uman pas cu pas.

Rep.: Tu ai si cateva proiecte open source? 
A.A.: E o biblioteca C++, Loki. A fost primul meu proiect open source. L-am transferat, acum altcineva are grija de el. Pentru mine open source este o a doua natura. Nici nu ma gandesc ca vreau sa fac bani din softurile pe care le scriu. Pe Loki l-am transferat pentru ca sunt mult mai interesat de limbajul D, si limbajul D este acum tot. E open source, e online. Am lucrat foarte mult la bibioteca standard a lui D pe GitHub. Asta este, practic, cel mai mare proiect in care sunt implicat. De asemenea, chiar in cadrul muncii la Facebook, Facebook este foarte interesata sa doneze cod comunitatii open source. Are o istorie extraordinara. Tot ce nu este absolut pentru businessul Facebook, e open source. Au open source inclusiv hardware. De exemplu compilator de PHP, HADOOP Hive. Am mai lucrat la o biblioteca de C++ pentru inalta eficienta, care se numeste Folly. Am lansat-o chiar asta vara.

Rep.: Daca ai vorbi cu un elev de liceu, ce limbaje de programare i-ai recomanda sa invete?
A.A.: Cred ca unui elev de liceu i-as recomanda nu un limbaj anume, ci i-as pune sa invete programare in general, nu ultimul detaliu al unui limbaj. Mie mi-a mers chestia asta, ca am gasit niste detalii in C++ care au fost interesante si care se aplicau interesant. Pe urma mi-am dat seama de riscurile care sunt acolo si am vrut sa invat mai multe limbaje, sa stiu mai multe domenii. Pentru un elev de liceu poate alege orice: Python, Ruby, C++, D, bineinteles. Ideea este sa invete programare, sa invete sa scrie cod. Si asta se poate face in orice limbaj. Nu limbajul e central, ci programarea in sine.

Rep.: Pe cei care studiaza programare ii bantuie Kernighan si Ritchie. Tu ai reusit sa ii cunosti, sa vorbesti cu ei fata in fata?
A.A.: Nu i-am cunoscut, n-am avut ocazia. Dar il cunosc insa foarte bine peBjarne Stroustrup, care a inventat C++, si care e un tip extraordinar si foarte intelept. Vorbeste in citate memorabile. E un tip foate profund.

Rep.: De 3 ani lucrezi la Facebook. Din exterior pare asa, un parc de distractii. Munciti, dar va distrati, mergeti la masa impreuna. 
A.A.: Culmea e ca, intr-o masura, asa si e. Dar intr-o masura. Ceea ce nu e evident, este ca exista o taxa de admitere foarte mare in parcul de distractii: sa ai un talent si o pasiune pentru tehnologie, pentru programare. Se intampla lucruri gen parc de distractii. De multe ori am jucat ping-pong. Da, te duci la masa, se organizeaza excursii la schi si o gramada de activitati. Dar, la urma urmei, se face treaba extraordinar. Nu fiindca se impune sau pentru ca e stres, ci fiindca oamenii au pasiune sa lucreze. Cea mai mare parte din zi se face treaba. Orice lucru care iti poate face treaba mai usoara si mai placuta e acolo.

Rep.: La un moment dat, in 1987, ai luat un premiu la un concurs de chitara, la Sinaia. Sunt unele lucruri care il pot ajuta pe un programator sa fie mai bun, altele decat cele care tin strict de programare? 
A.A.: Foarte multi programatori buni pe care ii cunosc au o chestie laterala: unul canta la acordeon, unul la contrabas, unul picteaza. Eu recomand foarte mult o latura artistica. Si mai ales literatura. Eu am o mare pasiune pentru literatura, si in momentul in care a fost vorba sa scriu o carte de programare, faptul ca aveam o pasiune si o inclinatie pentru domeniul asta, m-a ajutat sa scriu o carte care nu era rigida si neplacuta, ci era mai usor de citit. Iar preocuparea pentru literatura in general este foarte interesanta, fiindca programarea este o combinatie de matematica si rigoare, de creativitate literara si de expresivitate literara. Da, as incuraja pe oricine are un talent artistic latent.

Rep.: Ce carti citesti? Ce tip de literatura? 
A.A.: In zilele astea am citit ceva SF care mi-a placut foarte mult. E un autor,Neal Stephenson, care a scris mai multe carti si care a fost programator. Cumva ma simt aproape de stilul lui. Citesc tot soiul de carti. Acum o sa citesc mai mult, pentru ca ne-am mutat in Boston, unde merg cu tramvaiul la serviciu si mi-am luat Kindle. Apuc sa citesc, practic, o ora pe zi. Am citit deja 3-4 carti pe Kindle. Sunt foarte entuziasmat.

Rep.: Peste ani si ani, crezi ca va deveni programarea un fel de alfabet si toata lumea va trebui sa o cunoasca? 
A.A.: Ce mi-e clar este ca nu stim cum sa luam un licean sau un student sau un copil de gimnaziu. Nu avem o metoda sa zicem uite, iei un copil care vrea sa faca programare si asa il faci programator. Stim cum sa facem un doctor bun, stim ce sa ii dam sa invete unui copil ca sa ajunga doctor, avocat, inginer electronist sau constructor bun. Dar nu avem, in momentul de fata, o tehnica pentru a face un programator bun. Asta cred ca va mai fi valabil in 5 ani sau poate chiar in 10. Din cauza asta nu cred ca o sa se ajunga in curand ca toata lumea sa programeze. Cred ca o sa fie o segregare, in continuare, pentru o buna vreme, a utilizatorilor de putere de calcul, care suntem efectiv toti cetatenii contemporani, si a celor care programeaza. Va ramane o bariera.

Andrei Alexandrescu a fost in Romania la inceputul lunii noiembrie pentru a vorbi, la Conferinta How to Web, despre schimbarile pe care le vom vedea in urmatorii ani in tehnologie: smartphone-urile doar sub forma de casti, disparitia desktopului, cyborgii, evolutia centrelor de date si inteligenta artificiala.

Sursa : http://www.yoda.ro

Niciun comentariu:

Trimiteți un comentariu