Programare

Pentru a nu ne pierde în terminologie, prin programare înțelegem întregul proces de dezvoltare a unui program de calculator. Identificarea problemei, alegerea limbajului de programare și a tehnologiilor folosite, alegerea uneltelor de dezvoltare, scrierea propriu zisă a programelor, testarea, lansarea în producție, repararea bug-urilor și întreținerea generală post lansare sunt toate elemente importante pe care orice programator bun trebuie să le stăpânească sau de care cel puțin trebuie să fie conștient.

În cazul echipelor/proiectelor mari fiecare element poate fi tratat de către specialiști sau echipe de specialiști pe fiecare domeniu. Chiar și în aceste cazuri este de mare ajutor înțelegerea problemelor în ansamblu iar pentru responsabilii proiectului este absolut necesară.

În continuare, dacă nu se specifică explicit altfel, vom discuta elementele de programare în contextul unui unic programator sau al unei echipe mici, de maxim 3-4 persoane.

În contextul acestui îndrumar "programare" se referă în general la mici script-uri pentru linia de comanda (CLI) sau pentru web. Voi folosi limbaje de programare ce intră în rutina mea zilnică. În plus, voi prezenta diverse servicii/tehnici utilizate în procesul de programare.
Exemplele prezentate în aceste pagini vor folosi Ubuntu Linux 14.04.

Cotrolul versiunilor: Git, Mercurial, SVN ...

Indiferent dacă programăm singuri, împreună cu altcineva sau dacă scriem doar documentație este absolut necesar să folosim un sistem de control al versiunilor.

Este un element pe care din păcate, de foarte multe ori este ignorat. De ce să ne mai batem capul cu el? Avantajele sunt multe dar aici amintesc doar o parte din ele:

  • ștergerile/modificările accidentale pot fi oricând restaurate
  • folosirea codului pe mai multe calculatoare
  • lucrul simultan la elemente complet diferite fără afectarea reciprocă
  • proceduri facile de lucru în echipă și de testare sau lansare în producție
  • un programator nu poate fi luat niciodată în serios dacă nu folosește o soluție modernă de control a versiunilor

Ok ok ... dar ce anume sistem să folosim? Variante sunt multe începând cu cele clasice gen CVS și mai apoi Subversion/SVN până la cele noi gen Git, Mercurial, Bazaar, Monotone sau multe altele.

Dacă softul la care urmează să lucrăm folosește deja un sistem probabil că cel mai bine e să mergem în continuare pe aceași variantă. Dacă nu există constrângeri externe atunci cel puțin în acest moment Git este o alegere potrivită fiind extrem de capabil și folosit de comunitatea OpenSource.

Limbaje de programare

În ultima perioadă în loc de limbaj de programare tot mai des întâlnim stack-uri, colecții de tehnologii și limbaje folosite împreună. Un bun programator e capabil de a aborda în orice moment un nou limbaj de programare sau o nouă tehnologie.

Python, Ruby, C++, Bash, Lua, JavaScript/CoffeeScript, Node.js, CSS, SQL, noSQL, Go, Java, Haskell, Perl și chiar PHP pot fi utile în anumite situații. E bine să folosim orice oportunitate de a încerca un limbaj nou chiar dacă fiecare avem propriile preferințe. O modalitate bună de a descoperii limbaje și tehnologii noi e să vedem ce anume folosesc proiectele care ni se par interesante.

Medii de dezvoltare / Editoare / Utilitare

Având posibilitatea de a controla complet mediul de lucru, personal am ales să folosesc exclusiv Linux, chiar și pentru desktop și laptop. O consecință a acestei alegeri este faptul că absolut toate utilitarele pe care le folosesc sunt utilitare Linux.

Nu am recomandări punctuale pentru cei ce folosesc alte sisteme de operare. În aceste cazuri este posibil sau chiar probabil să fie mai avantajoasă utilizarea utilitarelor specifice de Windows sau OSX.

Stilul de programare

Fiecare programator are propriile preferințe în stilul de programare. Personal, favorizez programarea cât mai low level chiar dacă acest lucru vine în detrimentul vitezei de dezvoltare. Consider că eliminarea construcțiilor ce nu sunt absolut necesare duce la un control și o înțelegere mai bună a elementelor folosite și bineînțeles la performațe mai ridicate. Din acest motiv și datorită faptului că simpla trecere în revistă a unui singur astfel de framework poate dura foarte mult voi evita prezentarea lor sau eventual voi prezenta doar variante minimaliste.

Alternativ, unii programatori preferă framework-urile gen Ruby on Rails, Django, web2py, TurboGears, ASP.NET MVC, Google Web Toolkit, Meteor, CakePHP, Joomla. Zend Framework, etc. În această variantă multe dintre procedeele uzuale sunt făcute de-a gata și pot fi imediat folosite reducând astfel timpul de dezvoltare. Ca dezavantaj aș aminti faptul că framework-ul intermediar duce automat la scăderea performanțelor în execuție. Prezența unei mari cantități de cod intermediar poate introduce o serie de vulnerabilități. Extinderea funcționalității poate fi de asemenea mult mai complicată decât scrierea întregului cod de la zero. Trecerea de la un framework la altul poate fi extrem de dificilă.

Într-un final fiecare programator poate alege ce variantă i se potrivește cel mai bine. Ambele extreme cât și variantele intermediare pot da rezultate foarte bune. Important e să construim ceva ... contează mai puțin prin ce metodă.

Conținutul acestui site reflectă interesele și preferințele autorilor.