Cosmin L. Neagu

Nivel: Mediu,Începător
Data ultimei modificări: 2014.07.21

Introducere 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ă interese și preferințe personale. Nu sunt un expert în fiecare subiect atins. Nu prezint adevăruri ci perspective.

Email: cosmin (at) rohost.com

Social: Google+, Twitter, GitHub