Un ghid cuprinzător pentru a deveni un programator autodidact

partea a II-a: gândiți, planificați și executați ca un programator

acum, că știți cum să rezolvați problemele, să raționați despre soluție și să vă comunicați ideile fluent, este timpul să puneți aceste abilități în practică, așa cum face un programator.

Donald Knuth: cu mâinile în jos, unul dintre cei mai mari informaticieni pe care i-a văzut vreodată domeniul.

în această parte, există trei lucruri pe care trebuie să le înveți. În primul rând, veți învăța C++ ca a doua limbă, care este mai aproape de descrierile la nivel de mașină în comparație cu Python. Python este mai aproape de spectrul englezei simple, în timp ce C++ este mai aproape de sfârșitul spectrului 0s și 1s. învățarea C++ vă va familiariza cu mai multe construcții de programare, cum ar fi indicii. În al doilea rând, vă veți îmbunătăți viteza de codificare practicând intens, citind documentația și reglând în continuare abilitățile de depanare. În cele din urmă, veți învăța recursivitate, care este programatorii magice și oamenii de știință de calculator folosesc pentru a valorifica puterea de calcul.

Aflați C++ și începeți să scrieți programe simple

ați învățat deja Python în partea anterioară. Python este un limbaj prietenos cu programatorii, deoarece ascunde o mulțime de detalii de nivel scăzut de la programator pentru ușurință în utilizare. Cu toate acestea, dacă doriți să progresați, este absolut necesar să învățați fundamentele programării în c++.

pe ce să ne concentrăm: Scrierea codului în C++ vă va face să vă simțiți mai programator, deoarece mergeți mai mult spre descrieri la nivel de mașină. Aflați diferența dintre sintaxă și semantică. Petreceți timp învățând tastarea statică și dinamică, gestionarea memoriei și indicii. Aflați cum să implementați condiționale, bucle, funcții, tipuri de date și lucruri pe care le-ați învățat în Python din nou în C++. Dacă toate acestea par grecești și latine, nu vă faceți griji. Secțiunea Resurse vă va clarifica totul.

erori de manipulare: ori de câte ori primiți o eroare, nu vă descurajați. Chiar și cei mai experimentați programatori au erori și erori în programele lor. Tot ce trebuie să faceți este să citiți eroarea, să efectuați o căutare rapidă pe Google și să remediați problema în codul dvs. În timp ce faceți acest lucru, înțelegeți unde ați făcut o greșeală, corectați-vă înțelegerea și continuați. Uneori este posibil să trebuiască să citiți un pic de documentație. Verificați secțiunea următoare.

citirea documentației ar trebui să fie a doua natură pentru tine

la fel ca efectuarea unei căutări pe Google, abilitatea unui programator este decisă de cât de bine poate înțelege documentația și scrie programe utile. Pe măsură ce învățați să citiți documentația, veți învăța, de asemenea, să comentați Codul, să scrieți cod lizibil și să scrieți documentația pentru codul pe care îl scrieți.

de ce ar trebui să înveți asta? O mulțime de oameni se luptă cu învățarea noilor tehnologii și caută cursuri gata făcute din care să învețe. Deși acest lucru este bine în etapele inițiale, pe măsură ce cunoștințele dvs. se adâncesc, nu veți găsi tutoriale gata făcute cu care să vă hrăniți. Va trebui să citiți documentația și să ridicați ceea ce aveți nevoie. Din nou, învățați să filtrați informațiile și să luați exact ceea ce aveți nevoie pentru a face treaba.

practica. Repet. Exersează.

acum trebuie doar să continui să exersezi. Mergeți la Hackerrank și rezolvați toate problemele ușoare din secțiunea de încălzire și implementare de acolo. Dacă există o problemă pe care nu o puteți rezolva, citiți discuțiile, citiți editorialul și vedeți cum o puteți rezolva singur. Dacă există ceva ce nu înțelegeți, utilizați Google.

Dacă ați făcut citirile din partea anterioară, nu ar trebui să aveți o problemă aici. Dacă vă luptați, vă sugerez să vă întoarceți și să revizuiți acele secțiuni. Trebuie să devii bun la scrierea codului, așa că nu sări peste această parte. Ideea este să fii fluent în exprimarea soluțiilor tale simple în limba engleză în echivalentele lor de programare. Odată ce nu sunteți împotmolit de specificul limbii, puteți continua. Luați toate programele pe care le-ați scris în Python și codificați-le în c++.

s-ar putea veni peste hype în jurul valorii de programare competitiv, aș recomanda să stai departe de ea în acest stadiu, deoarece va face mai mult rău decât bine. Odată ce ați terminat partea a III-a, puteți experimenta cu ea și, dacă este făcută corect, vă poate îmbunătăți abilitățile de rezolvare a problemelor.

înțelegeți bine recursivitatea

acest lucru vă va ajuta să înțelegeți mai bine recursivitatea. Haha.

inima unui informatician constă în capacitatea de a înțelege recursivitatea. A recursa înseamnă a exprima ceva în termeni de sine. Tot ceea ce puteți face folosind bucle se poate face recursiv și în moduri foarte elegante. Încercați să înțelegeți acest lucru intuitiv și urmăriți videoclipurile pe care le-am furnizat în resurse. Dacă sunteți un dezvoltator de software care nu înțelege suficient de bine recursivitatea, vă recomand să o faceți imediat.

rezumat

până în prezent, cunoașteți un limbaj de nivel scăzut și înalt și puteți aprecia suficient diferențele de „control” pe care le aveți asupra programelor dvs. Până acum, ar trebui să puteți scrie programe simple folosind Python și C++ și să apreciați diferența dintre ambele limbi.

de aici, mulți oameni intră în rutina de a învăța mai multe limbi, ceea ce nu este altceva decât un exercițiu inutil de la sine. Una dintre cele mai frecvente întrebări pe care mi le pun începătorii este „câte limbi știi?”, ceea ce mă face să-mi dau seama cât de greșiți sunt începătorii, în general, în ceea ce privește priceperea programării la cunoașterea mai multor limbi. Programarea nu înseamnă cunoașterea multor limbi. Limba pe care o utilizați este doar o modalitate de a vă exprima și de a vă rezolva problema în mod eficient. În acest stadiu, sunteți un „programator”, dar asta nu este suficient. Acum trebuie să învețe Informatică pentru a lua skillset la nivelul următor.

Partea III: Întâlnirea ta cu informatica

o înțelegere solidă a resurselor din această etapă te va face mai bun decât majoritatea programatorilor din grupul tău de colegi. S-ar putea chiar să deveniți mai buni decât majoritatea studenților de inginerie din anul 2/3 din India. Progresul dvs. de aici depinde de setea dvs. pentru materialul din această secțiune. Așa că concentrează-te.

pentru a adăuga o parte din atingere mea filosofică, intrand in calculator știința este ca și cum ai deschide cutia Pandorei.

majoritatea subiectelor din această secțiune sunt acoperite în anul 2 al unui curs de inginerie informatică. Le-am abordat un pic diferit pentru a se potrivi cel mai bine obiectivelor acestui ghid.

cum diferă acest lucru de un curriculum obișnuit de licență? Programele regulate de licență sunt puternic încărcate de teorie. Cursurile pe care le-am sugerat în secțiunea Resurse au un amestec bun de teorie și practică. Deși acest lucru poate fi un lucru bun pentru inginerii aspiranți, pentru laicul de acolo, nu este foarte util. Pierzi noțiunea de unde se termină Teoria și începe practica. Voi sublinia exact ceea ce ai nevoie pentru a învăța teorie-înțelept, astfel încât să puteți merge drept înainte și practica. Teoria este doar un instrument care vă ajută să scrieți un cod mai bun în această etapă, așa că nu vă împotmoliți prea mult.

fapt amuzant: în semestrul meu 2 de inginerie, am avut un subiect numit DBMS (sisteme de gestionare a bazelor de date). Am fost surprins să găsesc oameni care ar desena cele mai bune diagrame ER pentru proiectele lor de baze de date, dar când a venit să proiecteze de fapt o bază de date pentru aplicații practice, ar eșua lamentabil. Ei au fost atât de concentrat pe obtinerea detaliile diagramei dreapta, ei ar uita foarte motivul pentru care au fost o fac în primul rând. Nu-i învinovățesc, pentru că nu au fost niciodată învățați că diagrama este acolo pentru a construi baze de date mai bune, nu pentru a-și îmbunătăți abilitățile de schițare.

Matematică discretă

ați folosit deja matematică discretă fără să știți. Matematica discretă este o combinație de domenii din matematica aplicată care au fost utilizate în mod repetat în informatică. Experții în domeniu au decis să le pună pe toate împreună și să-i pună un nume-pe care acum îl numim matematică discretă.

nu vă faceți griji fete, ea a scris primul program

când învățați matematică discretă, urmați același principiu pe care l-am subliniat în partea I. gândiți-vă în ceea ce privește structurile matematice și procedurile utilizate pentru a le manipula. Matematica discretă crește pur și simplu numărul de instrumente la dispoziția dvs. pentru rezolvarea problemelor. Dacă v-ați depășit frica de matematică, vă veți bucura pe deplin de cursul pe care l-am legat în secțiunea Resurse.

structuri de date și algoritmi

aceasta este coloana vertebrală a întregii călătorii. De fapt, ați folosit deja structuri de date și algoritmi în tot acest timp — din nou, fără să știți. Acum o vom formaliza și vom studia acest lucru mai detaliat.

Linus Torvalds a construit nucleul Linux — ceva fără de care Android nu ar fi fost ceea ce este astăzi

ca programator cu experiență, veți folosi structuri de date și algoritmi peste tot. Înțelegerea suficient de bine vă va extinde abilitățile și instrumentele matematice pentru a construi structuri computaționale eficiente pentru abordarea problemelor comune. Veți învăța, de asemenea, diferite tehnici de proiectare a algoritmilor, care sunt ca niște planuri pentru rezolvarea unor teme din Informatică.

multe tutoriale vă vor spune să începeți să învățați algoritmi și structuri de date direct în sus. Motivul pentru care nu am făcut acest lucru este pentru că ai intra în Einstellung, care are o mentalitate fixă și o abordare a problemelor. Crede-mă, asta îți strică gândirea pentru că nu gândești în afara cutiei. Până la sfârșitul acestui lucru, veți fi un mare rezolvator de probleme și codificator.

cele mai bune practici

scrierea software-ului nu înseamnă doar punerea la întâmplare a codului pentru a face lucrurile. În majoritatea mediilor profesionale, nu veți fi singurul programator care lucrează la o bază de cod. Este important să urmați anumite linii directoare și convenții pentru a facilita programarea bazei de cod pentru toată lumea din echipă. Acest lucru facilitează înțelegerea codului scris de altcineva și, ulterior, facilitează înțelegerea codului dvs. de către alții. Dacă sunteți un dezvoltator de software junior, concentrați-vă pe această secțiune.

ce poți face? Petreceți timp înțelegând și punând în practică principiul uscat (nu vă repetați). Nu scrieți cod repetitiv, deoarece acest lucru vă încetinește și vă face mai predispus la greșeli. Scrieți comentarii utile și documentație oriunde puteți. Când am început, am crezut că este un lucru stupid de făcut până când, într-o zi, am deschis un proiect vechi și mi-am dat seama că tot codul meu era neinteligibil. Ca programator, nu trebuie să memorezi prea mult. Memorați ceea ce este important și căutați ceea ce este necesar.

controlul versiunii (Git)

Acest lucru este ceva ce am început să fac devreme și ajută foarte mult la păstrarea codului organizat. Vă urmăriți modificările și știți exact ce modificări aveți nevoie pentru a implementa anumite funcții. De asemenea, învățați cum să preveniți și să remediați rapid erorile. Văd o mulțime de ingineri tineri care nici măcar nu știu ce este Git și asta este extrem de trist. Își vor petrece întreaga carieră folosind controlul versiunii — dacă sunteți unul dintre ei, mergeți direct la resursele de mai jos.

Programare orientată pe obiecte

o introducere într-un mod complet nou de programare. Până acum, am făcut programare procedurală. Acum trecem la programarea orientată pe obiecte, care este cu totul o nouă paradigmă. O introducere în încapsularea și abstractizarea datelor vă va ajuta în continuare să apreciați modul în care a fost conceput acest ghid. În OOP, totul este un obiect și ideea este să vă separați clar interfața și implementarea. Veți învăța și cursuri și moștenire. În cele din urmă, veți începe să proiectați soluții orientate pe obiecte și să învățați cum să construiți cutii negre inteligente pentru a rezolva problemele. Învățarea Java este o modalitate bună de a începe cu această nouă paradigmă de programare. Python acceptă și OOP, așa că încercați să explorați asta!

exersează greu

exersează fiecare abilitate/concept / algoritm din această secțiune scriind fragmente de cod. Rescrieți codul vechi cu noile cunoștințe pe care le-ați dobândit. Continuați să scrieți programe mici și să învățați ceva nou din acesta în fiecare etapă.

Bruce Lee: omul super-uman. R. I.P legend

Continuați să învățați pe măsură ce progresați. Am construit calculatoare, sisteme de management al Bibliotecii, scripturi de calcul numeric în atât de multe moduri diferite, și de fiecare dată, am învățat ceva diferit. Veți ajunge în cele din urmă să vă dați seama că nu există un glonț de aur care să repare totul. Viața este plină de compromisuri. Aceasta este frumusețea imperfecțiunii.

rezumat

știi mai mult decât suficient pentru a construi software-ul de schimbare joc. Trebuie să internalizați totul până aici pentru a trece la pasul următor. De aici, mai multă teorie nu vă va face nici un bine. Ar trebui să investești doar timp în practicarea și construirea de proiecte utile. Programarea este o știință aplicată-urmați regula 80/20, ceea ce înseamnă că petreceți 80% din timp practicând și 20% din timp citind teoria.

Partea IV: este timpul pentru tine de a construi unele lucruri interesante

dacă ați urmat ghidul până aici la T, sunteți bine echipate pentru a merge mai departe și de a construi unele proiecte mari pe care le puteți pune pe CV-ul, show-off la prieteni, sau chiar genera venituri din munca ta. În această etapă, vreau să vă învăț cum să învățați lucrurile pe parcurs. Fiecare proiect nou pe care îl luați sau la care sunteți repartizat va cere să învățați ceva nou. Este important să abordați acest lucru cu atitudinea corectă.

am întotdeauna a fost inspirat de Mark Zuckerberg pentru atitudinea sa nemuritoare față de anularea eșecului

există câteva linii directoare pe care le puteți urma ori de câte ori preluați orice proiect. Am dezvoltat această rubrică pentru mine și mi-am dat seama că ar fi util pentru voi, oameni buni, să începeți proiecte noi.

  1. identificați problema la care lucrați și fiți foarte specifici cu privire la detalii. Fii clar cu privire la obiectivele și obiectivele tale.
  2. căutați proiecte existente sau similare și identificați unde excelează și unde le lipsește. Vedeți unde se potrivește ideea dvs., cum se aliniază proiectul cu obiectivele și obiectivele pe care le aveți în minte și notați totul.
  3. faceți o listă cu toate abilitățile de care aveți nevoie pentru a învăța să faceți proiectul și măsura în care trebuie să dezvoltați abilitatea pentru a finaliza proiectul. Cunoaște-ți punctele forte și punctele slabe.
  4. creați un plan pentru a învăța abilitățile necesare. Identificați persoanele potrivite pentru a vă ajuta și tutorialele necesare pentru a începe. Concentrați-vă exclusiv pe dezvoltarea abilității pentru a vă realiza proiectul. Este ușor să te lași dus în profunzime. Amintiți-vă, învățați abilitatea de a finaliza proiectul și de a nu scrie o teză de Doctorat pe el. Cu excepția cazului în care acesta este scopul tău.
  5. începeți cu proiectul, Actualizați-vă obiectivele și obiectivele și fiți foarte clari cu privire la punctele forte și punctele slabe. Împărțiți proiectul în sub-sarcini realizabile și atribuiți o valoare de obiectivitate pentru fiecare. Aceasta înseamnă că trebuie să știți când să nu mai urmăriți perfecțiunea și să vă concentrați asupra imaginii de ansamblu.
  6. executa cu nerăbdare. Repetați până când toate obiectivele sunt îndeplinite.

citiți acest lucru pentru sfaturi și trucuri despre cum să deveniți un cursant mai bun.având în vedere cunoștințele existente ,puteți învăța să construiți site-uri web, aplicații mobile, jocuri, scripturi mici, pluginuri Chrome, aplicații desktop și software de analiză a datelor. Voi oferi mai multe informații despre acest lucru în următoarea postare. Odată ce aveți câteva proiecte finalizate sub centură, veți fi un dezvoltator suficient de bun pentru a lucra independent și a câștiga bani pe partea laterală, ceea ce este o sursă excelentă de venit dacă sunteți student. Dacă sunteți dintr-un alt domeniu, acest lucru vă oferă o bază suficient de solidă pentru a vă putea spori munca actuală cu tehnologia. Ceea ce puteți cu setul dvs. actual de abilități este nesfârșit, chiar și o întreagă postare pe blog nu poate face dreptate acestui lucru.



Lasă un răspuns

Adresa ta de email nu va fi publicată.