Vreau să învăț limbajul X!

Sunt convins că oricine știe ce e ăla un limbaj de programare (de dragul articolului includem aici și limbajele de scripting) și-a dorit, cel puțin o dată în viață să învețe… un anume limbaj de programare. În funcție de cercurile prin care se învârtea, acest oricine a auzit de Java, .NET, Visual Basic, C++, ASM, Pascal, Javascript șamd. Ce zici, te regăsești (tu din prezent sau tu din trecut) în situația asta?

Abordarea este greșită!

Abordarea „vreau să învăț C#” este 100% greșită dacă ești un începător absolut ce nu are nicio tangență cu scrierea de cod! Pentru că, mai presus de a învăța c# este a învăța să programez. Este un pas esențial, dar sărit de mulți, ajungându-se în situația în care (nu) folosești OOP unde trebuie, scrii mult mai mult cod decât este necesar sau, și mai grav, ajungi să faci copy/paste fără să înțelegi la ce.

Păi și cum se face?

  1. Prioritatea numero uno: să știi limba engleză. Nu la perfecție, ci la un nivel la care poți înțelege suficient de mult pentru a urmări „povestea”. Treaba cu „documentații în română nu ai?” nu se aplică. Ești din start o cauză pierdută dacă faci asta. Documentațiile oficiale (ale oricărui limbaj) în alte limbi (cred că în orice limbă, nu doar română) sunt incomplete și puțin depășite.
  2. Cauți ori un tutorial ori iei o carte (sau alte cărți; nu te lăsa păcălit de anul publicării, nu contează foarte mult în momentul asta) și te apuci să înțelegi cum funcționează toată treaba. Pseudocod, tipuri de date, algoritmi etc.

Aha! Acum am priceput!

După ce ai priceput cum stă treaba cu programarea în general, te specializezi. Cauți limbajul care îți place ție sau de care ai nevoie. Dacă înveți chestiile de la baza programării, vei vedea că orice limbaj ai alege ți se va părea rezonabil de simplu. Dacă tot ai învățat și programare, te poți perfecționa. Am două cărți pe care le-aș putea recomanda oricui, indiferent de experiența pe care o are:

  • Code 2 Complete. Cartea care te învață să gândești ca un programator
  • The Pragmatic Programmer. Fără să abordeze partea practică (aproape) deloc, Andrew Hunt reușește să îți povestească ce (nu) trebuie să faci, folosind un mod de exprimare destul de non tehnic, accesibil oricui. Deși cartea a fost scrisă în urmă cu 11 ani, nu mi s-a părut depășită în niciun moment.

Bonus: Vrei să înveți JavaScript?

Cred că este prima carte pe care o pot recomanda cuiva dornic să învețe JS: Professional JavaScript for Web Developers. Știi genul de carte pe care o iei prima dată în brațe (are 900 pagini, nu poți să o iei altfel! :D ) și îți dai seama că este o carte care merită și TREBUIE citită? Eh, asta e una din cărțile respective! Atenție însă, este nevoie să știi să programezi în… ceva. Orice.

Încheiere

Probabil, pentru unii va fi mai ușor să urmeze trei-patru ani de facultate, timp în care vei învăța despre POO, nu despre OOP și despre vectori, nu arrays. Dar, spre consolarea unora, le înveți în limba română. Eu zic că este complet greșit, dar na.. Eu sunt veșnic nemulțumit!

19 Comentarii to “Vreau să învăț limbajul X!”

  1. Primii pasi sunt cei mai importanti pentru a-ti forma o gandire buna pentru programare. Pe lucrurile de baza trebuie pus accent ca sa ai o viziunea de ansamblu clara asupra programarii. De asemenea, e foarte bine sa inveti de la inceput ce NU e bine sa faci, sa nu pornesti cu stangul.
    Bafta tuturor incepatorilor!

  2. Cred că ai omis un aspect foarte important. Răbdarea. Fără răbdare poți să fi născut programator, că niciodată nu o să inveți programare calumea. (Da, din păcate vorbesc din experiență proprie)

  3. Eu as mai recomanda Learn to Program de Chris Pine. Mai ales ca m-am regasit in situatia prezentata de tine.

    P.S. Cred insa ca problema intervine la programatorii wannabe, invatati sa gandeasca in alti termeni. La un student/absolvent de informatica, matematica, cibernetica sau chiar teleco nu am intalnit simptomele.

    P.P.S De 4 ori incerc sa postez rahatul asta de comentariu si numai “Thank you for your spam” imi apare :(

  4. Sunt pilaf in ceea ce priveste scriptingul, insa m-am lovit inevitabil de PHP prin prisma customizari wp dupa nevoile proprii.

    Concluzia? Dupa 4 ani de C++ In liceu, a fost nevoie de articolul tau ca sa fac legatura intre vectori (de fapt matrici) si arrays. Erau ambele notiuni pe care le stiam, dar care nu se asociau deloc in capul meu.

  5. Limbajul in care te specializezi e mai putin important. Cea mai importanta e gandirea de programator. Astfel, inainte de a incepe sa scrie cod tu trebuie sa ai clar in cap modelul si relatiile dinte componentele MVC-ului. Multi incepatori, desi stiu foarte bine teoria se incurca in partea de implementare pentru ca nu simt comportamentul firesc al anumitor componente. Pe organicprogramming.com se explică cum pot fi soluționate anumite issues privind acest lucru.
    P.S. Practice makes almost perfect.

  6. Fleoșc. Înveți conceptele de OOP direct hands-on scriind cod într-un limbaj, what’s the big deal? Nu poți să plictisești un om cu rețete de bucătărie în loc să-l lași să mai și gătească din când în când, gen.

  7. Cei 4 ani de facultate nu sunt irositi, daca dupa un curs de info te apuci si acasa sa testezi 2-3 programe. In facultate inveti tot ce ai nevoie pentru a pune o baza, pentru orice limbaj. Exista si carti foarte bune in romana, scrise de romani una ar fi Java de la 0 la expert.
    Cred ca cel mai important pentru inceput este sa stii ceva algoritmica, sa stapanesti structurile de control al datelor, sa stii tipurile si scopul variabilelor si sa stii sa faci debug.
    Multe carti incep cu “cel mai usor script: Hello World!” insa nu-ti spun ca la fel de usor poti face si debug, cel putin in PHP si in alte limbaje de genul, poti avea:

    print_r("hello world");

    dar la fel de bine poti avea si

    print_r($variabila); die;

    lucruri pe care le inveti cu timpul, chinuindu-te sa-ti iasa cum trebuie programul.

  8. Staicu Ionuț-Bogdan

    Mulțumesc tuturor pentru comentarii! Nu mă așteptam să găsesc atâtea. :D

    Cred că ai omis un aspect foarte important. Răbdarea.

    Orice, dar ORICE te-ai apuca să faci, în orice domeniu, ai nevoie de răbdare. :D

    La un student/absolvent de informatica

    Facem un sondaj, ceva, să vezi câți au o facultate de profil? Sau câți s-au apucat de programare după facultate? Cunosc programatori care au facultatea de medicină, ASE sau dreptul.

    De 4 ori incerc sa postez rahatul asta de comentariu si numai “Thank you for your spam” imi apare

    Probabil folosești vreun plugin aiurea care face fill la mai multe câmpuri decât este nevoie.

    a fost nevoie de articolul tau ca sa fac legatura intre vectori (de fapt matrici) si arrays.

    Mă bucur că te-am luminat :D

    Nu poți să plictisești un om cu rețete de bucătărie în loc să-l lași să mai și gătească din când în când, gen.

    De acord cu tine. Doar că… nu ai dreptate. Ex: poți găti și fără, dar te miști mai repede când știi să tai. :D

    Multe carti incep cu “cel mai usor script: Hello World!”

    Ah, vroiam să scriu despre chestia asta și uitasem. Problema cu toate cărțile de genul „învață limbajul X în Y zile” este că, de cele mai multe ori se începe cu „scrie asta în editor”. Ce face? De ce face? :D

    Emanuel, problema nu e în cei patru ani de facultate. Problema este că orice om normal are o capacitate de învățare mai mare înainte să ajungă în facultate. Și dacă ratează startul… O să fie cam greu să înceapă să gândească binar :D

  9. Eu am facut scolile in engleza :P

    E adevarat ca pana sa ajung la facultate (la sectie de calculatoare, daaa? ca la aia erau cele mai multe locuri asa ca bietul meu creieras a zis ca acolo am sanse mai mari sa intru) eu nici nu stiam ce e aia programare. Clasa noastra nu a avut nici o ora de informatica in liceu (si da, am fost clasa de real – mate-fizica-bilingv engleza). Simt de multe ori ca am ratat startul, ma roade ca sunt incapabila sa pricep unele chestii si totusi am si atatea momente in care pur si simplu asa ma prinde sa lucrez la o chestie… nu-mi mai vine sa ma opresc. Si in momente din astea chiar simt ca am invatat o groaza de chestii…

  10. Fleoșc. Înveți conceptele de OOP direct hands-on scriind cod într-un limbaj, what’s the big deal?

    Daca tu ai reusit astfel, probabil te-ai nascut cu gandirea de programator si ti-ai dezvoltat-o foarte rapid urmarind exemple si concepte. Dar multi au nevoie de lucrurile mai de baza. Am observat, atunci cand le explicam colegilor mei, ca ei nu inteleg exact ce e un array, de exemplu. Le-am desenat pe foaie casute si le-am explicat despre ce e vorba si au inceput sa priceapa. Deci nu oricine poate sa aiba un start in programare direct programand.

  11. Facem un sondaj, ceva, să vezi câți au o facultate de profil? Sau câți s-au apucat de programare după facultate? Cunosc programatori care au facultatea de medicină, ASE sau dreptul.

    :)
    Chiar sunt curios. Dar nu in Romania. Ci in lume.
    Fii atent insa, daca tu ai cunoscut programatori veniti din alte background-uri decat cel tehnic, ei reprezinta o minoritate. Statistica este insa cea care conteaza.

  12. Staicu Ionuț-Bogdan

    Marius, am deschis un thread pe softpedia, să vedem ce răspunsuri primim :)

    Gândește-te că cei care au o facultate de profil au început să programeze ÎNAINTE de a face acea facultate. Încă nu a votat nimeni, dar deja intuiesc răspunsurile :D

  13. Da, proportia era echilibrata la 10:20. Eu nu am votat dar o sa votez la NU am studii de specialitate. Cred ca ai dreptate, insa Romania este un caz aparte. De circa 4 ani vad cum creste interesul tinerilor inspre IT/programming/sysadmin. A si fost unul din domeniile cele mai putin atinse de criza, iar multi deja visau (prin 2007) mii de euro in cont lunar editand tag-uri html. De aici si ambitia multora.

    Nu critic asta! Mi se pare, din contra, laudabil ca o persoana venita din alt background sa reusasca in IT. Denota multa disciplina si inteligenta.

    In fine, numai bine.

  14. Programarea structurată a fost simplă de priceput, aia obiectuală a fost a dracu’ de grea. Recunosc oricând că am înțeles chintesența OOP de la un prof în facultate.
    Am citit apoi din cărți (culmea chiar în română) alte aspecte particularizate privind polimorfismul claselor de m-au pus în cur.
    Deși sincer asta nu îți ajută la nimic, să fii un maestru în polimorifsm în C++ și să trebuiască apoi să codezi în Java este nasol. :D
    Sunt niște principii generale, e obligatoriu să le știi, dar să aprofundezi doar de dragul de a aprofunda chiar nu e cazul.

  15. Am observat ca toate cartile recomandate de tine sunt de pe amazon.co.uk sunt interesat de cateva carti dar nu stiu exact daca se merita sa le cumpar de pe site. Cat costa transportul pana in Romania la 1 carte sa zicem? Din cate am inteles de multe ori costa mai mult transportul decat cartea.

  16. Staicu Ionuț-Bogdan

    Alex, am dat link-uri spre amazon pentru că ei trimit sigur în Ro (am absolut toate cărțile – și nu sunt puține – luate de pe amazon.co.uk) și nu plătești vamă (suntem în UE) orice valoare ai avea. Le poți lua și de pe amazon.com, transportul costă cam tot atât (în jur de 10€) indiferent de unde le iei.

    De pe co.uk transportul costă vreo 8 lire parcă și ajunge în MAXIM o săptămână. Primești bilețelul în cutia poștală și te duci la cea mai apropiată poștă să îți ridici coletul. Dacă ai un poștaș de gașcă și colet rezonabil de mic, te poți trezi cu coletul direct acasă :D

    @Marius: din câte se pare, majoritatea s-au apucat de programat înainte de facultate. Deci… Nu se învață nimic în facultate! :D

    Despre cărțile în română cred că m-am exprimat (sau s-a înțeles) un pic greșit. Cărțile în română despre un anumit limbaj sunt depășite. Dacă găsești vreo carte în limba română despre programare în general, fără să atingă în mod obsesiv un ANUME limbaj (adică teorie, pe scurt), cred că este ok pentru învățat.

  17. “acest oricine a auzit de Java, .NET, Visual Basic, C++, ASM, Pascal, Javascript șamd

    .NET nu e un limbaj de programare. Orice program scris intr-unul din limbajele din platforma/framework-ul .NET (vezi http://www.dotnetpowered.com/languages.aspx si http://en.wikipedia.org/wiki/List_of_CLI_languages) este compilat in Microsoft Intermediate Language (MSIL), in concordanta cu regulile date de Common Language Specification (CLS) si Common Types System (CTS), iar Common Language Runtime (CLR) raspunde de executia fiecarui program, adica “traduce” codul intermediar in cod masina nativ.

    http://mono-project.com/Main_Page

  18. Staicu Ionuț-Bogdan

    .NET nu e un limbaj de programare

    Dap. Fix despre asta vorbeam. Care este limbaj de programare și care nu.

  19. Omul e doar un spammer, nu te mai stresa atat.

Show trackbacks

Ți-a plăcut articolul? Lasă un comentariu!

You can insert code snippets using BBcode:
[js].[/js] [html].[/html] [php].[/php] [css].[/css]
You can also use some HTML tags:
<blockquote>.</blockquote> <code>.</code> <a href="">.</a> <strong>.</strong> <em>.</em>

windows apple dropbox facebook twitter