Frumuseţea unui cod

De câteva ori am fost întrebat, de prieteni sau de membri ai familiei mele, care este motivul pentru care am ales să încep o carieră ca programator. Răspunsul meu a fost de fiecare dată atât de simplu încât probabil că n-a mulţumit pe nimeni: pentru că altceva nu ştiu să fac.

Povestea ar începe undeva prin ‘93 când am făcut două module de programare în BASIC pe nişte maşini HC ‘85 în clădirea de lângă cinematograful Patria, actualul Cărtureşti. Atunci ai mei mi-au cumpărat un sistem întreg HC ‘91 cu unitate de floppy şi monitor monocrom. Pe care l-am folosit aproape exclusiv pentru jocuri şi a sfârşit prin a fi vândut pe 50 de dolari, bani cu care mi-am luat o geacă Diesel din Prisma.

Tastatură de HC 91

Nu acela a fost genul de expunere care m-a adus spre programare, deoarece ţin minte că nu gândeam foarte mult paşii unui program şi multe instrucţiuni erau empirice (ţin minte că îi explicam tatălui meu că nu va merge pentru că pur şi simplu nu merge — şi el nu era de acord cu argumentele mele “ştiinţifice”).

Primul pas spre IT l-am făcut în vara dinaintea clasei a IX-a. Intrasem la o clasă de matematică-informatică şi auzisem că se face Pascal aşa că mi-am luat o carte scrisă de un autor român (parcă “Învăţaţi limbajul Pascal în 12 lecţii” de Bogdan Pătruţ) şi m-am apucat să citesc despre Pascal şi să înţeleg cum se fac programele, fără să am un calculator la dispoziţie. În timpul liceului am avut un mic avantaj faţă de restul colegilor, deşi am făcut C, avantaj care s-a conservat pentru că parcă înţelegeam mai uşor cum să faci un program. “Furasem” de la profesoara de informatică nişte mici trick-uri, gen cum să folosesc debugger-ul din Borland C++ 3.1, IDE-ul pe care-l foloseam în liceu, despre breakpoint-uri şi watch-uri.

Încă din liceu simţeam, măcar intuitiv, că aveam o abordare diferită când venea vorba de scris codul. De fiecare dată când codul era scris în fugă aveam o senzaţie de disconfort. Iar un cod scris bine mă făcea tot timpul un pic mai fericit.

DHH şi slide-ul cu So be happy

Am lecturat recent eseul lui Yukihiro “Matz” Matsumoto din Beautiful Code intitulat Treating Code As an Essay. Următorul paragraf m-a făcut să-mi aduc aminte de vara lui 2006:

What makes a computer program readable? In other words, what is beautiful code? Although different people have different standards about what a beautiful program might be, judging the attributes of computer code is not simply a matter of aesthetics. Instead, computer programs are judged according to how well they execute their intended tasks. In other words, “beautiful code” is not an abstract virtue that exists independent of its programmers’ efforts. Rather, beautiful code is really meant to help the programmer be happy and productive. This is the metric I use to evaluate the beauty of a program.

Acum aproape doi ani făceam o schimbare majoră în viaţă şi renunţam la Automatică & Calculatoare şi porneam pe un drum nou, unde Ruby era limbajul de programare şi Ruby on Rails era platforma aleasă. Iar la momentul respectiv eram Microsoft Student Partner, aveam contacte foarte bune cu o serie de persoane din cadrul Microsoft România şi experienţă pe .NET Framework.

Citind eseul lui Matz mi-am adus aminte de Adrian Spinei la Wurbe #2 care spunea că “n-o să mă convingeți cu Ruby”. Şi mi-am adus aminte de ce am plecat de la C# şi .NET: pentru că îmi este mult mai uşor să scriu cod frumos în Ruby. Şi pentru că un cod frumos mă face mai fericit şi mai productiv.

Şi acelaşi lucru îl fac în general în viaţă: încerc să aduc cât mai aproape de mine oameni şi lucruri care mă fac fericit şi mai bun. Şi în ultima vreme simt că am reuşit.

9 Responses

  1. ok, si-acum spune-mi daca esti de acord ca frumusetea este strict o chestiune de gust personal. In vreme ce eficienta, costurile, profitabilitatea, nu - sunt niste simple numere.
    Nu stiu daca acum am fost mai clar decat dupa wurbe #2 :)

    Adrian - 22 februarie at 7:44 pm
  2. E strict o chestiune de gust personal, aş spune. Tocmai din acest motiv am mers spre Ruby: gusturile mele sunt destul de compatibile cu ale lui Matz.

    Şi da, eficienţa, costurile, profitabilitatea sunt nişte numere. Partea proastă e că fiecare le poate interpreta cum doreşte, de la un punct încolo :)

    Andrei - 22 februarie at 8:16 pm
  3. Eu am facut pascal dintr-a 5-a, intr-a 8-a spre a9-a am invatat php, iar intr-a 10-a am fost cucerit de ruby. Sa vedem unde ajung dupa facultate(momentan e Iasi VS Bucuresti), eu sper ca tot la ruby si ruby on rails.

    Bogdan Gaza - 22 februarie at 9:06 pm
  4. Interesanta povestea. Si eu am inceput sa invat despre programare din cartea lui Patrut, pe care am gasit-o prin clasa a 8-a si am citit-o cap-coada de cel putin 3 ori. Si eu am ajuns sa consider Ruby cel mai frumos limbaj (candva inainte de Rails). Si eu am trecut prin .NET intr-o viata anterioara (cu tentative de Student Partner si alea alea). :-)
    Acum sunt fericit lucrand cu Python, dar mi-am schimbat oarecum optica cu privire la tehnologii. Nu sunt fericit pentru ca lucrez cu X sau Y ci pentru ca imi place sa fac software in general si pentru ca rezolv niste probleme reale. Nu mai imi doresc sa gasesc limbajul perfect si ma multumesc cu limbajul care imi rezolva cel mai bine problema de fata. De exemplu consider Scheme sau Lisp superioare multor alte limbaje, dar nu le-as folosi in realitate. Sau consider C# un limbaj inferior Python sau Ruby, dar il voi folosi fara probleme acolo unde este cazul.
    Chiar azi ma gandeam si eu la treaba asta cu frumusetea codului si am scris asta: http://humanize.it/2008/02/23/beautiful-software/ asa ca mi se pare ciudat sa dau peste articolul tau. :-)

    Ionut Bizau - 23 februarie at 7:14 pm
  5. Aparent amândoi am fost inspiraţi de domnul Atwood. Cartea era pe lista mea de achiziţii, dar am avut noroc că O’Reilly vinde şi la capitol.

    Având în vedere că avem background similar, nu-i de mirare că amândoi apreciem codul simplu şi pragmatic.

    Andrei - 23 februarie at 8:30 pm
  6. Nu am spus ca Ruby nu ar fi eficient sau simplu. Pragmatic, depinde ce intelegi prin asta. Dac-ar fi sa dau un exemplu concret de pragmatism vs eleganta, spune-ne Andrei in ce limbaj este scris softul acestui blog ?

    Adrian - 24 februarie at 9:14 am
  7. WordPress e scris în PHP, însă am auzit că poţi face chestii interesante chiar şi în Java :P

    Lăsând gluma la o parte, e o diferenţă mare între limbajul folosit şi software-ul clădit cu acel limbaj. Iar WordPress e un proiect vechi de peste 4 ani, ceea ce îi dă un avantaj considerabil faţă de celelalte proiecte. Însă Mephisto, un blog engine pe Ruby on Rails, a ajuns aproape la paritate cu WordPress în aproape un an (10 februarie - 23 noiembrie). Faptul că după 23 noiembrie a cam murit e alta discuţie.

    Andrei - 24 februarie at 11:59 am
  8. @Adrian : Multe proiecte sunt facute pe PHP dar asta nu da neaparat valoare tehnologiei.

    Nu sunt multe Logan-uri pe strazile noastre? Acum n-am nimic cu masina asta, merge. Dar vad o asemanare izbitoare cu PHP-ul.

    Andrei Rinea - 24 februarie at 10:32 pm
  9. Andrei, ce da “valoare” tehnologiei ? Dac-am aduna cifrele de afaceri ale tuturor site-urilor care functioneaza pe platforme PHP si le-am compara cu cele generate de site-uri cu Ruby in spate … ghici ce am obtine ? Nu tortura notiunea de valoare astfel incat sa-ti dea ce ai tu chef.

    Atentie, nu am spus ca PHP e un limbaj mai “bun”, mai “eficient ca timp de dezvoltare” sau mai “elegant” decat Ruby. Doar ca in functie de situatia fiecaruia pot sa apara si alte criterii in algoritmul de alegere. La Andrei este “eleganta”, fine, atata vreme cat pe el il serveste acest criteriu, de ce nu ? Dar nu inseamna ca e musai ca toata lumea sa ajunga la aceeasi concluzie…

    Adrian - 25 februarie at 12:22 pm

Leave a Reply