sâmbătă, 21 mai 2016

Cum se invata programare?

Programarea este o abilitate foarte complexa ce necesita multi ani de studiu pentru a fi stapanita. 


Acest articol incepe prin a prezenta calea spre cunoastere explicand cateva alegeri ce trebuiesc luate de un incepator si o orientare spre instrumente si resurse.
  •  Sa te decizi in ceea ce vrei sa faci


Programarea este un subiect destul de amplu: puteti face fie jocuri, fie site-uri si aplicatii web, procesare de texte, automatizari de task-uri (scripting), interfete grafice etc. Daca vi se pare cool sa invatati programare si nu aveti nicio aplicatie specifica in minte, este ok, dar gandirea in avans la ceea ce doriti sa programati,va va ajuta sa luati decizii in cunostiinta de cauza in timpul studiului.
  •  Alegerea unui limbaj de programare 

In primul rand invatati un limbaj simplu, cum ar fi PHP, dupa ce ati invatat destul de mult se trece la invatarea C/C++ pentru a intelege exact cum functioneaza si cum interactioneaza programele. C# si JAVA sunt alte doua limbaje cunoscute pentru incepatori. Trebuie sa-ti cercetezi domeniul tinta pentru a sti care sunt limbajele ce trebuiesc cunoscute (ex. SQL pentru baza de date) sau care ,dupa caz, trebuiesc evitate. Nu trebuie sa va lasati pacalati de jargoane precum: „orientat pe obiecte”, „concurent”, sau „dinamic”. Toate acestea inseamna ceva, dar vor fi intelese dupa capatarea unei anumite experiente in programare.

  •  Gasirea resurselor de invatare 

Cautati site-uri Web bune pentru a incepe studierea limbajelor mentionate mai sus si vizitati pagina oficiala (daca exista) a limbajului pentru a gasi un tutorial sau manual pentru incepatori. De asemenea cautati o persoana care stie deja sa programeze. Unele tutorialele scrise sunt bunicele, dar pot fi frustrante cateodata daca nu ofera raspunsurile dorite. Uneori cursurile de programare si videotutorialele va pot ajuta mult.

  • Se incepe usor 

Nu va puteti astepta sa scrieti cea mai bine vanduta capodopera de 700 de pagini daca nu aveti nicio experienta practica in scris. Cam acelasi lucru se intampla si cu programarea. Incepeti cu constructii de baza si scrieti programe scurte (de la 10 la 30 de linii) pentru a va testa intelegerea conceptului.
Intinde-te daca e nevoie, dar nu incerca sa alergi inainte sa stii sa mergi!

  •  Calcularea timpului

Inainte sa va puteti numi un expert este nevoie de multe ore de practica pentru rezolvarea diferitelor probleme. Project Euler are multe sarcini mici, clasificate in functie de dificultate care sunt utile tocmai pentru finisarea abilitatilor si retinerea in practica, de asemenea ajuta la realizarea shemelor logice.

  •  Perseverenta

Programarea poate fi foarte frustranta, dar finalizarea cu succes a unui program este un sentiment profund de satisfactie si multumire. Nu renuntati daca nu intelegeti un concept, programarea poate deveni un lucru foarte abstract de invatat. Atunci cand lucrati pe o problema deosebit de complexa luati pauze periodice pentru a permite creierului sa se relaxeze. Asigurati-va un bun program pentru a lucra.

  •  Continua sa inveti 

Sa stiti un limbaj de programare este bine, dar sa stiti patru sau cinci este si mai bine. Indiferent ce limbaj folosesti cel mai des, sa ai cunostinta si de altele pe care sa le proiectezi te face un mai bun programator si mai capabil sa intelegi concepte comune si probleme in abstract. Deci invatati mai multe limbaje de programare, in special 2-3 cu diferite filozofii de difertie de proiectare cum ar fi Lisp, Java si Perl.

Ce inseamna sa fii programator ?

Ce inseamna sa fii programator?


Cu mai multi ani in urma sa fii un programator bun insemna sa scrii programe care functioneaza utilizand trucuri care reduc reduc timpul de executie si micsoreaza spatiul de memorie utilizat. Timpul programatorilor era ieftin iar resursele de calcul scumpe. Era vremea cand algoritmii de sortare erau inca subiect de comunicari stiintifice iar invatacei in ale programarii aflau cum sa scoata expresiile constante in afara ciclurilor, cum sa reutilizeze spatiul ocupat de variabile etc. Limbajul C utiliza cuvantul cheie register, indicand compilatorului sa mentina variabila respectiva intr-un registru  pentru a reduce timpul de executie. In aceeasi perioada instrumentul principal pentru testarea si depanarea programelor era instructiunea printf iar limbajul de asamblare era frecvent utilizat pentru inbunatatirea performantelor programelor. Inventivitatea era cea mai importanta calitate a unui programator. Erau multe de facut cu resurse putine. Programarea era o activitate undeva la limita dintre arta si mestesug. Programatori formau o casta cu un numar mic de membri. Existau job-uri suficiente pentru ei dar nu in exces. Nu existau preocupari pentru dezvoltarea unor instrumente care sa inbunatateasca productivitatea programatorilor sau sa le faca munca mai usoara (job security). Cine sa aiba nevoie de ele, cine sa plateasca pentru ele ? In timp, pe baza de cerere si oferta, pentru ca utilizarea tehnicii de calcul a ajuns sa se extinda mult si mai ales foarte rapid a crescut costul timpului programatorilor. Si asta in timp ce costul resurselor de calcul a scazut. Solutia - industrializarea procesului de scriere a programelor devenind rentabila utilizarea de programe pentru crearea programelor. Nu se mai cauta expresii constante pentru a le scoate in afara ciclurilor, se cauta elemente comune unor aplicatii dintr-o clasa pe baza carora se se construesc aplicatii generice configurabile pentru situatiile particulare. au aparut termeni noi - portabilitate, compatibilitate, interoperabilitate, standardizare. Aparitia ewb-ului a accelerat acest proces. Pentru multi mestesugari ar fi trebuit sa reinventeze iar si iar aceeasi roata care sa se potriveasca peste tot. Si asa s-a schimbat definitia unui programator bun. El el intelege diagrama UML,respecta metodologii, stie sa opereze cu medii sifisticate de dezvoltare a programelor, reutilizeaza componente, stapaneste, pentru limbajul in care scrie biblioteci cu sute de functii. Are la dispozitie o multime de ajutoare: editoare inteligente, compilatoare care optimizeaza codul in functie de arhitectura procesorului pentru care genereaza cod,  generatoare de programe, profilatoare de programe, depanatoare, validatoare etc. Nnu prea mai este un dezvoltator de algoritmi, este mai mult un combinator. Disciplina si memoria devin mai importante decat inventivitatea. Numarul celor care au ocazia sa "inventeze" ceva este relativ mic. Unii rezolva probleme cu nume noi ca: calabilitate, scabilitate, fiabilitate, securitate etc. Si se numesc arhitecti nu programatori. Altii se ocupa de ceea ce tine de industrializarea activitatii de  programare. Si se numesc creatori de tehnologii. Si mai sunt si alti care inventeaza aplicatii noi sau cauta domenii in care tehnica de calcul nu a ajuns. Si se numeste specialisti in marketing. De multe ori  programare inseamna configurarea de aplicatii, interfatarea unor aplicaatii, operatii de tip "completare de formulare". Doar existenta sistemelor embedded si a altor sisteme caracterizate de resurse limitate fata de imaginatia celor care inventeaza aplicatii noi, mai conserva necesitatea unor programe scrise linie cu linie si nu asamblate din alte programe. Numarul celor care lucreaza in acest domeniu este inca mic. Daca o sa fie nevoie de mai multe o sa cresca intai eficienta dezvoltatorilor de aplicatii. De exemplu prin perfectionarea instrumentelor cu ajutorul carora se dezvolta programe pentru astfel de sisteme. Programarea a devenit o meserie oricare alta, se invata, se practica, nu necesita calitati intelectuale deosebite. Ar fi interesant de stiut care o sa fie defeinitia  unui programator bun peste zece ani ?
La ce sa se astepte un absolvent care acum se pregateste pentru aceasta meserie ?Dar cineva care nu se care nu se pensioneaza in zece ani ? Va insemna activitatea de programare mai mult decat crearea semiautomata a unor pasionati de locomotive si vapoare, mai tarziu au fost pasionati se masini, avioane si de calculatoare (cel putin asa spun parintii). Trece si asta. O sa urmeze altceva.misterios si dificil.