En omfattende Guide til at blive en selvlært programmør

Del II: tænk, Planlæg og udfør som en programmør

nu hvor du ved, hvordan du løser problemer, begrunder løsningen og kommunikerer dine ideer flydende, er det tid for dig at sætte disse færdigheder i at øve, som en programmør gør.

Donald Knuth: hænderne ned, en af de største computerforskere, feltet nogensinde har set.

i denne del er der tre ting, du skal lære. For det første vil du lære C++ som et andet sprog, som er tættere på maskinniveau beskrivelser i forhold til Python. Python er tættere på spektret af almindeligt engelsk, mens C++ er tættere på slutningen af spektret af 0s og 1s. at lære C++ vil gøre dig bekendt med flere programmeringskonstruktioner som pointers. For det andet vil du forbedre din kodningshastighed ved at øve intensivt, læse dokumentation og yderligere finjustere dine debugging færdigheder. Endelig vil du lære rekursion, som er de magiske programmører og computerforskere bruger til at udnytte beregningskraften.

Lær C++ og begynd at skrive enkle programmer

Du har allerede lært Python i den foregående del. Python er et programmørvenligt sprog, da det skjuler en masse detaljer på lavt niveau fra programmøren for at lette brugen. Men hvis du vil udvikle dig, er det absolut nødvendigt at lære de grundlæggende elementer i programmering i C++.

Hvad skal man fokusere på: Skrivning af kode i C++ får dig til at føle dig mere programmørlignende, fordi du går mere mod beskrivelser på maskinniveau. Lær forskellen mellem syntaks og semantik. Brug tid på at lære statisk og dynamisk typing, hukommelsesstyring og pointers. Lær at implementere conditionals, loops, Funktioner, datatyper og ting, du lærte i Python igen i C++. Hvis alt dette virker som græsk og Latin, skal du ikke bekymre dig. Afsnittet Ressourcer Vil gøre alt klart for dig.

håndtering af fejl: når du får en fejl, skal du ikke blive modløs. Selv de mest erfarne programmører har fejl og fejl i deres programmer. Alt hvad du skal gøre er at læse fejlen, foretage en hurtig Google-søgning og løse problemet i din kode. Mens du gør dette, skal du forstå, hvor du begik en fejl, rette din forståelse og fortsætte. Nogle gange skal du muligvis læse lidt dokumentation. Tjek det næste afsnit.

læsning af dokumentation skal være anden karakter for dig

ligesom at lave en Google-søgning, afgøres en programmørs dygtighed af, hvor godt han kan forstå dokumentation og skrive nyttige programmer. Når du lærer at læse dokumentation, lærer du også at kommentere din kode, skrive læsbar kode og skrive dokumentation for den kode, du skriver.

hvorfor skal du lære dette? Mange mennesker kæmper med at lære nye teknologier og ser efter færdige kurser at lære af. Selvom dette er fint i de indledende faser, når din viden uddybes, finder du ikke færdige tutorials, du kan fodre dig selv med. Du bliver nødt til at læse gennem dokumentation og hente det, du har brug for. Igen, lære at filtrere oplysninger og tage præcis, hvad du har brug for at få arbejdet gjort.

Øv dig. Gentage. Praktisere.

nu skal du bare fortsætte med at øve. Gå over til Hackerrank og løse alle de nemme problemer i afsnittet opvarmning og implementering der. Hvis der er et problem, du ikke kan løse, skal du læse diskussionerne, læse redaktionen og se, hvordan du selv kan løse det. Hvis der er noget, du ikke forstår, skal du bruge Google.

Hvis du har foretaget aflæsningerne i den foregående del, skal du ikke have et problem her. Hvis du kæmper, vil jeg foreslå, at du går tilbage og besøger disse sektioner igen. Du skal blive god til at skrive kode, så spring ikke over denne del. Ideen er at være flydende i at udtrykke dine plain-engelske løsninger i deres programmeringsækvivalenter. Når du ikke er kørt ned af sprogspecifikationer, kan du fortsætte. Tag alle de programmer, du skrev i Python og kode dem op i C++.

Du kan komme på tværs af hype omkring konkurrencedygtig programmering, jeg vil anbefale dig at holde dig væk fra det på dette stadium, fordi det vil gøre mere skade end godt. Når du er færdig med del III, kan du eksperimentere med det, og hvis det gøres rigtigt, kan det forbedre dine problemløsningskompetencer enormt.

forstå rekursion godt

dette vil hjælpe dig med at forstå rekursion bedre. Haha.

hjertet af en computerforsker ligger i evnen til at forstå rekursion. At recurse betyder at udtrykke noget i form af sig selv. Alt hvad du kan gøre ved hjælp af sløjfer kan gøres rekursivt og på meget elegante måder. Prøv at forstå dette intuitivt og se de videoer, jeg har leveret i ressourcerne. Hvis du er en udvikler, der ikke forstår rekursion godt nok, vil jeg anbefale at gøre det med det samme.

Resume

indtil videre Kender du et sprog på lavt niveau og højt niveau og kan i tilstrækkelig grad sætte pris på forskellene i den “kontrol”, du har over dine programmer. Nu skal du være i stand til at skrive enkle programmer ved hjælp af Python og C++ og værdsætte forskellen mellem begge sprog.

herfra går mange mennesker ind i sporet for at lære flere sprog, hvilket kun er en ubrugelig øvelse i sig selv. Et af de mest almindelige spørgsmål, jeg får stillet af begyndere, er “hvor mange sprog kender du?”, hvilket får mig til at indse, hvor vildledte begyndere generelt er, da de relaterer programmeringsevne til at kende flere sprog. Programmering handler ikke om at kende mange sprog. Det sprog, du bruger, er bare en måde for dig at udtrykke og løse dit problem effektivt. På dette tidspunkt er du en” programmør”, men det er ikke nok. Du skal nu lære datalogi at tage din skillset til det næste niveau.

del III: Din prøve med datalogi

en solid forståelse af ressourcerne i denne fase vil gøre dig bedre end de fleste programmører i din peer-gruppe. Du kan endda blive bedre end de fleste 2./3. års ingeniørstuderende i Indien. Dine fremskridt herfra afhænger af din tørst efter materialet i dette afsnit. Så fokus.

for at tilføje noget af min filosofiske berøring, dykke ind i Computer videnskab er som at åbne Pandoras æske.

de fleste af emnerne i dette afsnit er dækket i 2.år af en undergrad Computer Engineering kursus. Jeg har henvendt mig til dem lidt anderledes, så de bedst passer til målene i denne vejledning.

hvordan adskiller dette sig fra en almindelig bacheloruddannelse? Regelmæssige bacheloruddannelser er stærkt belastet med teori. De kurser, jeg har foreslået i afsnittet Ressourcer har en god blanding af teori og praksis. Selvom dette kan være en god ting for håbefulde ingeniører, for lægmanden derude, er det ikke særlig nyttigt. Du mister styr på, hvor teori slutter, og praksis starter. Jeg vil påpege præcis, hvad du har brug for at lære teoretisk, så du kan gå lige frem og øve. Teori er bare et værktøj til at hjælpe dig med at skrive bedre kode på dette stadium, så lad dig ikke komme ned af det for tungt.

Fun Fact: i mit 2. semester af engineering havde vi et emne kaldet DBMS (Database Management Systems). Jeg var overrasket over at finde folk, der ville tegne de bedste er-diagrammer til deres databasedesign, men når det kom til faktisk at designe en database til praktiske anvendelser, ville de mislykkes elendigt. De var så fokuserede på at få detaljerne i diagrammet rigtigt, de ville glemme selve grunden til, at de gjorde det i første omgang. Jeg bebrejder dem ikke, fordi de aldrig blev lært, at diagrammet er der for dem at opbygge bedre databaser, ikke forbedre deres skitsefærdigheder.

Diskret matematik

du har allerede brugt Diskret matematik ubevidst. Diskret matematik er en kombination af områder i Anvendt matematik, der gentagne gange blev brugt i datalogi. Eksperterne på området besluttede at koble det hele sammen og sætte et navn på det — som vi nu kalder Diskret matematik.

må ikke bekymre dig piger, hun skrev det første program

Når du lærer diskret matematik, skal du følge det samme princip, som jeg skitserede i del I. tænk med hensyn til matematiske strukturer og de procedurer, der bruges til at manipulere dem. Diskret matematik øger simpelthen antallet af værktøjer til din rådighed til at tackle problemer. Hvis du har overvundet din frygt for matematik, vil du grundigt nyde det kursus, jeg har linket i afsnittet Ressourcer.

datastrukturer og algoritmer

Dette er rygraden i hele din rejse. Faktisk har du allerede brugt datastrukturer og algoritmer hele tiden — igen ubevidst. Nu formaliserer vi det og studerer dette mere detaljeret.

Linus uden hvilken Android ikke ville have været, hvad det er i dag

som en erfaren programmør bruger du datastrukturer og algoritmer overalt. At forstå det godt nok vil udvide dine matematiske færdigheder og værktøjer til at opbygge effektive beregningsstrukturer til at tackle almindelige problemer. Du vil også lære forskellige algoritme design teknikker, som er ligesom tegninger til at løse nogle temaer i datalogi.

mange tutorials vil fortælle dig at begynde at lære algoritmer og datastrukturer lige op. Grunden til, at jeg ikke gjorde dette, er fordi du ville komme ind i Einstellung, som har en fast mentalitet og tilgang til problemer. Tro mig, det lammer din tænkning, fordi du ikke tænker uden for boksen. I slutningen af dette vil du være en stor problemløser og koder.

bedste praksis

skriveprogram handler ikke kun om tilfældigt at sammensætte kode for at få tingene gjort. I de fleste professionelle miljøer vil du ikke være den eneste programmør, der arbejder på en kodebase. Det er vigtigt for dig at følge visse retningslinjer og konventioner for at gøre programmering af kodebasen lettere for alle på holdet. Dette gør det lettere at forstå kode skrevet af en anden og efterfølgende gør det lettere for andre at forstå din kode. Hvis du er en junior udvikler, skal du fokusere på dette afsnit.

Hvad kan du gøre? Brug tid på at forstå og sætte det tørre (gentag ikke dig selv) princip i praksis. Skriv ikke gentagen kode, da dette bremser dig og gør dig mere tilbøjelig til fejl. Skriv nyttige kommentarer og dokumentation, hvor du kan. Da jeg startede, jeg troede, det var en dum ting at gøre indtil, en dag, jeg åbnede et gammelt projekt og indså, at al min kode var uforståelig. Som programmør behøver du ikke at huske meget. Du husker, hvad der er vigtigt, og ser op, hvad der er nødvendigt.

Version Control (Git)

dette er noget, jeg begyndte at gøre tidligt, og det hjælper enormt med at holde kode organiseret. Du sporer dine ændringer og ved nøjagtigt, hvilke ændringer du har brug for for at implementere visse funktioner. Du lærer også, hvordan du hurtigt kan forhindre og rette fejl. Jeg ser mange unge ingeniører, der ikke engang ved, hvad Git er, og det er ekstremt trist. De bruger hele deres karriere ved hjælp af versionskontrol — hvis du er en af dem, gå direkte til ressourcerne nedenfor.

objektorienteret programmering

en introduktion til en helt ny måde at programmere på. Indtil videre har vi lavet proceduremæssig programmering. Nu skifter vi til objektorienteret programmering, som er et nyt paradigme helt. En introduktion til dataindkapsling og abstraktion vil yderligere hjælpe dig med at forstå den måde, denne vejledning er designet på. I OOP er alt et objekt, og ideen er at adskille din grænseflade og implementering tydeligt. Du vil også lære klasser og arv. I sidste ende begynder du at designe objektorienterede løsninger og lære at bygge smarte sorte kasser for at løse problemer. At lære Java er en god måde at komme i gang med dette nye programmeringsparadigme. Python understøtter også OOP, så prøv at udforske det!

Øv hårdt

Øv hver færdighed/koncept / algoritme i dette afsnit ved at skrive kodestykker. Omskriv gammel kode med den nye viden, du har erhvervet. Fortsæt med at skrive små programmer og lær noget nyt af det på hvert trin.

Bruce Lee: det supermenneskelige menneske. R. I.P legend

Bliv ved med at lære, når du skrider frem. Jeg har bygget regnemaskiner, biblioteksstyringssystemer, numeriske beregningsskripter på så mange forskellige måder, og hver eneste gang lærte jeg noget andet. Du vil til sidst indse, at der ikke er nogen gylden kugle til at ordne alt. Livet er fuld af afvejninger. Det er skønheden i ufuldkommenhed.

Resume

Du ved mere end nok til at bygge spilskiftende programmer. Du skal internalisere alt indtil her for at gå til næste trin. Herfra vil mere teori ikke gøre dig noget godt. Du bør udelukkende investere tid i at øve og opbygge nyttige projekter. Programmering er en anvendt videnskab-følg 80/20-reglen, hvilket betyder at bruge 80% af tiden på at øve og 20% af tidslæsningsteorien.

Del IV: Det er tid for dig at bygge nogle seje ting

Hvis du har fulgt guiden indtil her til T, er du godt rustet til at gå videre og bygge nogle gode projekter, som du kan lægge på dit CV, vise til dine venner eller endda generere indtægter fra dit arbejde. I denne fase, jeg vil lære dig, hvordan du lærer ting undervejs. Hvert nyt projekt, du tager op eller er tildelt, vil kræve at lære noget nyt. Det er vigtigt, at du nærmer dig dette med den rigtige holdning.

jeg har altid været i stand til at gøre dette>for hans udødelige holdning til at ophæve fiasko

der er nogle retningslinjer, du kan følge, når du tager et projekt op. Jeg udviklede denne rubrik for mig selv og indså, at det ville være praktisk for jer, der tager nye projekter op.

  1. Identificer det problem, du arbejder på, og vær meget specifik om detaljerne. Vær klar over dine mål og mål.
  2. slå eksisterende eller lignende projekter op og identificer, hvor de udmærker sig, og hvor de mangler. Se, hvor din ide passer ind, hvordan projektet stemmer overens med de mål og mål, du har i tankerne, og noter alt.
  3. lav en liste over alle de færdigheder, du har brug for for at lære at udføre projektet, og i hvilket omfang du har brug for at udvikle færdigheden for at få projektet udført. Kend dine styrker og svagheder.
  4. Opret en plan for at lære de nødvendige færdigheder. Identificer de rigtige mennesker til at hjælpe dig og nødvendige tutorials til at komme i gang. Fokuser udelukkende på at udvikle evnen til at få dit projekt gjort. Det er let at blive båret væk til at gå i dybden. Husk, at du lærer evnen til at gennemføre projektet og ikke skrive en ph.d. – afhandling om det. Medmindre det er dit mål.
  5. kom i gang med projektet, Opdater dine mål og mål, og vær meget klar over dine styrker og svagheder. Opdel projektet i gennemførlige underopgaver, og tildel en objektivitetsmetrik for hver. Det betyder, at du skal vide, hvornår du skal stoppe med at jage perfektion og fokusere på det store billede.
  6. Udfør utålmodigt. Gentag indtil alle dine mål er opfyldt.

Læs dette for tips og tricks om, hvordan man bliver en bedre elev.

i betragtning af din eksisterende viden kan du lære at opbygge hjemmesider, mobile applikationer, spil, små scripts, Chrome-plugins, desktop-apps og dataanalyseprogrammer. Jeg vil give mere information om dette i næste indlæg. Når du har nogle afsluttede projekter under dit bælte, vil du være en god nok udvikler til freelance og tjene penge på siden, hvilket er en stor indtægtskilde, hvis du er studerende. Hvis du er fra et andet felt, giver dette dig en solid nok base til at kunne udvide dit nuværende arbejde med teknologi. Hvad du kan med dit nuværende sæt færdigheder er uendeligt, selv et helt blogindlæg kan ikke gøre det retfærdigt.



Skriv et svar

Din e-mailadresse vil ikke blive publiceret.