En Omfattende Guide til Å Bli En Selvlært Programmerer
Del II: Tenk, Planlegg og Utfør Som En Programmerer
Nå som Du vet hvordan du løser problemer, forklarer løsningen og kommuniserer ideene dine flytende, er det på tide for deg å sette disse ferdighetene inn i å øve, som en programmerer gjør.
i denne delen er det tre ting du trenger å lære. For Det første vil Du lære C++ som andrespråk, som er nærmere maskinnivåbeskrivelser i forhold til Python. Python er nærmere spekteret av vanlig engelsk, Mens C++ er nærmere slutten av spekteret av 0s og 1s. Læring C++ vil gjøre deg kjent med flere programmeringskonstruksjoner som pekere. For det andre vil du forbedre kodingshastigheten ved å øve intensivt, lese dokumentasjon og videre finjustere feilsøkingsferdighetene dine. Til slutt vil du lære rekursjon, som er de magiske programmerere og dataforskere bruker til å utnytte kraften i beregningen.
Lær C++ og begynn å skrive enkle programmer
Du har allerede lært Python i forrige del. Python er et programmerervennlig språk, da det skjuler mange detaljer på lavt nivå fra programmereren for brukervennlighet. Men hvis du vil utvikle seg, er det absolutt nødvendig å lære grunnleggende programmering I C++.
hva å fokusere på: Skrive kode I C++ vil få deg til å føle deg mer programmerer, fordi du går mer mot maskinnivåbeskrivelser. Lær forskjellen mellom syntaks og semantikk. Bruk tid på å lære statisk og dynamisk skriving, minnehåndtering og pekere. Lær å implementere conditionals, loops, funksjoner, datatyper og ting du lærte I Python igjen i C++. Hvis alt dette virker som gresk og Latin, ikke bekymre deg. Ressursdelen vil gjøre alt klart for deg.
Håndteringsfeil: Når du får en feil, ikke bli motløs. Selv de mest erfarne programmørene har feil og feil i sine programmer. Alt du trenger å gjøre er å lese feilen, gjøre et raskt Google-søk, og fikse problemet i koden din. Mens du gjør dette, forstå hvor du har gjort en feil, korrigere din forståelse og fortsett. Noen ganger må du kanskje lese litt dokumentasjon. Sjekk neste avsnitt.
Lese dokumentasjon bør være andre natur for deg
Akkurat som Å Gjøre Et Google-søk, er en programmerer ferdighet bestemt av hvor godt han kan forstå dokumentasjon og skrive nyttige programmer. Når du lærer å lese dokumentasjon, vil du også lære å kommentere koden din, skrive lesbar kode og skrive dokumentasjon for koden du skriver.
Hvorfor skal du lære dette? Mange mennesker sliter med å lære ny teknologi og se etter ferdige kurs å lære av. Selv om dette er greit i begynnelsen, som din kunnskap utdyper, vil du ikke finne ferdige tutorials å skjeen mate deg selv med. Du må lese gjennom dokumentasjon og hente det du trenger. Igjen, lær å filtrere ut informasjon og ta akkurat det du trenger for å få jobben gjort.
Praksis. Gjenta. Praktisere.
Nå må du bare fortsette å øve. Gå over Til Hackerrank og løse alle de enkle problemene i oppvarmings-og implementeringsdelen der. Hvis det er et problem du ikke kan løse, les diskusjonene, les redaksjonen, og se hvordan du kan løse det selv. Hvis Det er Noe du ikke forstår, bruk Google.
hvis du har gjort lesingene i forrige del, bør du ikke ha et problem her. Hvis du sliter, foreslår jeg at du går tilbake og besøker disse seksjonene. Du må bli god til å skrive kode, så ikke hopp over denne delen. Tanken er å være flytende i å uttrykke dine engelskspråklige løsninger i programmeringsekvivalenter. Når du ikke er slått ned av språkspesifikasjoner, kan du fortsette. Ta alle programmene du skrev I Python og kode dem opp I C++.Du kan komme over hype rundt konkurransedyktig programmering, jeg vil anbefale deg å holde deg borte fra det på dette stadiet fordi det vil gjøre mer skade enn godt. Når Du er ferdig Med DEL III, kan du eksperimentere med Det, og hvis det gjøres riktig, kan det forbedre dine problemløsende ferdigheter enormt.
Forstå rekursjon godt
hjertet til en datavitenskapsmann ligger i evnen til å forstå rekursjon. Å rekursere betyr å uttrykke noe i form av seg selv. Alt du kan gjøre ved hjelp av looper kan gjøres rekursivt og i svært elegante måter. Prøv å forstå dette intuitivt og se videoene jeg har gitt i ressursene. Hvis du er en programvareutvikler som ikke forstår rekursjon godt nok, vil jeg anbefale å gjøre det med en gang.
Sammendrag
Så langt vet du et språk på lavt nivå og høyt nivå og kan tilstrekkelig sette pris på forskjellene i «kontrollen» du har over programmene dine. Nå bør du kunne skrive enkle programmer ved Hjelp Av Python og C++ og sette pris på forskjellen mellom begge språk.
Herfra går mange mennesker inn i ruten for å lære flere språk, noe som ikke er noe annet enn en ubrukelig øvelse i seg selv. En av de vanligste spørsmålene jeg får spurt av nybegynnere er » Hvor mange språk vet du?», som bringer meg til å innse hvor misforståtte nybegynnere generelt er som de relaterer programmeringsevne til å vite flere språk. Programmering handler ikke om å vite mange språk. Språket du bruker er bare en måte for deg å uttrykke og løse problemet effektivt. På dette stadiet er du en «programmerer», men det er ikke nok. Du må nå lære Datavitenskap for å ta ferdighetene dine til neste nivå.
DEL III: Ditt Møte med Datavitenskap
en solid forståelse av ressursene i dette stadiet vil gjøre deg bedre enn de fleste programmerere i din peer-gruppe. Du kan til og med bli bedre enn de fleste 2./3. års ingeniørstudenter i India. Din fremgang herfra avhenger av din tørst etter materialet i denne delen. Så fokus.
De Fleste emnene i denne delen er dekket i 2. år av En undergrad Computer Engineering kurs. Jeg har nærmet seg dem litt annerledes for å passe best til målene i denne veiledningen.
hvordan skiller dette seg fra en vanlig læreplan? Vanlige undergraduate pensum er tungt lastet med teori. Kursene jeg har foreslått i ressursseksjonen har en god blanding av teori og praksis. Selv om dette kan være en god ting for aspirerende ingeniører, for lekmannen der ute, er det ikke veldig nyttig. Du mister oversikten over hvor teori slutter og praksis starter. Jeg vil påpeke nøyaktig hva du trenger å lære teori-messig, slik at du kan gå rett fram og øve. Teori er bare et verktøy for å hjelpe deg med å skrive bedre kode på dette stadiet, så ikke bli slått ned av det for tungt.Fun Fact: i mitt 2. semester av ingeniørfag hadde vi et emne som heter Dbms (Database Management Systems). Jeg var overrasket over å finne folk som ville tegne de beste er-diagrammene for deres databasedesign, men når det gjaldt å faktisk designe en database for praktiske applikasjoner, ville de mislykkes elendig. De var så fokusert på å få detaljene i diagrammet riktig, de ville glemme selve grunnen til at de gjorde det i utgangspunktet. Jeg klandrer dem ikke, fordi de aldri ble lært at diagrammet er der for dem å bygge bedre databaser, ikke forbedre sine skisseferdigheter.
Diskret Matematikk
du har allerede brukt diskret matematikk uvitende. Diskret matematikk er en kombinasjon av områder i anvendt matematikk som gjentatte ganger ble brukt i datavitenskap. Ekspertene på feltet bestemte seg for å klubbere alt sammen og sette et navn på det — som vi nå kaller diskret matematikk.
når du lærer diskret matematikk, følg det samme prinsippet jeg skisserte i del i. tenk når det gjelder matematiske strukturer og prosedyrene som brukes til å manipulere dem. Diskret matematikk øker bare antall verktøy til din disposisjon for å takle problemer. Hvis du har overvunnet din frykt for matematikk, vil du grundig nyte kurset jeg har koblet i resources-delen.
Datastrukturer og Algoritmer
dette er ryggraden i hele reisen din. Faktisk har du allerede brukt datastrukturer og algoritmer hele tiden-igjen uvitende. Nå formaliserer vi det og studerer dette mer detaljert.
som en erfaren programmerer vil du bruke datastrukturer og algoritmer overalt. Å forstå det godt nok vil utvide dine matematiske ferdigheter og verktøy for å bygge effektive beregningsstrukturer for å takle vanlige problemer. Du vil også lære forskjellige algoritme design teknikker, som er som tegninger for å løse noen temaer i informatikk.
Mange tutorials vil fortelle deg å begynne å lære algoritmer og datastrukturer rett opp. Grunnen til at jeg ikke gjorde dette er fordi du ville komme inn I Einstellung, som har en fast mentalitet og tilnærming til problemer. Stol på meg, som krøplinger din tenkning fordi du ikke tenker utenfor boksen. Ved slutten av dette vil du være en stor problemløser og koder.
Beste Praksis
Skrive programvare handler ikke bare om måfå å sette sammen kode for å få ting gjort. I de fleste profesjonelle miljøer vil du ikke være den eneste programmereren som jobber med en kodebase. Det er viktig for deg å følge visse retningslinjer og konvensjoner for å gjøre programmering kodebasen enklere for alle på laget. Dette gjør det lettere å forstå kode skrevet av noen andre, og gjør det lettere for andre å forstå koden din. Hvis du er en junior programvareutvikler, fokus på denne delen.
Hva kan du gjøre? Tilbring tid på å forstå Og sette DET TØRRE (Ikke Gjenta Deg Selv) Prinsippet i praksis. Ikke skriv repeterende kode, da dette bremser deg og gjør deg mer utsatt for feil. Skriv nyttige kommentarer og dokumentasjon der du kan. Da jeg startet, trodde jeg dette var en dum ting å gjøre til, en dag åpnet jeg et gammelt prosjekt og innså at all koden min var uforståelig. Som programmerer trenger du ikke å huske mye. Du husker hva som er viktig og ser opp hva som trengs.
Version Control (Git)
Dette er noe jeg begynte å gjøre tidlig, og det hjelper enormt med å holde koden organisert. Du sporer endringene dine og vet nøyaktig hvilke endringer du trenger for å implementere visse funksjoner. Du lærer også hvordan du kan forhindre og fikse feil raskt. Jeg ser mange unge ingeniører som ikke engang vet Hva Git er, og det er ekstremt trist. De vil bruke hele sin karriere ved hjelp av versjonskontroll — hvis du er en av dem, gå rett til ressursene nedenfor.
Objektorientert Programmering
en introduksjon til en helt ny måte å programmere på. Så langt har vi gjort prosedyreprogrammering. Nå skifter vi til objektorientert programmering, som er et nytt paradigme helt. En introduksjon til data innkapsling og abstraksjon vil ytterligere hjelpe deg å sette pris på måten denne guiden er utformet. I OOP er alt Et Objekt, og ideen er å tydelig skille grensesnittet og implementeringen. Du vil også lære Klasser og Arv. Til slutt begynner du å designe Objektorienterte løsninger og lære å bygge smarte svarte bokser for å løse problemer. Å Lære Java er en god måte å komme i gang med dette nye programmeringsparadigmet. Python støtter OOP også, så prøv å utforske det!
Øv Hardt
Øv hver ferdighet / konsept / algoritme i denne delen ved å skrive kodebiter. Skriv om gammel kode med den nye kunnskapen du har tilegnet deg. Fortsett å skrive små programmer og lær noe nytt fra det på alle stadier.
Fortsett å lære mens du går videre. Jeg har bygget kalkulatorer, biblioteksstyringssystemer, numeriske beregningsskript på så mange forskjellige måter, og hver eneste gang lærte jeg noe annerledes. Du vil til slutt komme til å innse at det ikke er noen gylden kule for å fikse alt. Livet er fullt av avveininger. Det er skjønnheten i ufullkommenhet.
Sammendrag
du vet mer enn nok til å bygge spillskiftende programvare. Du må internalisere alt opp til her for å gå til neste trinn. Herfra vil mer teori ikke gjøre deg noe bra. Du bør bare investere tid i å praktisere og bygge nyttige prosjekter. Programmering er en anvendt vitenskap — følg 80/20-regelen, som betyr å bruke 80% av tiden på å øve og 20% av tiden på å lese teori.
Del IV: Det Er På Tide for Deg å Bygge Noen Kule Ting
Hvis du har fulgt veiledningen til her til T, er du godt rustet til å gå videre og bygge noen gode prosjekter som du kan sette PÅ DIN CV, vise frem til vennene dine, eller til og med generere inntekter fra arbeidet ditt. I dette stadiet vil jeg lære deg hvordan du lærer ting underveis. Hvert nytt prosjekt du tar opp eller er tildelt vil kreve å lære noe nytt. Det er viktig at du nærmer deg dette med riktig holdning.
det er noen retningslinjer du kan følge når du tar opp et prosjekt. Jeg utviklet denne rubrikken for meg selv og innså at det ville være nyttig for dere å ta opp nye prosjekter.
- Identifiser problemet du jobber med og vær veldig spesifikk om detaljene. Vær tydelig på dine mål og mål.
- Slå opp eksisterende eller lignende prosjekter og identifiser hvor de utmerker seg og hvor de mangler. Se hvor ideen din passer inn, hvordan prosjektet samsvarer med målene og målene du har i tankene, og noter alt.
- Lag en liste over alle ferdighetene du trenger for å lære å gjøre prosjektet og i hvilken grad du trenger å utvikle ferdighetene for å få prosjektet gjort. Kjenn dine styrker og svakheter.
- Lag en plan for å lære de nødvendige ferdighetene. Identifiser de riktige personene for å hjelpe deg og nødvendig opplæring for å komme i gang. Fokuser utelukkende på å utvikle ferdighetene for å få prosjektet ditt gjort. Det er lett å bli båret bort i å gå i dybden. Husk at du lærer ferdighetene til å fullføre prosjektet og ikke skrive En Ph. D. avhandling på den. Med mindre det er målet ditt.
- Kom i gang med prosjektet, oppdater dine mål og mål, og vær veldig klar over dine sterke og svake sider. Bryt prosjektet ned i gjennomførbare deloppgaver og tilordne en objektivitetsmåling for hver. Dette betyr at du trenger å vite når du skal slutte å jage perfeksjon og fokusere på det store bildet.
- Utfør utålmodig. Gjenta til alle dine mål er oppfylt.
Les dette for tips og triks om hvordan du kan bli en bedre elev.Gitt din eksisterende kunnskap, kan du lære å bygge nettsteder, mobile applikasjoner, spill, små skript, Chrome-plugins, skrivebordsprogrammer og dataanalyseprogramvare. Jeg vil gi mer informasjon om dette i neste innlegg. Når du har noen fullførte prosjekter under beltet ditt, vil du være en god nok utvikler til freelance og tjene penger på siden, noe som er en god inntektskilde hvis du er student. Hvis du er fra et annet felt, gir dette deg en solid nok base for å kunne øke ditt nåværende arbeid med teknologi. Det du kan med ditt nåværende sett med ferdigheter er uendelig, selv et helt blogginnlegg kan ikke gjøre rettferdighet til det.