Komplexní Průvodce, aby se Stal-samouk Programátor

Část II: Myslet, Plánovat a Provádět Jako Programátor

Nyní, že víte, jak řešit problémy, uvažovat o řešení, a komunikovat své nápady plynule, je čas pro vás dát tyto dovednosti do praxe, jako programátor.

Donald Knuth: Ruce dolů, jeden z největších Počítačových Vědců na poli nikdy neviděl.

v této části se musíte naučit tři věci. Nejprve se naučíte C++ jako druhý jazyk, který je blíže popisům na úrovni stroje ve srovnání s Pythonem. Python je blíže ke spektru jednoduché angličtině, vzhledem k tomu, že C++ je blíže ke konci spektra, 0s a 1s. Learning C++ bude seznámit vás s další programovací konstrukty, jako ukazatele. Za druhé, zlepšíte rychlost kódování intenzivním cvičením, čtením dokumentace a dalším doladěním svých ladicích dovedností. Nakonec se naučíte rekurzi, což jsou magičtí programátoři a počítačoví vědci, kteří využívají výpočetní sílu.

Naučte se C++ a začněte psát jednoduché programy

Python jste se již naučili v předchozí části. Python je programátor-Přátelský jazyk, protože skrývá spoustu detailů na nízké úrovni od programátora pro snadné použití. Pokud však chcete postupovat, je naprosto nezbytné naučit se základy programování v C++.

Na co se zaměřit: Při psaní kódu v C++ se budete cítit více jako programátor, protože jdete více k popisům na úrovni stroje. Naučte se rozdíl mezi syntaxí a sémantikou. Trávit čas učením statického a dynamického psaní, správy paměti a ukazatelů. Naučte se implementovat podmínky, smyčky, funkce, datové typy a věci, které jste se naučili v Pythonu znovu v C++. Pokud to všechno vypadá jako řečtina a Latina, nebojte se. Sekce zdroje vám vše objasní.

manipulace s chybami: kdykoli se objeví chyba, nenechte se odradit. Dokonce i nejzkušenější programátoři mají ve svých programech chyby a chyby. Jediné, co musíte udělat, je přečíst chybu, provést rychlé vyhledávání Google a opravit problém v kódu. Zatímco to děláte, pochopte, kde jste udělali chybu, opravte své porozumění a pokračujte. Někdy budete muset přečíst trochu dokumentace. Podívejte se na další část.

Čtení dokumentace by měla být druhou přirozeností pro tebe

Stejně jako dělá vyhledávání Google, programátor dovednost je rozhodnuto tím, jak dobře umí porozumět dokumentaci a psát užitečné programy. Když se naučíte číst dokumentaci, naučíte se také komentovat svůj kód, psát čitelný kód a psát dokumentaci pro kód, který píšete.

proč byste se to měli naučit? Mnoho lidí bojuje s učením nových technologií a hledá hotové kurzy, ze kterých se mohou učit. Zatímco to je v pořádku, v počátečních fázích, jak své znalosti prohlubuje, nebudete najít ready-made návody ke krmení lžičkou. Budete si muset přečíst dokumentaci a vyzvednout, co potřebujete. Znovu se naučte odfiltrovat informace a vzít přesně to, co potřebujete k dokončení práce.

praxe. Opakovat. Vykonávat.

teď už jen musíte pokračovat v tréninku. Vydejte se na Hackerrank a vyřešte všechny snadné problémy v sekci zahřívání a implementace. Pokud se vyskytne problém, který nemůžete vyřešit, přečtěte si diskuse, přečtěte si úvodník a podívejte se, jak jej můžete vyřešit sami. Pokud je něco, čemu nerozumíte, použijte Google.

Pokud jste provedli čtení v předchozí části, neměli byste zde mít problém. Pokud máte potíže, navrhuji, abyste se vrátili a znovu navštívili tyto sekce. Musíte být dobří v psaní kódu, takže tuto část nevynechávejte. Cílem je plynule vyjádřit vaše prostá anglická řešení do jejich programovacích ekvivalentů. Jakmile vás nezadrží jazyková specifika, můžete pokračovat. Vezměte všechny programy, které jste napsali v Pythonu, a kódujte je v C++.

můžete narazit na humbuk kolem konkurenčního programování, doporučil bych vám, abyste se od něj v této fázi drželi dál, protože to způsobí více škody než užitku. Jakmile dokončíte Část III, můžete s ní experimentovat, a pokud se to udělá správně, může to ohromně zlepšit vaše dovednosti při řešení problémů.

Pochopit rekurzi no

To vám pomůže pochopit, rekurze lepší. Haha.

srdce počítačového vědce spočívá ve schopnosti porozumět rekurzi. Opakování znamená vyjádřit něco z hlediska sebe sama. Vše, co můžete udělat pomocí smyček, lze provést rekurzivně a velmi elegantním způsobem. Pokuste se to pochopit intuitivně a sledujte videa, která jsem poskytl ve zdrojích. Pokud jste vývojář softwaru, který nerozumí rekurzi dostatečně dobře, doporučil bych to udělat hned.

shrnutí

zatím znáte jazyk nízké a vysoké úrovně a dokážete dostatečně ocenit rozdíly v „ovládání“, které máte nad svými programy. Nyní byste měli být schopni psát jednoduché programy pomocí Pythonu a C++ a ocenit rozdíl mezi oběma jazyky.

odtud se mnoho lidí dostává do rutiny učení se více jazyků, což není nic jiného než zbytečné cvičení samo o sobě. Jednou z nejčastějších otázek, které mi začátečníci kladou, je “ kolik jazyků znáte?“, což mě přivádí k tomu, abych si uvědomil, jak zavádějící začátečníci jsou obecně, protože spojují programovací zdatnost se znalostí Více jazyků. Programování není o znalosti mnoha jazyků. Jazyk, který používáte, je jen způsob, jak efektivně vyjádřit a vyřešit váš problém. V této fázi jste „programátor“, ale to nestačí. Nyní se musíte naučit informatiku, abyste své dovednosti posunuli na další úroveň.

Část III: Vaše schůzka s informatikou

solidní pochopení zdrojů v této fázi vás učiní lepším než většina programátorů ve vaší skupině vrstevníků. Můžete se dokonce stát lepším než většina studentů inženýrství 2. / 3. ročníku v Indii. Váš pokrok odtud závisí na vaší touze po materiálu v této sekci. Tak se soustřeď.

přidat některé z mých filozofické dotek, ponořit se do Počítače Věda je jako otevřít Pandořinu skříňku.

Většina témat v této sekci jsou zahrnuty ve 2. ročníku student Počítačového Inženýrství kurzu. Přistoupil jsem k nim trochu jinak, abych co nejlépe vyhovoval cílům této příručky.

Jak se to liší od běžného vysokoškolského kurikula? Pravidelné vysokoškolské osnovy jsou silně zatíženy teorií. Kurzy, které jsem navrhl v sekci Zdroje, mají dobrou kombinaci teorie a praxe. I když to může být dobrá věc pro začínající inženýry, pro laika tam venku, není to příliš užitečné. Ztratíte přehled o tom, kde končí teorie a začíná praxe. Poukážu přesně na to, co se musíte naučit teoreticky, abyste mohli jít rovně a cvičit. Teorie je jen nástroj, který vám pomůže psát lepší kód v této fázi, takže se nemusíte dostat zapadl tím příliš silně.

zábavný fakt: v mém 2. semestru inženýrství jsme měli předmět s názvem DBMS (databázové systémy). Byl jsem překvapen, najít lidi, kteří by se čerpat to nejlepší ER diagramy pro jejich databáze vzorů, ale když to přišlo, vlastně návrhu databáze pro praktické aplikace, které by se bídně selhat. Byli tak zaměřeni na správné podrobnosti diagramu, zapomněli na samotný důvod, proč to dělali. Nedivím se jim, protože oni byli nikdy učil, že diagram je tam pro ně vybudovat lepší databáze, zlepšit jejich kreslení dovednosti.

Diskrétní matematika

diskrétní matematiku jste již nevědomky používali. Diskrétní matematika je kombinací oblastí aplikované matematiky, které byly opakovaně používány v informatice. Odborníci v oboru se rozhodli spojit to všechno dohromady a dát mu jméno — které nyní nazýváme diskrétní matematikou.

nebojte se holky, napsala první program,

Když se učí, diskrétní matematiky, podle stejného principu, který jsem nastínil v Části I., Že z hlediska matematické struktury a postupy používané k manipulaci s nimi. Diskrétní matematika jednoduše zvyšuje počet nástrojů, které máte k dispozici pro řešení problémů. Pokud jste překonali svůj strach z matematiky, důkladně si užijete kurz, který jsem propojil v sekci Zdroje.

datové struktury a algoritmy

Toto je páteř celé vaší cesty. Ve skutečnosti jste již celou dobu používali datové struktury a algoritmy — opět nevědomky. Nyní to formalizujeme a podrobněji to prostudujeme.

Linus Torvalds postavil Linux Kernel — něco, bez které Android by nebyl to, co je dnes

Jako zkušený programátor, budete používat datové struktury a algoritmy všude. Porozumění dostatečně dobře rozšíří vaše matematické dovednosti a nástroje pro vytváření efektivních výpočetních struktur pro řešení běžných problémů. Naučíte se také různé techniky návrhu algoritmů, které jsou jako plány pro řešení některých témat v informatice.

mnoho tutoriálů vám řekne, abyste se začali učit algoritmy a datové struktury přímo nahoru. Důvod, proč jsem to neudělal, je ten, že byste se dostali do Einstellungu, který má pevnou mentalitu a přístup k problémům. Věř mi, to ochromuje vaše myšlení, protože nemyslíte mimo krabici. Na konci toho budete velkým řešitelem problémů a kodérem.

Nejlepší postupy

psaní softwaru není jen o náhodném sestavení kódu, aby se věci udělaly. Ve většině profesionálních prostředí nebudete jediným programátorem pracujícím na kódové základně. Je důležité, abyste dodržovali určité pokyny a konvence, abyste usnadnili programování základny kódu všem v týmu. To usnadňuje pochopení kódu napsaného někým jiným a následně usnadňuje ostatním pochopit váš kód. Pokud jste junior vývojář softwaru, zaměřte se na tuto sekci.

Co můžete dělat? Věnujte čas porozumění a uvedení suchého (neopakujte se) principu do praxe. Nepište opakovaný kód, protože vás to zpomaluje a zvyšuje náchylnost k chybám. Napište užitečné komentáře a dokumentaci, kdekoli můžete. Když jsem začal, myslel jsem, že je to hloupá věc, dokud jsem jednoho dne neotevřel starý projekt a uvědomil jsem si, že celý můj kód je nesrozumitelný. Jako programátor si nemusíte moc pamatovat. Zapamatujete si, co je důležité, a vyhledáte, co je potřeba.

Správa verzí (Git)

to je něco, co jsem začal dělat brzy a pomáhá ohromně při udržování kódu organizovaného. Sledujete své změny a přesně víte, jaké změny potřebujete k implementaci určitých funkcí. Naučíte se také, Jak rychle předcházet a opravovat chyby. Vidím spoustu mladých inženýrů, kteří ani nevědí, co je Git, a to je nesmírně smutné. Stráví celou svou kariéru pomocí správy verzí-pokud jste jedním z nich, zamiřte přímo k níže uvedeným zdrojům.

objektově orientované programování

úvod do zcela nového způsobu programování. Zatím jsme dělali procedurální programování. Nyní přejdeme k objektově orientovanému programování, což je úplně nové paradigma. Úvod do zapouzdření a abstrakce dat vám dále pomůže ocenit způsob, jakým byla tato příručka navržena. V OOP je vše objektem a myšlenkou je jasně oddělit vaše rozhraní a implementaci. Naučíte se také třídy a dědictví. Nakonec začnete navrhovat objektově orientovaná řešení a naučíte se vytvářet chytré černé skříňky pro řešení problémů. Učení Java je dobrý způsob, jak začít s tímto novým programovacím paradigmatem. Python také podporuje OOP, zkuste to prozkoumat!

cvičte tvrdě

Procvičte si každou dovednost / koncept / algoritmus v této části psaním úryvků kódu. Přepište starý kód s novými znalostmi, které jste získali. Pokračujte v psaní malých programů a naučte se z nich něco nového v každé fázi.

Bruce Lee: super-lidské lidského. R. I.P legend

pokračujte v učení. Postavil jsem kalkulačky, systémy pro správu knihoven, numerické výpočetní skripty mnoha různými způsoby a pokaždé jsem se naučil něco jiného. Nakonec si uvědomíte, že neexistuje žádná zlatá kulka, která by vše napravila. Život je plný kompromisů. To je krása nedokonalosti.

shrnutí

víte více než dost, abyste vytvořili software pro změnu hry. Musíte vše internalizovat až sem, abyste se dostali k dalšímu kroku. Odtud vám další teorie nepomůže. Měli byste investovat čas pouze do praxe a budování užitečných projektů. Programování je aplikovaná věda-dodržujte pravidlo 80/20, což znamená trávit 80% času cvičením a 20% teorií čtení času.

Část IV: je Čas pro Vás Vytvořit Nějaké Cool Věci

Pokud jste sledovali průvodce až sem k T, jste dobře vybaveny, aby se jít dopředu a vytvořit některé skvělé projekty, které si můžete dát na svůj ŽIVOTOPIS, show-off na své přátele, nebo dokonce generovat příjmy z práce. V této fázi vás chci naučit, jak se učit věci po cestě. Každý nový projekt, který zabírají nebo jsou přiřazeny k bude vyžadovat učení něco nového. Je důležité, abyste k tomu přistupovali správným přístupem.

vždy jsem byl inspirován Mark Zuckerberg za jeho nehynoucí přístup k popírání selhání

Tam jsou některé pokyny, které můžete sledovat, kdykoli budete mít jakýkoliv projekt. Tuto rubriku jsem vyvinul pro sebe a uvědomil jsem si, že by to bylo užitečné pro vás, lidi, kteří přijímají nové projekty.

  1. Identifikujte problém, na kterém pracujete, a buďte velmi konkrétní ohledně podrobností. Ujasněte si své cíle a cíle.
  2. vyhledejte existující nebo podobné projekty a zjistěte, kde vynikají a kde jim chybí. Podívejte se, kam váš nápad zapadá, jak se Projekt přizpůsobuje cílům a cílům, které máte na mysli, a poznamenejte si vše.
  3. Udělejte si seznam všech dovedností, které potřebujete se naučit, jak dělat projekt, a rozsahu, ve kterém budete muset rozvíjet dovednosti, aby se projekt provádí. Poznejte své silné a slabé stránky.
  4. Vytvořte plán, jak se naučit potřebné dovednosti. Identifikujte ty správné lidi, kteří vám pomohou, a potřebné výukové programy, abyste mohli začít. Zaměřte se výhradně na rozvoj dovedností, abyste svůj projekt dokončili. Je snadné se nechat unést do hloubky. Pamatujte, že se učíte dovednosti k dokončení projektu a nepíšete o něm disertační práci. Pokud to není tvůj cíl.
  5. začněte s projektem, aktualizujte své cíle a cíle a buďte velmi jasní o svých silných a slabých stránkách. Rozdělte Projekt na proveditelné dílčí úkoly a každému přiřaďte metriku objektivity. To znamená, že musíte vědět, kdy přestat pronásledovat dokonalost a soustředit se na celkový obraz.
  6. proveďte netrpělivě. Opakujte, dokud nejsou splněny všechny vaše cíle.

Přečtěte si tipy a triky, jak se stát lepším žákem.

vzhledem k vašim existujícím znalostem se můžete naučit vytvářet webové stránky, mobilní aplikace, hry, malé skripty, pluginy Chrome, desktopové aplikace a software pro analýzu dat. Více informací o tom poskytnu v dalším příspěvku. Jakmile budete mít nějaké dokončené projekty pod opaskem, budete dost dobrý vývojář na volné noze a vydělat peníze na straně, což je skvělý zdroj příjmů, pokud jste student. Pokud jste z jiného oboru, to vám dává dostatečně pevnou základnu, abyste mohli rozšířit svou současnou práci s technologií. To, co můžete se svou současnou sadou dovedností, je nekonečné, ani celý blogový příspěvek to nemůže udělat.



Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.