a Comprehensive Guide to Becoming a Self-teached Programmer
Part II: Think, Plan and Execute Like a Programmer
Now when you know how to solve problems, reason about the solution, and communicate your ideas fluently, it ’ s time to you to put these skills into to practice, like a programmer does.
tässä osassa pitää opetella kolme asiaa. Ensinnäkin, opit C++ toisena kielenä, joka on lähempänä konetason kuvaukset verrattuna Python. Python on lähempänä selkokielen spektriä, kun taas C++ on lähempänä 0s: n ja 1S: n spektrin loppua. C++: n oppiminen tutustuttaa useampiin ohjelmointirakenteisiin, kuten osoittimiin. Toiseksi parannat koodausnopeuttasi harjoittelemalla intensiivisesti, lukemalla asiakirjoja ja edelleen hienosäätämällä virheenkorjaustaitojasi. Lopuksi opitaan rekursio, jota ohjelmoijat ja tietojenkäsittelytieteilijät käyttävät laskennan voiman valjastamiseen.
Opi C++ ja aloita yksinkertaisten ohjelmien kirjoittaminen
olet oppinut Pythonin jo edellisessä osassa. Python on ohjelmoijaystävällinen kieli, sillä se kätkee ohjelmoijalta paljon matalan tason yksityiskohtia helppokäyttöisyyden vuoksi. Jos kuitenkin haluat edetä, on ehdottoman välttämätöntä oppia C++ – ohjelmoinnin perusteet.
mihin keskittyä: Koodin kirjoittaminen C++: lla saa sinut tuntemaan itsesi enemmän ohjelmoijamaiseksi, koska olet menossa enemmän kohti konetason kuvauksia. Opi ero syntaksin ja semantiikan välillä. Vietä aikaa staattisen ja dynaamisen kirjoittamisen, muistinhallinnan ja osoittimien oppimiseen. Opi toteuttamaan ehdollisuuksia, silmukoita, toimintoja, tietotyyppejä ja juttuja, jotka olet oppinut Pythonissa uudestaan C++: ssa. Jos tämä tuntuu Kreikalta ja latinalta, älä huoli. Resurssit-osio tekee kaiken selväksi sinulle.
käsittelyvirheet: aina kun saat virheen, älä lannistu. Jopa kokeneimmilla ohjelmoijilla on ohjelmissaan virheitä ja vikoja. Sinun tarvitsee vain lukea virhe, tehdä nopea Google-haku, ja korjata ongelman koodin. Samalla kun teet tämän, ymmärrä, missä teit virheen, korjaa ymmärryksesi ja jatka. Joskus voi joutua lukemaan vähän dokumentaatiota. Tarkista seuraava osio.
dokumentaation lukemisen pitäisi olla sinulle toinen luonne
aivan kuten Google-haun tekeminen, ohjelmoijan taito määräytyy sen mukaan, kuinka hyvin hän ymmärtää dokumentaatiota ja kirjoittaa hyödyllisiä ohjelmia. Kun opit lukemaan dokumentaatiota, opit myös kommentoimaan koodiasi, kirjoittamaan luettavaa koodia ja kirjoittamaan dokumentaatiota kirjoittamallesi koodille.
miksi sinun pitäisi oppia tämä? Monet ihmiset kamppailevat uuden teknologian oppimisen kanssa ja etsivät valmiita kursseja, joista oppia. Vaikka tämä on hyvä alkuvaiheessa, koska tietosi syvenee, et löydä valmiita opetusohjelmia lusikoida ruokkia itseäsi. Sinun täytyy lukea läpi asiakirjoja ja poimia mitä tarvitset. Opettele jälleen suodattamaan tietoja ja ottamaan juuri se, mitä tarvitset saadaksesi työsi tehdyksi.
harjoittele. Toista. Harjoittaa.
nyt pitää vain jatkaa harjoittelua. Pään yli Hackerrank ja ratkaista kaikki helpot ongelmat lämmittely ja toteutus osiossa siellä. Jos on ongelma, jota et voi ratkaista, Lue keskustelut, Lue Pääkirjoitus ja katso, miten voit ratkaista sen itse. Jos on jotain, mitä et ymmärrä, käytä Googlea.
Jos olet tehnyt edellisen osan lukemat, ei tässä pitäisi olla ongelmaa. Jos sinulla on vaikeaa, suosittelen, että palaat niihin osiin. Sinun täytyy tulla hyväksi koodin kirjoittamisessa, joten älä ohita tätä osaa. Ideana on ilmaista sujuvasti selkokielisiä ratkaisujasi niiden ohjelmointivastineisiin. Kun et ole juuttunut kielen yksityiskohtiin, voit jatkaa. Ota kaikki Pythonilla kirjoittamasi ohjelmat ja koodaa ne C++: lla.
Saatat törmätä hype ympärillä kilpailukykyinen ohjelmointi, suosittelisin sinua pysymään kaukana siitä tässä vaiheessa, koska se tekee enemmän haittaa kuin hyötyä. Kun olet valmis osa III, voit kokeilla sitä ja, jos tehdään oikein, se voi parantaa ongelmanratkaisutaitoja valtavasti.
ymmärrä rekursio hyvin
tietojenkäsittelytieteilijän sydän on kyvyssä ymmärtää rekursio. Rekursio tarkoittaa jonkin ilmaisemista itsensä kannalta. Kaikki, mitä silmukoilla voi tehdä, voidaan tehdä rekursiivisesti ja hyvin elegantisti. Yritä ymmärtää tämä intuitiivisesti ja katsella videoita olen antanut resursseja. Jos olet ohjelmistokehittäjä, joka ei ymmärrä rekursiota tarpeeksi hyvin, suosittelen tekemään sen heti.
Yhteenveto
toistaiseksi osaat matalan ja korkean tason kieltä ja osaat riittävästi arvostaa eroja ohjelmiesi ”kontrollissa”. Tähän mennessä, sinun pitäisi pystyä kirjoittamaan yksinkertaisia ohjelmia Python ja C++ ja arvostaa eroa molempien kielten.
täältä moni lähtee opettelemaan lisää kieliä, mikä on itsessään pelkkää turhaa harjoitusta. Yksi yleisimmistä kysymyksistä saan kysyä aloittelijoille on ” kuinka monta kieltä osaat?”, joka tuo minut ymmärtämään, miten harhaan aloittelijat yleensä ovat, koska he liittyvät ohjelmointi kyvykkyyttä osata enemmän kieliä. Ohjelmointi ei ole sitä, että osataan paljon kieliä. Käyttämäsi kieli on vain tapa ilmaista ja ratkaista ongelmasi tehokkaasti. Tässä vaiheessa olet ”ohjelmoija”, mutta se ei riitä. Nyt sinun täytyy oppia tietojenkäsittelytiedettä ottaa taitosi seuraavalle tasolle.
osa III: Tutustumisesi tietojenkäsittelytieteeseen
vankka ymmärrys resursseista tässä vaiheessa tekee sinusta paremman kuin useimmat vertaisryhmäsi ohjelmoijat. Saatat jopa tulla parempi kuin useimmat 2. / 3. vuoden insinööriopiskelijat Intiassa. Etenemisesi täältä riippuu siitä, janoatko tämän osion materiaalia. Keskity.
suurin osa tämän osion aiheista käydään läpi alemman korkeakoulututkinnon tietokonetekniikan kurssin 2.vuonna. Olen lähestynyt heitä hieman eri tavalla, jotta ne sopisivat parhaiten tämän oppaan tavoitteisiin.
miten tämä eroaa tavallisesta perustutkinnon opetussuunnitelmasta? Säännöllinen perustutkinto opetussuunnitelmat ovat raskaasti täynnä teoriaa. Resurssit-osiossa ehdottamillani kursseilla on hyvä sekoitus teoriaa ja käytäntöä. Vaikka tämä voi olla hyvä asia aloitteleville insinööreille, maallikolle siellä, se ei ole kovin hyödyllinen. Unohdetaan, missä teoria loppuu ja harjoittelu alkaa. Huomautan tarkalleen, mitä tarvitset oppiaksesi teoriaa, jotta voit mennä suoraan eteenpäin ja harjoitella. Teoria on vain työkalu, jonka avulla voit kirjoittaa parempaa koodia tässä vaiheessa, joten älä juutu siihen liian voimakkaasti.
hauska fakta: 2.lukukaudellani meillä oli aihe nimeltä DBMS (Database Management Systems). Olin yllättynyt löytää ihmisiä, jotka draw paras ER kaaviot niiden tietokanta malleja, mutta kun se tuli todella suunnitella tietokannan käytännön sovelluksia, he epäonnistuvat surkeasti. He olivat niin keskittyneitä kaavion yksityiskohtiin, – että he unohtivat syyn siihen. En syytä heitä, koska heille ei koskaan opetettu, että kaavion avulla he voivat rakentaa parempia tietokantoja, eivät parantaa luonnostelutaitojaan.
Diskreetti matematiikka
olet jo tietämättäsi käyttänyt diskreettiä matematiikkaa. Diskreetti matematiikka on yhdistelmä sovelletun matematiikan osa-alueita, joita käytettiin toistuvasti tietojenkäsittelytieteessä. Alan asiantuntijat päättivät nuijia kaiken yhteen ja laittaa sille nimen — jota nyt kutsumme diskreetiksi matematiikaksi.
oppiessaan diskreettiä matematiikkaa, noudattakaa samaa periaatetta, jonka hahmotin osassa I. ajatelkaa matemaattisia rakenteita ja niiden manipulointiin käytettyjä menettelyjä. Diskreetti matematiikka yksinkertaisesti lisää käytettävissä olevien työkalujen määrää ongelmien ratkaisemiseksi. Jos olet selättänyt pelkosi matematiikkaa kohtaan, nautit täysin rinnastamastani kurssista resurssit-osiossa.
Tietorakenteet ja algoritmit
Tämä on koko matkasi selkäranka. Itse asiassa, olet jo käyttänyt tietorakenteita ja algoritmeja koko tämän ajan — jälleen tietämättäsi. Nyt virallistamme sen ja tutkimme asiaa tarkemmin.
kokeneena ohjelmoijana käytät tietorakenteita ja algoritmeja kaikkialla. Ymmärtäminen tarpeeksi hyvin laajentaa matemaattisia taitoja ja työkaluja rakentaa tehokkaita laskennallisia rakenteita puuttua yhteisiä ongelmia. Opit myös erilaisia algoritmien suunnittelutekniikoita, jotka ovat kuin piirustuksia joidenkin tietojenkäsittelytieteen teemojen ratkaisemiseen.
monet tutoriaalit kehottavat aloittamaan algoritmien ja tietorakenteiden opettelun suoraan ylöspäin. Syy miksi en tehnyt tätä on, koska pääsisit Einstellung, joka on ottaa kiinteä-mentaliteetti ja lähestymistapa ongelmiin. Usko pois, se lamauttaa ajattelusi, koska et ajattele laatikon ulkopuolella. Tämän jälkeen olet suuri ongelmanratkaisija ja koodari.
parhaat käytännöt
ohjelmiston kirjoittaminen ei ole vain sattumanvaraista koodin kokoamista, jotta asiat saadaan tehtyä. Useimmissa ammatillisissa ympäristöissä et ole ainoa ohjelmoija, joka työskentelee koodikannan parissa. On tärkeää, että noudatat tiettyjä ohjeita ja käytäntöjä, jotta koodipohjan ohjelmointi olisi helpompaa kaikille tiimin jäsenille. Tämä helpottaa jonkun toisen kirjoittaman koodin ymmärtämistä ja helpottaa myöhemmin muiden koodisi ymmärtämistä. Jos olet nuorempi ohjelmistokehittäjä, keskity tähän osioon.
Mitä voit tehdä? Käytä aikaa kuivan (älä toista itseäsi) periaatteen ymmärtämiseen ja toteuttamiseen käytännössä. Älä kirjoita toistuvaa koodia, sillä se hidastaa sinua ja tekee sinusta alttiimman virheille. Kirjoita hyödyllisiä kommentteja ja asiakirjoja aina kun voit. Kun aloitin, pidin tätä typeränä, kunnes eräänä päivänä avasin vanhan projektin ja tajusin, että koodini oli käsittämätön. Ohjelmoijana sinun ei tarvitse muistaa paljoa. Opettelet ulkoa sen, mikä on tärkeää, ja katsot ylös sen, mitä tarvitaan.
versionhallinta (Git)
tätä aloitin jo varhain ja se auttaa valtavasti koodin järjestämisessä. Seuraat muutoksiasi ja tiedät tarkalleen, mitä muutoksia tarvitset tiettyjen ominaisuuksien toteuttamiseksi. Opit myös ehkäisemään ja korjaamaan vikoja nopeasti. Näen paljon nuoria insinöörejä, jotka eivät edes tiedä, mikä Git on, ja se on äärimmäisen surullista. He käyttävät koko uransa versionhallintaan — jos olet yksi heistä, suuntaa suoraan alla oleviin resursseihin.
Olio-ohjelmointi
johdatus täysin uuteen ohjelmointitapaan. Tähän asti olemme tehneet proseduraalista ohjelmointia. Nyt siirrymme olio-orientoituneeseen ohjelmointiin, joka on kokonaan uusi paradigma. Johdatus datan kapselointiin ja abstraktioon auttaa sinua edelleen arvostamaan tapaa, jolla tämä opas on suunniteltu. OOP: ssa kaikki on objektia ja ideana on selkeästi erottaa käyttöliittymä ja toteutus toisistaan. Opit luokat ja perintö liian. Lopulta alat suunnitella Oliokeskeisiä ratkaisuja ja opit rakentamaan nokkelia mustia laatikoita ongelmien ratkaisemiseksi. Oppiminen Java on hyvä tapa päästä alkuun tämän uuden ohjelmointi paradigma. Python tukee myös OOP: ta, joten kokeile tutkia sitä!
harjoittele kovaa
Harjoittele jokaista tämän osion taitoa/konseptia / algoritmia kirjoittamalla koodinpätkiä. Kirjoita vanha koodi uudelleen hankkimallasi uudella tiedolla. Kirjoita jatkuvasti pieniä ohjelmia ja opi siitä jotain uutta joka vaiheessa.
jatka oppimista edistyessäsi. Olen rakentanut laskimia, kirjastonhallintajärjestelmiä, numeerisia laskentakäsikirjoituksia niin monella eri tavalla, ja joka ikinen kerta olen oppinut jotain erilaista. Lopulta tajuat, ettei ole olemassa kultaista luotia, joka korjaisi kaiken. Elämä on täynnä vaihtokauppoja. Se on epätäydellisyyden kauneus.
Yhteenveto
tiedät enemmän kuin tarpeeksi peliä muuttavan ohjelmiston rakentamiseen. Sinun on sisäistettävä kaikki tähän asti, jotta pääset seuraavaan vaiheeseen. Tästä teoriasta ei ole hyötyä. Aikaa kannattaa satsata vain harjoitteluun ja hyödyllisten projektien rakentamiseen. Ohjelmointi on soveltavaa tiedettä-noudata 80/20-sääntöä, joka tarkoittaa 80% ajasta harjoitteluun ja 20% ajasta teorian lukemiseen.
osa IV: on aika rakentaa siistejä juttuja
Jos olet seurannut opasta tänne T: hen asti, olet hyvin varustautunut rakentamaan hienoja projekteja, joita voit laittaa ansioluetteloosi, esitellä ystävillesi tai jopa hankkia tuloja työstäsi. Tässä vaiheessa haluan opettaa sinua oppimaan asioita matkan varrella. Jokainen uusi projekti, johon ryhdyt tai johon sinut on määrätty, vaatii uuden oppimista. On tärkeää, että lähestyt asiaa oikealla asenteella.
on joitakin ohjeita, joita voi noudattaa aina, kun ryhtyy mihin tahansa projektiin. Kehitin tämän otsikon itselleni ja tajusin, että se olisi kätevä teille uusille projekteille.
- tunnista työstämäsi ongelma ja ole hyvin tarkka yksityiskohdista. Ole selkeä tavoitteistasi ja tavoitteistasi.
- etsi olemassa olevat tai vastaavat projektit ja tunnista, missä ne menestyvät ja missä ne puuttuvat. Katso, mihin ideasi sopii, miten projekti vastaa mielessäsi olevia tavoitteita ja tavoitteita, ja pane kaikki merkille.
- Tee lista kaikista taidoista, joita tarvitset oppiaksesi tekemään projektia, sekä siitä, missä määrin taitoa pitää kehittää, jotta saat projektin tehtyä. Tunne vahvuutesi ja heikkoutesi.
- Luo suunnitelma tarvittavien taitojen opettelemiseksi. Tunnista oikeat ihmiset auttamaan sinua ja tarvittavat tutorials päästä alkuun. Keskity yksinomaan kehittämään taitoa saada projekti valmiiksi. On helppo innostua syventymään. Muista, että opettelet taitoa suorittaa projekti loppuun, etkä kirjoita siitä väitöskirjaa. Ellei se ole tavoitteesi.
- Aloita projekti, Päivitä tavoitteesi ja tavoitteesi sekä kerro hyvin selkeästi vahvuutesi ja heikkoutesi. Jaa projekti suoritettaviin osatehtäviin ja määritä kullekin objektiivisuus-metriikka. Tämä tarkoittaa, että sinun täytyy tietää, milloin lopettaa täydellisyyden tavoittelu ja keskittyä kokonaiskuvaan.
- Suorita kärsimättömästi. Toista kunnes kaikki tavoitteesi ovat täyttyneet.
Lue tästä vinkit, miten tulla paremmaksi oppijaksi.
olemassa olevan tietämyksesi perusteella voit oppia rakentamaan verkkosivustoja, mobiilisovelluksia, pelejä, pieniä skriptejä, Chrome-laajennuksia, työpöytäsovelluksia ja tietojen analysointiohjelmistoja. Annan lisätietoja tästä seuraavassa viestissä. Kun sinulla on joitakin valmiita hankkeita vyön alle, olet tarpeeksi hyvä Kehittäjä freelance ja tehdä rahaa puolella, joka on suuri tulonlähde, jos olet opiskelija. Jos olet toiselta alalta, tämä antaa sinulle riittävän vankan pohjan, jotta voit täydentää nykyistä työtäsi teknologialla. Mitä voit nykyisellä joukko taitoja on loputon, jopa kokonainen blogikirjoitus ei voi tehdä oikeutta sille.